1329 字
7 分钟
线性规划的对偶问题
2026-05-05
无标签
TIP

抽象的对偶来自共轭函数——Fenchel对偶,拉格朗日对偶是对偶理论的一种具体形式,而线性规划的对偶问题是拉格朗日对偶在特定约束条件下的一个特例。

拉格朗日对偶问题的定义#

回顾拉格朗日函数及其对偶函数和对偶问题,这里不过多赘述

线性规划的对偶问题#

LP对称形式的对偶问题定义如下:

LP:

maxz=cTxs.t.Axbx0\begin{aligned} \max z &= c^T x \\ s.t. Ax &\geq b \\ x &\geq 0 \end{aligned}

DP

minf=bTys.t.ATycy0\begin{aligned} \min f &= b^T y \\ s.t. A^T y &\leq c \\ y &\geq 0 \end{aligned}

含义:为每种资源赋予一个单价 yy(对偶变量),使得在保证“成本不低于收益”的前提下,总资源价值 bTyb^T y 最小。

如果LP是标准形式

LP:

maxz=cTxs.t.Ax=bx0\begin{aligned} \max z &= c^T x \\ s.t. Ax &= b \\ x &\geq 0 \end{aligned}

DP:(和上面DP的区别是y没有非负约束了)

minf=bTys.t.ATyc\begin{aligned} \min f &= b^T y \\ s.t. A^T y &\leq c \\ \end{aligned}
原问题 (Primal)对偶问题 (Dual)
目标函数系数 cc约束条件的右端向量 cc
约束条件的右端向量 bb目标函数系数 bb
约束矩阵 AA转置矩阵 ATA^T
变量 xj0x_j \ge 0jj 个约束为 \ge
ii 个约束为 \le变量 yi0y_i \ge 0
目标函数 max\max目标函数 min\min
TIP

关于这个对偶是怎么来的

把LP统一成不等式约束为 g(x)0g(x) \le 0 的形式:Axb0Ax-b \le 0,给目标函数 maxcTx\max c^T x 加个负号符合拉格朗日乘子法的最小化问题。构造拉格朗日函数:

L(x,y)=cTx+yT(Axb)L(x, y) = -c^T x + y^T (Ax - b)

其中 y0y \ge 0 ,是拉格朗日乘子。对 xx 取下确界,构造对偶函数

g(y)=infxL(x,y)=infx(cTx+yT(Axb))=yTb+infx((cT+yTA)x)g(y) = \inf_x L(x, y) = \inf_x (-c^T x + y^T (Ax - b)) \\ = -y^T b + \inf_x ((-c^T + y^T A) x)

求inf:如果 cT+yTA<0-c^T + y^T A \lt 0,则 xx\to \infty ,g(y)=g(y) = -\infty,(注意原LP里面对 xx 的非负约束),如果 cT+yTA0-c^T + y^T A \ge 0,则 x0x\to 0 ,g(y)=yTbg(y) = y^T b。所以对偶问题就是:

maxy0g(y)=maxy0yTbs.t.cT+yTA0\begin{aligned} \max_{y \ge 0} g(y) &= \max_{y \ge 0} -y^T b \\[1ex] s.t. & -c^T + y^T A \ge 0 \\ \end{aligned}

整理一下

miny0f=bTys.t.ATycy0\begin{aligned} \min_{y \ge 0}f &= b^T y \\[1ex] s.t. A^T y &\le c \\ y &\ge 0 \end{aligned}

如果原问题是个标准形式,也就是 Ax=bAx=b,这个等式约束可以换成两个不等式约束 AxbAx \le bAxb-Ax \le -b,同样的道理构造拉格朗日函数,这时候需要用到两个乘子 y1y_1y2y_2,分别对应 AxbAx \le bAxb-Ax \le -b 这两个约束。

