代码之家  ›  专栏  ›  技术社区  ›  kika

如何在matlab中将以下约束传递给ga?

  •  0
  • kika  · 技术社区  · 9 年前

    我使用的是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是新手,任何建议都会非常有用!

    1 回复  |  直到 9 年前
        1
  •  0
  •   AlessioX    9 年前

    您还可以创建自己的约束函数,然后将该函数提供给 ga() 检查 this 了解更多信息。在本页中,您将找到Mathworks关于约束最小化问题的简短教程,该问题包含上限和下限以及约束。