基于线性规划的鲁棒优化中鲁棒对等(Robust Counterpart)的线性化与求解示例
字数 4716 2025-12-21 23:39:34

基于线性规划的鲁棒优化中鲁棒对等(Robust Counterpart)的线性化与求解示例

我将为您讲解一个鲁棒线性优化中鲁棒对等模型线性化的典型问题。这个问题在许多工程和经济领域有广泛应用,例如在参数不确定下的生产计划、投资组合优化等场景。


问题描述

考虑一个生产计划问题。某工厂生产两种产品,需要消耗三种原材料。每种原材料的供应量存在不确定性,但已知其可能的波动范围。目标是最大化利润,同时确保在所有可能的不确定参数实现下,约束条件都能得到满足。

原始确定性问题:

决策变量:

  • \(x_1\): 产品1的产量
  • \(x_2\): 产品2的产量

目标函数:最大化利润

\[\max \; 4x_1 + 5x_2 \]

约束条件(原材料消耗不超过供应):

\[\begin{aligned} 2x_1 + 3x_2 &\le b_1 \quad &\text{(原材料1)} \\ 4x_1 + 2x_2 &\le b_2 \quad &\text{(原材料2)} \\ 3x_1 + 4x_2 &\le b_3 \quad &\text{(原材料3)} \\ x_1, x_2 &\ge 0 \end{aligned} \]

不确定参数:
原材料供应量 \(b_1, b_2, b_3\) 是不确定的。它们的标称值(名义值)为:

\[\bar{b}_1 = 100,\quad \bar{b}_2 = 120,\quad \bar{b}_3 = 130 \]

每个实际供应量在其标称值附近独立波动,波动幅度不超过标称值的10%。即:

\[b_i \in [\bar{b}_i - \delta_i, \;\bar{b}_i + \delta_i], \quad \delta_i = 0.1 \bar{b}_i \]

换句话说:

\[b_1 \in [90, 110],\; b_2 \in [108, 132],\; b_3 \in [117, 143] \]

在鲁棒优化框架下,我们要求决策 \((x_1, x_2)\) 必须对于所有可能\(b_i\) 取值(在上述区间内)都满足约束条件。


第一步:建立鲁棒对等(Robust Counterpart)模型

对于具有不确定右端项 \(b_i\) 的约束 \(a_i^T x \le b_i\),其鲁棒对等要求:

\[a_i^T x \le b_i,\quad \forall b_i \in [\bar{b}_i - \delta_i, \bar{b}_i + \delta_i] \]

这等价于要求在最坏情况下(即 \(b_i\) 取最小值时)约束仍成立:

\[a_i^T x \le \min_{b_i \in [\bar{b}_i - \delta_i, \bar{b}_i + \delta_i]} b_i \]

因为约束是“小于等于”,所以最坏情况是 \(b_i\) 尽可能小。因此:

\[\min_{b_i} b_i = \bar{b}_i - \delta_i \]

于是鲁棒对等约束直接变为:

\[a_i^T x \le \bar{b}_i - \delta_i \]

应用到我们的问题:

\[\begin{aligned} 2x_1 + 3x_2 &\le 100 - 10 = 90 \\ 4x_1 + 2x_2 &\le 120 - 12 = 108 \\ 3x_1 + 4x_2 &\le 130 - 13 = 117 \\ x_1, x_2 &\ge 0 \end{aligned} \]

目标函数不变:\(\max \; 4x_1 + 5x_2\)

这是一个简单的线性规划,可直接求解。


第二步:求解线性化的鲁棒对等问题

我们用单纯形法(或任何LP求解器)求解上述LP。

  1. 标准化为等式形式
    引入松弛变量 \(s_1, s_2, s_3 \ge 0\)

\[\begin{aligned} 2x_1 + 3x_2 + s_1 &= 90 \\ 4x_1 + 2x_2 + s_2 &= 108 \\ 3x_1 + 4x_2 + s_3 &= 117 \\ x_1, x_2, s_1, s_2, s_3 &\ge 0 \end{aligned} \]

