美文网首页研程序可不敢轻易说喜欢编程
在Matlab上使用遗传算法求函数最值

在Matlab上使用遗传算法求函数最值

作者: 柴柴总 | 来源:发表于2017-03-17 10:39 被阅读169次

本文是遗传算法的一个简单的应用例子。

实验平台:Matlab R2016

简要来说遗传算法是模拟生物遗传进化来得到最适宜环境的种群。
我们可以利用遗传算法来求得目标函数的最优值

案例:求y = 8xsin(x^2)的在(0,5)区间上的最大值

这个函数大概长这样
x = 0:0.01:5;
y = 8*x.*sin(x.^2);
plot(x,y);

画这个函数图的代码

function y=test1(x)
y = 8*x.*sin(x.^2);
y = -y;%由于ga的适应度函数是求最小值的,所以要求最大值需取相反数

test1.m文件(M函数文件),这个就是我们的目标函数

A=[];
b=[];
Aeq=[];
beq=[];
lb=0;%
ub=5;
[x,fval]=ga(@test1,1,A,b,Aeq,beq,lb,ub);%test1是我们的目标函数,1是要求的变量的个数

再写一个测试脚本,调用遗传算法ga


命令行运行结果

可以看到x的结果是 4.5216,结合最开始画的图,大概估计一下很接近最大值的点

由于遗传算法求的是近似最优解,所以每次计算得到的结果可能会有细微的不同。

更多关于ga的不同用法可以查阅matlab的doc

相关文章

网友评论

    本文标题:在Matlab上使用遗传算法求函数最值

    本文链接:https://www.haomeiwen.com/subject/cwtenttx.html