MATLAB中的ga算法,如何如何获得每一步计算数值

MATLAB中的ga算法,如何如何获得每一步计算数值,第1张

试试以下方法(忘了在网上哪里找的),先调出来图像,

比如options.PlotFcns={ @gaplotbestf},然后取句柄,

h=findobj(gcf,'Type','Line') %获取当前图窗的handle

x = get(h,'xdata') % 坐标数据cell数据

y = get(h,'ydata')

x,y可能是cell型,想要的数据在x{ }, y{ }里取(比如,打开x,y,查看x,y与你迭代步数相同的维度的两个cell元素就有最佳值和均值等数据)

你试一下把options=gaoptimset(options,'InitialPopulation',X0)

改一下

以为你得到的结果是options,但在调用gaoptimset这个函数的时候又把它当成参数输入了,这样就错了,改成opts=gaoptimset(options,'InitialPopulation',X0)

用遗传算法求最大值问题,可以这样来解决。

1、将最大值问题转换为最小值问题,即   max Z =- min Z;

2、建立其自定义函数,即

z=-(f1*40^1.5/1+f2*30^1.5/2+f2*20^1.5/2+。。。+f12*127^1.5/2+f12*5^1.5/4)

其中:f1,f2,f3,。。。f11,f12为0,1变量,可以用sign()符号函数来处理。

3、用遗传算法ga()函数求解,使用方法

objectivef=@ga_func

nvars=12

[x, fval] =ga(objectivef,nvars)

4、编程运行后得到

f1=1,f2=1,f3=1,f4=0,f5=1,f6=0,f7=1,f8=1,f9=1,f10=1,f11=1,f12=1

Zmax=27329.5018


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8164527.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存