Matlab 遗传算法工具箱使用问题小结(自用) 您所在的位置:网站首页 MATLAB怎么调出遗传算法工具箱 Matlab 遗传算法工具箱使用问题小结(自用)

Matlab 遗传算法工具箱使用问题小结(自用)

2024-03-14 05:09| 来源: 网络整理| 查看: 265

一.遗传算法画出的图 适应度值或者罚函数值在图中离散分布,没有出现收敛的情况:

自用调整方法:

options = optimoptions( 'ga' , 'PopulationSize',100,'PenaltyFactor',100); 修改ga函数的option值

修改种群大小:'PopulationSize',100(工具箱存在默认值,可在ga函数中查看)

如果有非线性约束等,可以增大约束的惩罚因子,'PenaltyFactor',100(默认为100),或者是在约束项中乘上一个较大的因子,保证约束能够被强保证。

调整交叉率以及变异率,这可视具体情况而定,本人修改的效果不明显。

'CrossoverFraction', 0.8,' 'MigrationFraction', 0.01

二.在迭代图中,程序会在51次迭代时停止,以及跳出以下提示:

自用调整方法:

1.在option中加入画图函数:'PlotFcn' ,{@gaplotbestf,@gaplotstopping},前者上图,后者可以测试程序停止的大致原因,可从图中观察:

Stop criteria:指定约束条件,

(1)Generation和Timelimit指定迭代代数和时间的最大极限

(2)Fitness limit指定小于某一阈值就可以收敛,

(3)stall Generation和stallTimelimit:经过多少代或多久最优值没有出现变化时就收敛。

本人是由于Stall Generation达到设定的默认值而停止,如果想要完成所有迭代次数之后再终止程序,那么可以在option中设置 'StallGenLimit', value value值大于你设置的迭代次数。

三. 在迭代图中出现最优值不变的情况,如下:

自我解释(不保真):

由于本人是离散变量取值,在变量所有的离散值可能的组合数≤所设定的种群数时,本人认为,种群个体的编码已经可以全部遍历,那么也就是能够达到全局最优的一个效果(虽然被师兄以及一些文章告知不一定能够求得全局最优)但是我的试验告诉我 有这么一个可能性是这样,有待验证。(本人在将种群大小修改至小于可能组合数时,最优值是会变化的,一旦大于等于,则是一个值)

四. 想要提取每一次迭代的适应度值:

自用:

可以从画的图中提取对应的值再存入矩阵,从修改m文件的角度,题主是没有实现,由于ga封装在c盘的缘故,有能力的可以试试。大概代码是以下的形式:

lh=findall(gca,'type','line');

yc=get(lh,'ydata');

ycc=cell2mat(yc);

暂时先记录这么多,以上内容皆为本人在debug过程中自己的问题以及自己的理解,如有相同却方法无效,那需自行努力,题主也无可奈何,有错可纠正,不喜勿喷。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有