目标:\(\max \; z = 4x_1 + 5x_2\)

  1. 初始单纯形表
    初始基变量为松弛变量 \((s_1, s_2, s_3)\)
\(x_1\) \(x_2\) \(s_1\) \(s_2\) \(s_3\) 右端项
\(s_1\) 2 3 1 0 0 90
\(s_2\) 4 2 0 1 0 108
\(s_3\) 3 4 0 0 1 117
\(z\) -4 -5 0 0 0 0
  1. 迭代1
    检验数中 \(x_2\) 系数 -5 最小(负最多),选 \(x_2\) 入基。
    比值测试:
  • 行1: \(90/3 = 30\)
  • 行2: \(108/2 = 54\)
  • 行3: \(117/4 = 29.25\)
    最小正值是29.25,因此 \(s_3\) 出基。主元为4。

进行行运算,使 \(x_2\) 列变为单位向量 [0,0,1,0]^T(相对于基变量行)。

新表计算后(过程略,为标准单纯形法行变换),得到:

\(x_1\) \(x_2\) \(s_1\) \(s_2\) \(s_3\) 右端项
\(s_1\) 2 - 3*(3/4)=2 - 2.25= -0.25 0 1 0 -3/4 90 - 3*(117/4)=90 - 87.75=2.25
\(s_2\) 4 - 2*(3/4)=4 - 1.5= 2.5 0 0 1 -2/4=-0.5 108 - 2*(117/4)=108 - 58.5=49.5
\(x_2\) 3/4=0.75 1 0 0 1/4=0.25 117/4=29.25
\(z\) -4 - (-5)*(3/4)= -4 + 3.75= -0.25 0 0 0 5/4=1.25 0 + 5*(117/4)=146.25
  1. 迭代2
    检验数中 \(x_1\) 系数 -0.25 仍为负,选 \(x_1\) 入基。
    比值测试(只考虑正系数行):
  • 行1:系数为负,跳过
  • 行2:\(49.5 / 2.5 = 19.8\)
  • 行3:\(29.25 / 0.75 = 39\)
    最小为19.8,因此 \(s_2\) 出基。主元为2.5。

行变换后得到新表(过程略):

\(x_1\) \(x_2\) \(s_1\) \(s_2\) \(s_3\) 右端项
\(s_1\) 0 0 1 0.1 -0.8 2.25 + 0.25*(19.8)=7.2
\(x_1\) 1 0 0 0.4 -0.2 19.8
\(x_2\) 0 1 0 -0.3 0.4 29.25 - 0.75*(19.8)=14.4
\(z\) 0 0 0 0.1 1.2 146.25 + 0.25*(19.8)=151.2

所有检验数非负,达到最优。

最优解

\[x_1^* = 19.8,\quad x_2^* = 14.4 \]

最优值

\[z^* = 4 \times 19.8 + 5 \times 14.4 = 79.2 + 72 = 151.2 \]


第三步:鲁棒性验证与解释

  1. 鲁棒性验证
    在最坏情况下,每个供应量取最小值:\(b_1=90, b_2=108, b_3=117\)
    检查约束:
  • 原材料1: \(2 \times 19.8 + 3 \times 14.4 = 39.6 + 43.2 = 82.8 \le 90\)
  • 原材料2: \(4 \times 19.8 + 2 \times 14.4 = 79.2 + 28.8 = 108 \le 108\)(紧约束)
  • 原材料3: \(3 \times 19.8 + 4 \times 14.4 = 59.4 + 57.6 = 117 \le 117\)(紧约束)
    所有约束在最坏情况下满足,因此解是鲁棒的。
  1. 与确定性最优解比较
    若使用标称值 \(b_i = \bar{b}_i\) 求解,得到的最优解为 \(x_1=20, x_2=20\),利润为 \(4 \times 20 + 5 \times 20 = 180\)。但此解在 \(b_3\) 取最小值117时,约束3:\(3 \times 20 + 4 \times 20 = 140 > 117\),违反约束,不可行。
    鲁棒优化牺牲了部分利润(从180降至151.2),换取了面对不确定性时的可行性保证。

  2. 线性化本质
    由于不确定性仅出现在右端项且为区间型,鲁棒对等可直接转化为对 \(b_i\) 取下界。这是鲁棒线性优化中“盒式不确定集(Box Uncertainty Set)”的典型处理方式,最终模型仍是线性规划。


