主要内容

的简历遗传算法

默认情况下,遗传算法每次运行时创建一个新的初始填充。但是,如果使用上一次运行的最终填充作为新运行的初始填充,可能会得到更好的结果。为此,您必须通过调用遗传算法与语法

[x, fval exitflag、输出final_pop] = ga (@fitnessfcn,据nvar);

最后一个输出参数是最终填充。运行遗传算法使用final_pop作为初始人口,进入

选择= optimoptions (“遗传算法”“InitialPop”, final_pop);[x, fval exitflag、输出final_pop2] =...ga (@fitnessfcn,据nvar ,[],[],[],[],[],[],[], 选项);

你可以使用final_pop2,即第二轮的最终种群,作为第三轮的初始种群。

例如,最小化两个变量的Ackley函数。

rng (100)%为reproducibiliity[x, fval exitflag、输出final_pop] = ga (@ackleyfcn, 2);
优化终止:适应度值的平均变化小于选项。

检查最佳功能值。

disp (fval)
3.5527

试着通过跑步来获得更好的解决方案遗传算法从最后的人口。

选择= optimoptions (“遗传算法”“InitialPopulationMatrix”, final_pop);[x, fval2 exitflag2, output2 final_pop2] =...ga (@ackleyfcn, 2 ,[],[],[],[],[],[],[], 选项);
优化终止:适应度值的平均变化小于选项。
disp (fval2)
2.9886

适应度函数值明显提高。

再试一次来改进解决方案。

选项。InitialPopulationMatrix = final_pop2;[x, fval3 exitflag3, output3 final_pop3] =...ga (@ackleyfcn, 2 ,[],[],[],[],[],[],[], 选项);
优化终止:适应度值的平均变化小于选项。
disp (fval3)
2.9846

这一次的改善是微不足道的。

相关的话题