时间: 2020-08-30|36次围观|0 条评论

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

实验平台:Matlab R2016

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

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

在Matlab上使用遗传算法求函数最值插图
这个函数大概长这样
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

在Matlab上使用遗传算法求函数最值插图1
命令行运行结果

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

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

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

文章转载于:https://www.jianshu.com/p/6984740b5731

原著是一个有趣的人,若有侵权,请通知删除

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《在Matlab上使用遗传算法求函数最值
   

还没有人抢沙发呢~