Skip to content

EC Lecture 3 Constrained Optimization

字数 3,989阅读时间 8 分钟Ayaskt
2026/03/12 19:42:45 CST

目标函数 vs. 约束 Objective vs. Constraint

示例问题:

  • 目标函数 Objective function:需要被最小化/最大化的函数(这里是最小化)。
  • 约束 Constraint:可行解必须满足的条件(这里要求 )。

在受约束优化中比较解 Comparing solutions in constrained optimization

例子(第 0 代/若干候选点):

00-1.5
1-1-0.5
1.5-0.750
200.5

目标与约束的区别 Objectives and constraints

  • 目标 Objective:越小越好(针对最小化问题;若是最大化,则需做相应处理)。
  • 约束 Constraint:只有 可行 Feasible / 不可行 Infeasible 两类
    • 可行解通常被视为"同一层级"(都满足约束)。
    • 不可行解之间仍可比较"好坏"(取决于违反程度)。

受约束优化的解排序 Rank solutions

  • 可行解 Feasible solutions 优于 不可行解 Infeasible solutions
  • 两个可行解:目标函数值 Objective value 更优者更好(最小化时更小更好)
  • 两个不可行解:约束违反 Constraint violation 更小者更好

处理约束:违反程度与惩罚函数 Handling Constraints

描述约束违反 Describe constraint violation

约束违反之和 Sum of the constraint violation

  • Case 1:总重量 vs. 要求 (违反 ); 总体积 vs. 要求 (违反
  • Case 2:某些约束可能有 优先级 Priority

加权约束违反之和 Weighted sum of the constraint violation

  • 当约束有优先级或量纲不同,使用 加权和 Weighted sum 来综合违反程度。

惩罚函数法 Penalty function method

将受约束问题:

转化为带惩罚项的无约束问题(有限惩罚系数下通常是近似处理,而不是严格等价):

其中 惩罚函数 Penalty function

  • 惩罚系数 Penalty coefficient(标量 scalar,例如 ),用于控制惩罚强度。
  • 约束违反越多,惩罚项越大。
  • 当满足约束时(),惩罚项为 ,对目标函数无影响。

如何确定惩罚系数

一种 经验方法 Empirical method

  • Step 1:估计一个可容忍的 预期可接受违反 Intended acceptable violation
  • Step 2:估计一个期望获得的 期望最优目标值 Expected optimal objective value
  • Step 3:选择 ,使得 大约是 倍:

惩罚函数法示例 Penalty function example

给定:

若取 ,则等价的惩罚形式(将违反写成 ):

多个约束 Multiple constraints

原问题:

Step 1:统一约束方向 Unify constraints(例如全转成

Step 2:用惩罚函数法并入目标 Integrate constraints

Step 3:分别确定

如果是最大化 What if maximization?

只需对目标取负,把 最大化 Maximization 转成 最小化 Minimization,其余处理同前。

惩罚函数法是否遵循排序原则?

排序原则(回顾):可行解优于不可行解 → 两个可行解比目标值 → 两个不可行解比违反程度。

结论:如果惩罚系数 选择得当,惩罚函数法可以遵循上述原则。

例子:背包问题 Knapsack Problem

问题设置 Problem setup

五个物品(价值 value / 重量 weight / 体积 volume):

物品价值重量体积
1
2
3
4
5

背包容量 Capacity:

决策变量 Decision variable

选择物品否则

最大化总价值:

约束:

Step 1:转为最小化 Convert to minimization

Step 2:统一约束方向 Unify constraints

本例两个约束已经是 形式,无需额外转换

Step 3:惩罚函数并入目标 Integrate constraints

给定(示例选择):

则:

多目标优化 Multiobjective Optimization

问题定义 Problem definition

  • 决策变量 decision variables 是维度
  • 决策空间 decision space
  • 目标 objectives 通常彼此冲突

示例:汽车设计 Example: automobile design

能源消耗(每百英里)应尽可能低,制造成本应尽可能低。两者相互冲突:低能耗依赖于更先进的动力单元设计,这会增加制造费用。

支配 Dominance

支配 dominates 如果:

  • 在任何目标上都不比
  • 至少在一个目标上严格优于

对于任意两个解 支配 ,或 支配 ,或两者不可比较

支配图解 Illustration

  • B 支配 A
  • B 和 C 不可比较,A 和 C 也是如此

帕累托前沿 Pareto Front

帕累托前沿 PF:帕累托最优解在目标空间中的函数值集合。

帕累托集 PS:所有帕累托最优解的集合(决策空间的子集)。

帕累托最优解:不被任何其他解支配的解。一个理性的决策者不会选择非帕累托最优解。

帕累托前沿的不同形状:凸、凹、不连续、既非凸也非凹。

多目标进化算法 MOEAs

简单 EA 的一次迭代:

  1. 代种群 → 选择 Selection → 父代集合
  2. 交叉 Crossover / 变异 Mutation
  3. 代种群

MOEA 的目标:生成有限数量的均匀分布的帕累托最优解,逼近 PF。

MOEA 分类

类型代表算法思路
基于分解 DecompositionMOEA/D将 MOP 分解为多个单目标子问题,协同求解
基于支配 DominanceNSGA-II基于帕累托支配关系和目标空间距离迭代选择
基于指标 IndicatorIBEA用超体积等指标评估解集质量,迭代选择

MOEA/D 的优势

  • 小种群下具有良好的分布性和高优化质量
  • 由于仿真成本,种群规模通常受限;分解思想有助于获得更均匀的最终解分布
  • 在许多小种群场景下,MOEA/D 可能比 NSGA-II 更容易保持较好的分布性,但具体性能仍取决于问题和参数设置

MOEA/D:分解 + 协同

分解 Decomposition:将逼近 PF 的任务分解为 个单目标子任务。

协同 Collaboration 个代理分别处理子问题,子问题彼此相关,代理协同求解。

每个子问题的输入:分解函数 、偏好向量 、参考点 、搜索空间 、当前最优解。

分解方法 Decomposition methods

加权和法 Weighted sum approach

适用于凸 PF

切比雪夫法 Tchebycheff approach

其中 通常取为理想点或略优于理想点的 utopian point;对最小化问题,理想点满足 ,utopian point 通常取

邻域协同 Neighborhood collaboration

  • 如果两个子问题的权重向量相近,则互为邻居
  • 相邻子问题目标函数相似,最优解也大概率相似

交叉示例:子问题当前最优解 [x1,...,x9] 与邻居最优解 [y1,...,y9] 交叉 → [x1,x2,x3,y4,y5,y6,y7,x8,x9]

MOEA/D 整体流程

每一代,每个子问题执行:

  1. 交配池选择:获取邻居的当前解(协同)
  2. 繁殖:交叉 + 变异生成新解
  3. 替换:若新解更优则替换旧解,并传递给部分邻居

除特别注明外,本站原创内容采用 CC BY-NC-SA 4.0 协议授权;引用的歌词、课程材料、图片等第三方内容版权归原权利人所有。
Built with VitePress.