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

Matlab Genetic Algorithm (GA) using only unique integers

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

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

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

如有任何帮助,我们将不胜感激!谢谢!

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

即假设您想要 1-10 范围内的 3 个唯一整数,而不是试图告诉 GA select 3 个唯一整数,告诉它 select 和 index 第一个变量在 1 到 10 之间,第二个变量在 1-9 之间,第三个变量在 1-8 之间。以编程方式或使用匿名函数将 1 到 10 之间的唯一整数数组传递给您的适应度函数。第一个变量 select 是该数组中的整数(通过索引),然后从数组中删除该整数。重复第二个和第三个变量。这样每个变量 select 都是一个唯一的值(就像从一副纸牌中抽取一样)。