我使用matlabs GA优化整数变量数组,但我希望每个变量都是唯一值。 更确切地说,我只希望某个比例具有唯一值。
例如,假设我必须找到10个变量的最佳整数值,但作为一项要求,我的优化需要确保最后5个是给定范围之间的所有唯一值。我如何确保最后5个变量是唯一的?
我正在考虑使用非线性约束来标记任何重复的变量,但这意味着GA仍将运行此迭代,这将导致错误。我想到的另一种方法,但不确定如何做,将是创建一个自定义创建函数,以确保它们是unqiue?
对此事的任何帮助将不胜感激!谢谢!
答案 0 :(得分:0)
也许在健身功能中使用类似于甲板绘图的设置?
即。假设您想要1-10范围内的3个唯一整数,而不是试图告诉GA选择3个唯一整数,告诉它为第一个变量选择1到10之间的索引,1 -9为第二个,1-8为第三个。通过编程方式或使用匿名函数将1到10之间的唯一整数数组传递给您的适应度函数。第一个变量从此数组中选择其整数(通过索引),然后从数组中删除此整数。重复第二个和第三个变量。这样每个变量都会选择一个唯一的值(比如从一副牌中抽出)。