找回密码
 注册
Simdroid-非首页
查看: 94|回复: 6

为何ga得到的最佳适应度与平均适应度不收敛在一点?

[复制链接]
发表于 2009-9-12 21:55:35 | 显示全部楼层 |阅读模式 来自 浙江杭州
用Matlab自带的GA工具箱做一个带非线性约束的结构件多目标优化,采用
的权重系数法将多目标转为单目标,计算得到最佳适应度如图:

图上的黑点代表最佳适应个体,蓝点代表平均适应度。黑点应该就是每一迭代的最有个体,但是不知为何平均适应度并没有和最佳个体收敛于一点?
但是遗传算法不是最后群体的所有个体都会收敛于一点的么(不论是收敛于局部极值或是全局最优解),都具有相同的基因和适应值。
谢谢大家!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2009-9-12 23:45:47 | 显示全部楼层 来自 河北石家庄
Simdroid开发平台
本帖最后由 feynmand 于 2009-9-12 23:47 编辑

遗传算法的终止条件并非只有一个,它包括:
1,一定比例个体收敛于一点(90%或者99%或者100%)
2,一定N代(比如说50)的迭代结果并没有变好,说明陷入了一个“局部最优”(这个局部最优也可能就是全局最优)
3,达到了最大迭代次数,比如说200。因为总不能让程序无限循环下去。

你的问题可能是遇到了后两种情况。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-9-13 01:25:51 | 显示全部楼层 来自 浙江杭州
遗传算法的终止条件并非只有一个,它包括:
1,一定比例个体收敛于一点(90%或者99%或者100%)
2,一定N代(比如说50)的迭代结果并没有变好,说明陷入了一个“局部最优”(这个局部最优也可能就是全局最优)
3, ...
feynmand 发表于 2009-9-12 23:45


多谢Mr.feynmand的解释,我的程序每次都是停滞时间达到了设定值而终止的,我设的停滞时间是100s。
确实也可能是陷入了一个局部最优(或可能是全局最优)
因为之前做过参数的敏度分析以及多次试算,问题本身的非线性,最终导致可能存在多个局部最优值。
我现在做出的这个图就是感觉每一代的个体都具有差不多大的差异(均值差不多),但是仍有一部分的个体具有比上代更优秀的适应度,因此保留了下来。
那就说明我这个图也可以是合理的了吧?
回复 不支持

使用道具 举报

发表于 2009-9-13 10:02:43 | 显示全部楼层 来自 河北石家庄
我觉得理想的情况应该是达到第一种结束条件。后面两种条件更多是从具体技术实现角度来设置的。
所以你这里得到的最终结果并不能够说一定合理。很可能差的还很远。不知道你计算的时候有没有设置种群数量,系统默认是20,对于解决有非线性约束的问题实在是太少了。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-9-13 10:15:01 | 显示全部楼层 来自 浙江杭州
我觉得理想的情况应该是达到第一种结束条件。后面两种条件更多是从具体技术实现角度来设置的。
所以你这里得到的最终结果并不能够说一定合理。很可能差的还很远。不知道你计算的时候有没有设置种群数量,系统默认是 ...
feynmand 发表于 2009-9-13 10:02


这张图是使用系统默认的种群数量20做的,但是我将种群数量增加至100时,虽然最佳适应度更好了,但是平均与最佳依然不收敛。(如下图)(此时我的幸存数设为10,交叉概率0.8)

目前依然无法达到你说的第一种结束条件。
ps:我的适应度函数里权重系数变换的时候将每个目标都进行了绝对值处理,不知道会不会是这个影响。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-9-13 12:29:42 | 显示全部楼层 来自 河北石家庄
既然说是理想情况,那这种情况就不太容易达到了。
又想了一下,你这个可能是因为非线性约束条件造成的。因为非线性约束的存在,在进行交叉变异之后的新个体并不一定满足约束的,这样,就需要产生新的个体,这个过程并不是完全由上一代进化来的,所以也就很难趋于同一基因类型。所以最后平均和最优不收敛。

因为非线性约束条件种类繁多,所以默认的算法并不能完全胜任。如果要得到收敛的结果可能需要自定义合适的令个体满足约束条件的算法。不过这个工作量有点大,而且不能保证自定义的就比默认的好。建议再增大种群数量,多次运行,在结果中找到一个最优的。至于平均适应度就不要去管了,我们要的是最优的那个。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-9-13 13:26:17 | 显示全部楼层 来自 浙江杭州
既然说是理想情况,那这种情况就不太容易达到了。
又想了一下,你这个可能是因为非线性约束条件造成的。因为非线性约束的存在,在进行交叉变异之后的新个体并不一定满足约束的,这样,就需要产生新的个体,这个过程 ...
feynmand 发表于 2009-9-13 12:29





嗯,你说的这个有道理,由于非线性约束的存在,而且我的问题中非线性约束还不止一个,那么子代就不完全都是由父代进化而来,因此会出现新的基因型。我设定的变异算子是Adaptive feasible,但是这个算子产生的新个体貌似是只满足线性约束和上下限约束的,可能就是这个问题,我正在试别的变异算子!

非常感谢feynmand,和你讨论收益良多!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 05:25 , Processed in 0.042152 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表