我正在尝试编写一个用于古应力反演的遗传算法程序,即根据一组给定的数据,我想计算应力张量。(最小化问题)
我已经生成了一个用于测试的合成数据集,但它没有给我想要的结果。
我的适应度值在几次初始迭代中收敛得非常快,但在一段时间后它会趋于平缓,并且不会给出低于该值的适应度。
期望的健身~ 10^(-6) 我得到的健身值 ~ 0.015
我还注意到,我正在使用的数据总体(总体大小 = 20),大多数在几百次迭代后取相同的值,即 20 个值中大约有 15 个值是相同的,所以我猜交叉将停止产生新的后代。
GA 的物流是 - 人口规模 20 迭代次数 1000 单点交叉 赛事选择 突变概率 = 1/no。位
我已经在matlab上进行了编程
最佳答案
嗯,这就是 GA 发生的情况。它的名字叫premature convergence .
在你的情况下,我要尝试的第一件事是大幅增加人口规模,例如500 人。如此小的人口很可能变得同质化。然后我会调整参数(交叉和突变的概率)。如果这些方法效果不佳,您可以尝试其他技巧,例如健身分享和拥挤。
关于matlab - 我的遗传算法程序在超出一定的适应水平后不会收敛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30296005/