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

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

自用调整方法:

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

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

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

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

'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过程中自己的问题以及自己的理解,如有相同却方法无效,那需自行努力,题主也无可奈何,有错可纠正,不喜勿喷。


  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值