我正在尝试用遗传算法以一种热经济的方式来优化火力发电厂。创建population会给我带来很多不可行的个体(例如: ValueErros,TypeError等)。我试着使用惩罚函数,但是GA在第一个种群中以可行的个体适应度被卡住,并且它没有进化。有没有其他的方法来处理它?
如果有人能帮我,我将不胜感激
发布于 2020-07-05 04:38:27
不允许这样的个人获得人口的一部分。它会减慢你的收敛速度,但你可以保证找到的解决方案是好的。
发布于 2020-07-16 17:24:24
您可能需要查看分集控制。
从理论上讲,无效的个体可能包含有利的/有效的代码片段,仅仅因为他们有一个bug就丢弃它们是浪费的。在多样性控制中,根据相似性度量将你的种群分组到不同的物种中(对于树结构,通常是编辑距离),然后将每个个体的适应度与组中的其他成员“共享”。在这种情况下,fitness = performance/group_size。这通常是为了防止过早收敛并扩大探索范围。
通过将惩罚函数与多样性控制相结合,如果有效的个人组变得太多,那么该组中的适应度将会下降,而抛出错误但数量较少的组将变得更具竞争力,从而携带潜在的有价值的材料。
最后,像基于排名的选择应该使搜索对异常值不敏感,所以当你的领头羊比其他人好200%时,它不会一直被选中。
https://stackoverflow.com/questions/62436001
复制相似问题