总结与拓展

  • 核心思想:鲁棒优化要求解对所有可能的不确定参数实现都可行,通过将约束加强到最坏情况下满足来实现。
  • 线性化关键:对于区间不确定的右端项,鲁棒对等直接退化为使用下界值。
  • 应用:该方法可推广到系数矩阵A或左端项也含不确定性的情况,此时可能需要引入对偶理论或额外变量来线性化,但基本原理相似——将无限多约束(\(\forall\) 不确定参数)转化为有限个线性约束。
  • 优点:模型最终为线性规划,计算简便,且解具有鲁棒性保证。
  • 缺点:可能因过度保守而损失性能,可通过调整不确定集(如预算不确定集)来平衡鲁棒性与性能。

通过以上步骤,我们完成了一个基于区间不确定集的鲁棒线性优化问题的建模、线性化、求解与验证的全过程。

基于线性规划的鲁棒优化中鲁棒对等(Robust Counterpart)的线性化与求解示例 我将为您讲解一个鲁棒线性优化中鲁棒对等模型线性化的典型问题。这个问题在许多工程和经济领域有广泛应用,例如在参数不确定下的生产计划、投资组合优化等场景。 问题描述 考虑一个生产计划问题。某工厂生产两种产品,需要消耗三种原材料。每种原材料的供应量存在不确定性,但已知其可能的波动范围。目标是最大化利润,同时确保在所有可能的不确定参数实现下,约束条件都能得到满足。 原始确定性问题: 决策变量: \(x_ 1\): 产品1的产量 \(x_ 2\): 产品2的产量 目标函数:最大化利润 \[ \max \; 4x_ 1 + 5x_ 2 \] 约束条件(原材料消耗不超过供应): \[ \begin{aligned} 2x_ 1 + 3x_ 2 &\le b_ 1 \quad &\text{(原材料1)} \\ 4x_ 1 + 2x_ 2 &\le b_ 2 \quad &\text{(原材料2)} \\ 3x_ 1 + 4x_ 2 &\le b_ 3 \quad &\text{(原材料3)} \\ x_ 1, x_ 2 &\ge 0 \end{aligned} \] 不确定参数: 原材料供应量 \(b_ 1, b_ 2, b_ 3\) 是不确定的。它们的标称值(名义值)为: \[ \bar{b}_ 1 = 100,\quad \bar{b}_ 2 = 120,\quad \bar{b}_ 3 = 130 \] 每个实际供应量在其标称值附近独立波动,波动幅度不超过标称值的10%。即: \[ b_ i \in [ \bar{b}_ i - \delta_ i, \;\bar{b}_ i + \delta_ i], \quad \delta_ i = 0.1 \bar{b}_ i \] 换句话说: \[ b_ 1 \in [ 90, 110],\; b_ 2 \in [ 108, 132],\; b_ 3 \in [ 117, 143 ] \] 在鲁棒优化框架下,我们要求决策 \((x_ 1, x_ 2)\) 必须 对于所有可能 的 \(b_ i\) 取值(在上述区间内)都满足约束条件。 第一步:建立鲁棒对等(Robust Counterpart)模型 对于具有不确定右端项 \(b_ i\) 的约束 \(a_ i^T x \le b_ i\),其鲁棒对等要求: \[ a_ i^T x \le b_ i,\quad \forall b_ i \in [ \bar{b}_ i - \delta_ i, \bar{b} i + \delta_ i ] \] 这等价于要求在最坏情况下(即 \(b_ i\) 取最小值时)约束仍成立: \[ a_ i^T x \le \min {b_ i \in [ \bar{b}_ i - \delta_ i, \bar{b} i + \delta_ i]} b_ i \] 因为约束是“小于等于”,所以最坏情况是 \(b_ i\) 尽可能小。因此: \[ \min {b_ i} b_ i = \bar{b}_ i - \delta_ i \] 于是鲁棒对等约束直接变为: \[ a_ i^T x \le \bar{b}_ i - \delta_ i \] 应用到我们的问题: \[ \begin{aligned} 2x_ 1 + 3x_ 2 &\le 100 - 10 = 90 \\ 4x_ 1 + 2x_ 2 &\le 120 - 12 = 108 \\ 3x_ 1 + 4x_ 2 &\le 130 - 13 = 117 \\ x_ 1, x_ 2 &\ge 0 \end{aligned} \] 目标函数不变:\(\max \; 4x_ 1 + 5x_ 2\)。 这是一个简单的线性规划,可直接求解。 第二步:求解线性化的鲁棒对等问题 我们用单纯形法(或任何LP求解器)求解上述LP。 标准化为等式形式 : 引入松弛变量 \(s_ 1, s_ 2, s_ 3 \ge 0\): \[ \begin{aligned} 2x_ 1 + 3x_ 2 + s_ 1 &= 90 \\ 4x_ 1 + 2x_ 2 + s_ 2 &= 108 \\ 3x_ 1 + 4x_ 2 + s_ 3 &= 117 \\ x_ 1, x_ 2, s_ 1, s_ 2, s_ 3 &\ge 0 \end{aligned} \] 目标:\(\max \; z = 4x_ 1 + 5x_ 2\)。 初始单纯形表 : 初始基变量为松弛变量 \((s_ 1, s_ 2, s_ 3)\)。 | 基 | \(x_ 1\) | \(x_ 2\) | \(s_ 1\) | \(s_ 2\) | \(s_ 3\) | 右端项 | |------|--------|--------|--------|--------|--------|--------| | \(s_ 1\) | 2 | 3 | 1 | 0 | 0 | 90 | | \(s_ 2\) | 4 | 2 | 0 | 1 | 0 | 108 | | \(s_ 3\) | 3 | 4 | 0 | 0 | 1 | 117 | | \(z\) | -4 | -5 | 0 | 0 | 0 | 0 | 迭代1 : 检验数中 \(x_ 2\) 系数 -5 最小(负最多),选 \(x_ 2\) 入基。 比值测试: 行1: \(90/3 = 30\) 行2: \(108/2 = 54\) 行3: \(117/4 = 29.25\) 最小正值是29.25,因此 \(s_ 3\) 出基。主元为4。 进行行运算,使 \(x_ 2\) 列变为单位向量 [ 0,0,1,0 ]^T(相对于基变量行)。 新表计算后(过程略,为标准单纯形法行变换),得到: | 基 | \(x_ 1\) | \(x_ 2\) | \(s_ 1\) | \(s_ 2\) | \(s_ 3\) | 右端项 | |------|----------|--------|--------|--------|----------|--------| | \(s_ 1\) | 2 - 3* (3/4)=2 - 2.25= -0.25 | 0 | 1 | 0 | -3/4 | 90 - 3* (117/4)=90 - 87.75=2.25 | | \(s_ 2\) | 4 - 2* (3/4)=4 - 1.5= 2.5 | 0 | 0 | 1 | -2/4=-0.5 | 108 - 2* (117/4)=108 - 58.5=49.5 | | \(x_ 2\) | 3/4=0.75 | 1 | 0 | 0 | 1/4=0.25 | 117/4=29.25 | | \(z\) | -4 - (-5) (3/4)= -4 + 3.75= -0.25 | 0 | 0 | 0 | 5/4=1.25 | 0 + 5 (117/4)=146.25 | 迭代2 : 检验数中 \(x_ 1\) 系数 -0.25 仍为负,选 \(x_ 1\) 入基。 比值测试(只考虑正系数行): 行1:系数为负,跳过 行2:\(49.5 / 2.5 = 19.8\) 行3:\(29.25 / 0.75 = 39\) 最小为19.8,因此 \(s_ 2\) 出基。主元为2.5。 行变换后得到新表(过程略): | 基 | \(x_ 1\) | \(x_ 2\) | \(s_ 1\) | \(s_ 2\) | \(s_ 3\) | 右端项 | |------|--------|--------|--------|--------|--------|--------| | \(s_ 1\) | 0 | 0 | 1 | 0.1 | -0.8 | 2.25 + 0.25* (19.8)=7.2 | | \(x_ 1\) | 1 | 0 | 0 | 0.4 | -0.2 | 19.8 | | \(x_ 2\) | 0 | 1 | 0 | -0.3 | 0.4 | 29.25 - 0.75* (19.8)=14.4 | | \(z\) | 0 | 0 | 0 | 0.1 | 1.2 | 146.25 + 0.25* (19.8)=151.2 | 所有检验数非负,达到最优。 最优解 : \[ x_ 1^* = 19.8,\quad x_ 2^* = 14.4 \] 最优值 : \[ z^* = 4 \times 19.8 + 5 \times 14.4 = 79.2 + 72 = 151.2 \] 第三步:鲁棒性验证与解释 鲁棒性验证 : 在最坏情况下,每个供应量取最小值:\(b_ 1=90, b_ 2=108, b_ 3=117\)。 检查约束: 原材料1: \(2 \times 19.8 + 3 \times 14.4 = 39.6 + 43.2 = 82.8 \le 90\) 原材料2: \(4 \times 19.8 + 2 \times 14.4 = 79.2 + 28.8 = 108 \le 108\)(紧约束) 原材料3: \(3 \times 19.8 + 4 \times 14.4 = 59.4 + 57.6 = 117 \le 117\)(紧约束) 所有约束在最坏情况下满足,因此解是鲁棒的。 与确定性最优解比较 : 若使用标称值 \(b_ i = \bar{b}_ i\) 求解,得到的最优解为 \(x_ 1=20, x_ 2=20\),利润为 \(4 \times 20 + 5 \times 20 = 180\)。但此解在 \(b_ 3\) 取最小值117时,约束3:\(3 \times 20 + 4 \times 20 = 140 > 117\),违反约束,不可行。 鲁棒优化牺牲了部分利润(从180降至151.2),换取了面对不确定性时的可行性保证。 线性化本质 : 由于不确定性仅出现在右端项且为区间型,鲁棒对等可直接转化为对 \(b_ i\) 取下界。这是鲁棒线性优化中“盒式不确定集(Box Uncertainty Set)”的典型处理方式,最终模型仍是线性规划。 总结与拓展 核心思想 :鲁棒优化要求解对所有可能的不确定参数实现都可行,通过将约束加强到最坏情况下满足来实现。 线性化关键 :对于区间不确定的右端项,鲁棒对等直接退化为使用下界值。 应用 :该方法可推广到系数矩阵A或左端项也含不确定性的情况,此时可能需要引入对偶理论或额外变量来线性化,但基本原理相似——将无限多约束(\(\forall\) 不确定参数)转化为有限个线性约束。 优点 :模型最终为线性规划,计算简便,且解具有鲁棒性保证。 缺点 :可能因过度保守而损失性能,可通过调整不确定集(如预算不确定集)来平衡鲁棒性与性能。 通过以上步骤,我们完成了一个基于区间不确定集的鲁棒线性优化问题的建模、线性化、求解与验证的全过程。