仅使用唯一整数的Matlab遗传算法(GA)



我使用matlabs GA来优化整数变量数组,但我希望每个变量都是唯一的值。更确切地说,我只希望某个比例具有唯一的值。

例如,假设我必须找到10个变量的最佳整数值,但作为一项要求,我的优化需要确保最后5个都是给定范围内的唯一值。我该如何确保最后5个变量是唯一的?

我想使用一个非线性约束来标记任何重复的变量,但这意味着GA仍将运行此迭代,这将导致错误。我想的另一种方法是创建一个自定义创建功能,以确保它们是不合格的,但不确定如何做到这一点?

如果能在这件事上提供任何帮助,我们将不胜感激!谢谢

也许可以在健身功能中使用类似于从甲板上绘图的设置?

也就是说,你想要1-10范围内的3个唯一整数,而不是试图告诉GA选择3个唯一的整数,而是告诉它为第一个变量选择1到10之间的索引,为第二个变量选择1-9,为第三个变量选择1-8。通过编程或使用匿名函数,将一个介于1和10之间的唯一整数数组传递给适合度函数。第一个变量从该数组中选择其整数(通过索引),然后从数组中删除该整数。对第二个和第三个变量重复上述步骤。通过这种方式,每个变量都会选择一个唯一的值(就像从一副牌中绘图一样)。

最新更新