Main Content

本页采用了机器翻译。点击此处可查看英文原文。

遗传算法算法的非线性约束求解算法

增广拉格朗日遗传算法

默认情况下,遗传算法使用增广拉格朗日遗传算法(ALGA)来解决没有整数约束的非线性约束问题。ALGA 算法解决的优化问题是

minxf(x)

使得

ci(x)0,i=1mceqi(x)=0,i=m+1mtAxbAeqx=beqlbxub,

其中 c(x) 表示非线性不等式约束,ceq(x) 表示等式约束,m 为非线性不等式约束的数量,mt 为非线性约束的总数。

增广拉格朗日遗传算法(ALGA) 尝试解决具有非线性约束、线性约束和边界的非线性优化问题。在这种方法中,边界和线性约束与非线性约束分开处理。利用拉格朗日函数和惩罚参数,将适应度函数和非线性约束函数结合起来,形成一个子问题。使用遗传算法近似最小化一系列此类优化问题,以满足线性约束和边界。

子问题公式定义为

Θ(x,λ,s,ρ)=f(x)i=1mλisilog(sici(x))+i=m+1mtλiceqi(x)+ρ2i=m+1mtceqi(x)2,

其中

  • 向量 λ 的分量 λi 是非负的,称为拉格朗日乘数估计

  • 向量 s 的元素 si 是非负移位

  • ρ 是正惩罚参数。

该算法首先使用惩罚参数 (InitialPenalty) 的初始值。

遗传算法最小化一系列子问题,每个子问题都是原始问题的近似值。每个子问题都有一个固定的值 λ、s 和 ρ。当子问题最小化到所需的精度并满足可行性条件时,拉格朗日估计会更新。否则,惩罚参数将增加一个惩罚因子 (PenaltyFactor)。这导致了一个新的子问题表述和最小化问题。重复这些步骤直到满足停止条件。

每个子问题的解代表代。因此,使用非线性约束时,每代函数计算的次数要比其他情况高得多。

通过使用 optimoptionsNonlinearConstraintAlgorithm 选项设置为 'auglag' 来选择增广拉格朗日算法。

有关该算法的完整描述,请参阅以下参考资料:

参考

[1] Conn, A. R., N. I. M. Gould, and Ph. L. Toint. “A Globally Convergent Augmented Lagrangian Algorithm for Optimization with General Constraints and Simple Bounds,” SIAM Journal on Numerical Analysis, Volume 28, Number 2, pages 545–572, 1991.

[2] Conn, A. R., N. I. M. Gould, and Ph. L. Toint. “A Globally Convergent Augmented Lagrangian Barrier Algorithm for Optimization with General Inequality Constraints and Simple Bounds,” Mathematics of Computation, Volume 66, Number 217, pages 261–288, 1997.

惩罚算法

惩罚算法与整数 ga 算法类似。在评估个体的适应度时,ga 会按如下方式计算惩罚值:

  • 如果个体是可行的,则罚函数即为适应度函数。

  • 如果个体不可行,则罚函数为种群可行成员中的最大适应度函数,加上(不可行)个体的约束违反之和。

有关罚函数的详细信息,请参阅 Deb [1]

通过使用 optimoptionsNonlinearConstraintAlgorithm 选项设置为 'penalty' 来选择惩罚算法。当您做出此选择时,ga 将按如下方式解决约束优化问题。

  1. ga 默认为 @gacreationnonlinearfeasible 创建函数。此函数尝试创建一个符合所有约束的可行种群。ga 创建了足够的个体来匹配 PopulationSize 选项。有关详细信息,请参阅惩罚算法

  2. ga 会覆盖您对选择函数的选择,并且每场比赛使用 @selectiontournament (个体)。

  3. ga 按照 遗传算法的工作原理 进行,使用罚函数作为适应度衡量标准。

参考

[1] Deb, Kalyanmoy. An efficient constraint handling method for genetic algorithms. Computer Methods in Applied Mechanics and Engineering, 186(2–4), pp. 311–338, 2000.

相关主题