我在Matlab中使用遗传算法(ga),我在提供一些约束方面遇到了问题。 到目前为止,我只使用了LB和UB的边界来使用ga。即,
0<a_1<50, 0<a_2<50, -2<a_3<0, -50<b<0.
然而,现在我需要满足一些其他条件:
-54-b<a_1<-b, -2<a_3<(a_1+b)/27, sqrt(12*a_1*a_3+12*a_3*b)<a_2<-1/3*(a_1+b+27*a_3)
为了引入这些约束,我可以在目标函数中引入惩罚因子,但GA将无法找到全局最优向量。你知道是否有正确的方法来实现这些约束吗?
我是ga的新手,任何建议都非常有用!
答案 0 :(得分:0)
您也可以创建自己的约束函数,然后将此函数提供给ga()
。请查看this以获取进一步的见解。在这个页面中,您将找到Mathworks关于约束最小化问题的简要教程,包括上限和下限以及约束。