遗传算法出来的结果不稳定

来源:百度知道 编辑:UC知道 时间:2024/06/03 07:29:19
用VB通过遗传算法做了一个程序,功能是:某数X,另外给出N个数字,在这N个数字里找出相加等于X或者最接近X的数字的组合,可是得到的组合方式基本每次都不一样,请问有没有什么好办法
谢谢,确实是有多种组合方式等于X,我的意思是说有没有办法,在不改变这N个数字排列顺序的情况下,每次计算都能够得到相同的结果,即使是有多个组合方式都等于X,那么也得到一个。

有两种可能:1.有多种组合等于X,因此组合有多种
2.你的遗传算法容易局部收敛

对于2解决办法:增加判断,当种群最优染色体一直不变持续N代,重新初始化一个种群,或者往种群中注入新的随机染色体来跳出局部收敛区域。

对补充的回答:
遗传算法本身就是一种智能寻优的随机算法,搜索过程中存在随机性,在具有多个最优解的情况下,很难每次都寻优到同一组参数组合,因为每次的搜索路径是不同的。

如果楼主真是寻求最后结果一样的效果的话,可以先得到一组最优组合数字集合S,按从小到大排列处理后变为S'(n1,n2...ni)

然后搜索过程中的某组数字集合Q的目标函数
既满足:
相加的和最接近X,
还要满足:
1.数字个数=i
2.临时将Q从小达到排列,各个位置上的元素和S'的元素最接近

这样可能会增加很多计算时间,但理论上是可以每次都得到S