本文是遗传算法的一个简单的应用例子。
实验平台: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
文章转载于:https://www.jianshu.com/p/6984740b5731
原著是一个有趣的人,若有侵权,请通知删除
还没有人抢沙发呢~