L(x,y1,y2)=cTx+y1T(Axb)+y2T(Ax+b)L(x, y_1, y_2) = -c^T x + y_1^T (Ax - b) + y_2^T (-Ax + b)g(y1,y2)=infxL(x,y1,y2)=infx(cTx+y1T(Axb)+y2T(Ax+b))=y1Tb+y2Tb+infx((cT+y1TAy2TA)x)g(y_1, y_2) = \inf_x L(x, y_1, y_2) = \inf_x (-c^T x + y_1^T (Ax - b) + y_2^T (-Ax + b)) \\ = -y_1^T b + y_2^T b + \inf_x ((-c^T + y_1^T A - y_2^T A) x)

如果 cT+y1TAy2TA<0-c^T + y_1^T A - y_2^T A \lt 0,则 xx\to \infty ,g(y1,y2)=g(y_1, y_2) = -\infty,(注意原LP里面对 xx 的非负约束),如果 cT+y1TAy2TA0-c^T + y_1^T A - y_2^T A \ge 0,则 x0x\to 0 ,g(y1,y2)=y1Tb+y2Tbg(y_1, y_2) = -y_1^T b + y_2^T b。所以对偶问题就是:

maxy10,y20g(y1,y2)=maxy10,y20y1Tb+y2Tbs.t.cT+y1TAy2TA0\begin{aligned} \max_{y_1 \ge 0, y_2 \ge 0} g(y_1, y_2) &= \max_{y_1 \ge 0, y_2 \ge 0} -y_1^T b + y_2^T b \\[1ex] s.t. & -c^T + y_1^T A - y_2^T A \ge 0 \\ \end{aligned}

整理一下

miny10,y20f=bTy1bTy2s.t.ATy1ATy2c\begin{aligned} \min_{y_1 \ge 0, y_2 \ge 0}f &= b^T y_1 - b^T y_2 \\[1ex] s.t. & A^T y_1 - A^T y_2 \le c \\ \end{aligned}

回忆一下化标准型流程中处理无约束变量的步骤:对于无约束变量 xjx_j,引入两个非负变量 xj+0x_j^+ \ge 0xj0x_j^- \ge 0,使得 xj=xj+xjx_j = x_j^+ - x_j^-。这样就将无约束变量转化为两个非负变量。这里的 y1y_1y2y_2 就是对应于原问题中无约束变量的两个非负变量。最终我们可以将 y=y1y2y = y_1 - y_2 作为对偶变量,这个 yy 就没有非负约束了。

线性规划的对偶理论#

A. 弱对偶性 (Weak Duality)

xx 是原问题的可行解,yy 是对偶问题的可行解,则:

cTxbTyc^T x \le b^T y

推论1(最优性准则):如果原问题有一个可行解 xx 和对偶问题有一个可行解 yy,且满足 cTx=bTyc^T x = b^T y,则 xxyy 都是各自问题的最优解。

推论2:若LP有可行解,那么LP有最优解的充要条件是:DP有可行解。或者说,LP有可行解而DP无可行解     \implies LP无最优解。

推论3:若DP有可行解,那么DP有最优解的充要条件是:LP有可行解。或者说,DP有可行解而LP无可行解     \implies DP无最优解。

B. 强对偶性/主对偶定理 (Strong Duality)

若原问题有最优解 xx^*,则对偶问题必有最优解 yy^*,且:

cTx=bTyc^T x^* = b^T y^*

反之亦然

C. 互补松弛性 (Complementary Slackness)

这是求解中最有用的性质。在最优解处:如果某个资源有剩余(Ax<bAx < b),那么该资源的对偶价格(影子价格)一定为 0(y=0y = 0)。如果某个资源的影子价格大于 0(y>0y > 0),那么该资源一定被全部用完(Ax=bAx = b)。

D. 解的状态对应

原问题有最优解     \iff 对偶问题有最优解。

原问题具有无界解     \implies 对偶问题无可行解。

原问题无可行解     \implies 对偶问题具有无界解或无可行解。

线性规划的对偶问题
https://biscuit0613.github.io/posts/aimath/lpdual/
作者
Biscuit
发布于
2026-05-05
许可协议
CC BY-NC-SA 4.0