如何避免遗传算法输出中的重复值?

时间:2016-04-25 08:42:49

标签: matlab genetic-algorithm

我做了如下的遗传算法代码......

lb = [1 1 1 1 1 1 1 1 1 1];
ub = [10 10 10 10 10 10 10 10 10 10];
intCon = 1:10;
[x,fval] = ga(FitnessFunction,10,[],[],[],[],lb,ub,[],intCon,options)

我得到输出“x”作为大小为[1 10]的向量,例如如下......

(my output eg:) x = 4     3     3     2     9     4     4     6     1     1

但我需要以输出为例,

(what i want eg:) x = 2 10 3 8 1 6 4 9 5 7

这是我不应该重复的值,我的outputx应该是大小[1 10] ....但在我的输出中我得到重复的值...请有人告诉我如何删除重复...应该我为此设置了任何选项,....请回复....

1 个答案:

答案 0 :(得分:1)

如果您的输出基于使用遗传算法最小化适应度函数,我将为您提供最快的健身功能版本:

min(sum(x)-a)^ 2

“a”等于n个不同数字的总和(即从1到10 a = 55) 这意味着每当输出总和与“a”不同时,解决方案的成本就会以二次方式增加。

由于我的经验,我可以告诉你,精英成员之间的交叉会产生大量糟糕的解决方案。我建议你用随机数增加突变因子或在染色体之间切换突变。

我不知道为什么你实际上使用遗传算法来做到这一点,还有许多其他算法以更快的方式找到解决方案。