我做了如下的遗传算法代码......
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] ....但在我的输出中我得到重复的值...请有人告诉我如何删除重复...应该我为此设置了任何选项,....请回复....
答案 0 :(得分:1)
如果您的输出基于使用遗传算法最小化适应度函数,我将为您提供最快的健身功能版本:
min(sum(x)-a)^ 2
“a”等于n个不同数字的总和(即从1到10 a = 55) 这意味着每当输出总和与“a”不同时,解决方案的成本就会以二次方式增加。
由于我的经验,我可以告诉你,精英成员之间的交叉会产生大量糟糕的解决方案。我建议你用随机数增加突变因子或在染色体之间切换突变。
我不知道为什么你实际上使用遗传算法来做到这一点,还有许多其他算法以更快的方式找到解决方案。