本文是遗传算法的一个简单的应用例子。
实验平台: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