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



我做了一个遗传算法代码,如下所示...

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

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

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

min(sum(x)-a)^2

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

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

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

最新更新