matlab - 我的遗传算法程序在超出一定的适应水平后不会收敛

标签 matlab genetic-algorithm inversion

我正在尝试编写一个用于古应力反演的遗传算法程序,即根据一组给定的数据,我想计算应力张量。(最小化问题)

我已经生成了一个用于测试的合成数据集,但它没有给我想要的结果。

我的适应度值在几次初始迭代中收敛得非常快,但在一段时间后它会趋于平缓,并且不会给出低于该值的适应度。

期望的健身~ 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/

相关文章:

python - 如何在遗传算法工具箱Deap中生成0到1之间的随机数

artificial-intelligence - 人工智能领域有哪些令人印象深刻的算法或软件?

matlab - 从 Matlab 轮廓函数中选择等值线

matlab - XLSREAD 无法在 MATLAB R2012 中读取文件

matlab - `GLIBCXX_3.4.11' 未找到,从链接到 glibc 的 MATLAB 运行系统调用不同于 matlab bin 路径中的内容

matlab - 中心裁剪或填充帧内的图像

algorithm - 为什么将交叉添加到我的遗传算法中会给我带来更差的结果?

algorithm - 通过倒数/Pearson's r 找到最优排序算法

string - 如何在 GO 中操作字符串来反转它们?