如何构造线性规划的对偶问题(How to take the Dual of a Linear Program)

线性规划中的对偶(Duality in linear programs) Introduction 对偶(duality)是优化中的一个重要概念,当原问题的最小值很难求解时,我们常常将其变为对偶形式,通过求解对偶问题的最大值,从而得到原问题的最优解。我们从最简单的线性规划问题入手来介绍对偶的概念。 线性规划的下界 假设我们想要寻找一个凸优化问题的下界(lower bound),即寻找B≤min⁡xf(x)B\leq \min_xf(x)B≤minx​f(x)。 以线性规... 阅读详情

如何构造线性规划的对偶问题

原文:《How to take the Dual of a Linear Program》by Sebastien Lahaie


0、前言

这篇笔记的目的有:(1)解释如何判断一个问题是不是线性规划(2)讲解如何构造一个线性规划的对偶问题,以及(3)列举出关于一个线性规划和它的对偶问题的基础结论。这篇笔记不提供任何证明过程,也不解释任何线性规划对偶性中隐含的深层几何意义。这篇笔记的主要目标是解释机械化地构造对偶问题的流程细节。
除了本文提到的构造方法之外,还有许多其他的方法,但这是我最喜欢的方法。我发现当在几个问题上尝试过这个方法后,它还是很容易被记住的。这个方法可能比其他方法要慢要乏味,但它容易记住,且中间步骤可以得到一些有用的副产品。

1、公式

线性规划是一种最优化问题:在定义域中求解目标函数(objective function)的最大或最小值问题。其中,该目标函数是线性的,定义域(或称可行集合)是由一系列线性约束确定的。本文不会给出线性规划的一般公式,而是以一个例子来讲解。当用这个例子过一遍流程之后,你将对“什么是一个线性规划”有清晰的理解。
max ⁡ x 1 ≥ 0 , x 2 ≤ 0 , x 3 v 1 x 1 + v 2 x 2 + v 3 x 3 (1) \tag{1} \max_{x_1\geq0,x_2\leq0,x_3}v_1x_1+v_2x_2+v_3x_3 x1​≥0,x2​≤0,x3​max​v1​x1​+v2​x2​+v3​x3​(1) s . t . a 1 x 1 + x 2 + x 3 ≤ b 1 (2) \tag{2} s.t.\quad a_1x_1+x_2+x_3 \leq b_1 s.t.a1​x1​+x2​+x3​≤b1​(2) x 1 + a 2 x 2 = b 2 (3) \tag{3} x_1+a_2x_2 = b_2 x1​+a2​x2​=b2​(3) a 3 x 3 ≥ b 3 (4) \tag{4} a_3x_3 \geq b_3 a3​x3​≥b3​(4)

这里的变量有 x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​。其余几项是常数(例如 v 1 , a 2 , b 3 v_1,a_2,b_3 v1​,a2​,b3​)。线性规划包括有目标函数 ( 1 ) (1) (1)以及一系列的等式或不等式约束 ( 2 - 4 ) (2\text{-}4) (2-4)。目标函数为:
f ( x ) = v 1 x 1 + v 2 x 2 + v 3 x 3 f(x)=v_1x_1+v_2x_2+v_3x_3 f(x)=v1​x1​+v2​x2​+v3​x3​
它是一个线性方程。也就是说,对于向量 x 1 x^1 x1和 x 2 x^2 x2,实常数 c 1 c_1 c1​和 c 2 c_2 c2​,有 f ( c 1 x 1 + c 2 x 2 ) = c 1 f ( x 1 ) + c 2 f ( x 2 ) f(c_1x^1+c_2x^2)=c_1f(x^1)+c_2f(x^2) f(c1​x1+c2​x2)=c1​f(x1)+c2​f(x2)。这对于 ( 1 ) (1) (1)来说是显然成立的。目标函数可以是最大化或最小化问题,而这个例子是最大化问题。
每个约束条件的左边也都是线性方程,右边都是常数。(遇到右边含有变量的问题时,你可以通过移项来让右边变成常数。)在线性规划问题中,不能存在严格不等式。也就是说,形如 x 1 + x 2 < 3 x_1+x_2<3 x1​+x2​<3的约束条件是不合法的。
那些限制每个变量是非负、非正或者无限制(unrestricted)的约束条件,称为特殊(special)约束。这种约束一般会列在 m a x max max或 m i n min min下面。形如 x 1 ≥ 2 x_1 \geq 2 x1​≥2这样的不是特殊约束,而 x 1 ≥ 0 x_1 \geq 0 x1​≥0这样的就是。在我们这个例子中, x 1 x_1 x1​是非负的, x 2 x_2 x2​是非正的, x 3 x_3 x3​是无限制的(那个条件用于说明这点)。

2、原问题和对偶问题

上述例子 ( 1 ) (1) (1)通常称为原问题(primal)。对于任意一个线性规划来说,都有一个与之相关联的对偶问题(dual)。从原问题推导出对偶问题,完全是机械化的操作流程。下面就以例子 ( 1 ) (1) (1)为例进行推导。整个推导过程包括七个步骤,前两步是将原问题转化为一个“标准格式”。

Step 1. 将目标函数改写为最小化问题。
例子 ( 1 ) (1) (1)是一个最大化问题,因此将它改写为:
min ⁡ x 1 ≥ 0 , x 2 ≤ 0 , x 3 − v 1 x 1 − v 2 x 2 − v 3 x 3 \min_{x_1\geq0,x_2\leq0,x_3}-v_1x_1-v_2x_2-v_3x_3 x1​≥0,x2​≤0,x3​min​−v1​x1​−v2​x2​−v3​x3​
如果一个解能最大化该目标函数,也就能最小化该目标函数的取反值,因此这个操作并不会影响到最终的解集。

Step 2. 将不等式约束改写为“小于等于”的形式,且将每个约束条件的常数移项,使得式子右边为0。
经过这个操作之后,例子 ( 1 ) (1) (1)变成:
min ⁡ x 1 ≥ 0 , x 2 ≤ 0 , x 3 − v 1 x 1 − v 2 x 2 − v 3 x 3 \min_{x_1\geq0,x_2\leq0,x_3}-v_1x_1-v_2x_2-v_3x_3 x1​≥0,x2​≤0,x3​min​−v1​x1​−v2​x2​−v3​x3​ s . t . a 1 x 1 + x 2 + x 3 − b 1 ≤ 0 (5) \tag{5} s.t.\quad a_1x_1+x_2+x_3-b_1 \leq 0 s.t.a1​x1​+x2​+x3​−b1​≤0(5) x 1 + a 2 x 2 − b 2 = 0 (6) \tag{6} x_1+a_2x_2-b_2 = 0 x1​+a2​x2​−b2​=0(6) − a 3 x 3 + b 3 ≤ 0 (7) \tag{7} -a_3x_3+b_3 \leq 0 −a3​x3​+b3​≤0(7)

Step 3. 给每个不等式约束定义对应的非负对偶变量,给每个等式约束定义无约束的对偶变量。
对于约束 ( 5 ) (5) (5)和 ( 7 ) (7) (7)分别定义变量 λ 1 ≥ 0 \lambda_1 \geq 0 λ1​≥0和 λ 3 ≥ 0 \lambda_3 \geq 0 λ3​≥0。对于约束 ( 6 ) (6) (6)定义无约束变量 λ 2 \lambda_2 λ2​。

Step 4. 移除每个约束条件,并将 ( 对 偶 变 量 ) ∗ ( 约 束 条 件 的 左 边 ) (对偶变量)*(约束条件的左边) (对偶变量)∗(约束条件的左边) 加到目标函数中。使用对偶变量作为新的变量构造一个最大化问题。
具体到例子上,第一个约束 ( 5 ) (5) (5)被移除后,将下面一项加到目标函数上。
λ 1 ( a 1 x 1 + x 2 + x 3 − b 1 ) \lambda_1(a_1x_1+x_2+x_3-b_1) λ1​(a1​x1​+x2​+x3​−b1​)
对每个约束条件都做同样的操作之后(除了特殊约束外),并将对偶变量作为新的变量得到一个最大化问题,有:
max ⁡ λ 1 ≥ 0 , λ 2 , λ 3 ≥ 0 min ⁡ x 1 ≥ 0 , x 2 ≤ 0 , x 3 − v 1 x 1 − v 2 x 2 − v 3 x 3 \max_{\lambda_1 \geq 0, \lambda_2, \lambda_3 \geq 0}\quad\min_{x_1\geq0,x_2\leq0,x_3}-v_1x_1-v_2x_2-v_3x_3 λ1​≥0,λ2​,λ3​≥0max​x1​≥0,x2​≤0,x3​min​−v1​x1​−v2​x2​−v3​x3​ + λ 1 ( a 1 x 1 + x 2 + x 3 − b 1 ) (8) \tag{8} +\quad\lambda_1(a_1x_1+x_2+x_3-b_1) +λ1​(a1​x1​+x2​+x3​−b1​)(8) + λ 2 ( x 1 + a 2 x 2 − b 2 ) (9) \tag{9} +\quad\lambda_2(x_1+a_2x_2-b_2) +λ2​(x1​+a2​x2​−b2​)(9) + λ 3 ( − a 3 x 3 + b 3 ) (10) \tag{10} +\quad\lambda_3(-a_3x_3+b_3) +λ3​(−a3​x3​+b3​)(10)

可将该问题想象成一个“双人游戏”,包括一个“外场玩家”和一个“内场玩家”。外场玩家先行一步,给 λ 1 \lambda_1 λ1​, λ 2 \lambda_2 λ2​, λ 3 \lambda_3 λ3​分别选择一些值(当然要满足那些特殊约束啦)。内场玩家在固定这些值后,给 x 1 x_1 x1​, x 2 x_2 x2​, x 3 x_3 x3​选择一些值,使得目标函数最小化。内场玩家操作之后,外场玩家又会更新 λ 1 \lambda_1 λ1​, λ 2 \lambda_2 λ2​, λ 3 \lambda_3 λ3​的值,使得内场玩家给的最小值尽可能大。

Step 5. 现在目标函数中有许多项形如 ( 对 偶 变 量 ) ∗ ( 带 有 原 变 量 的 表 达 式 ) (对偶变量)*(带有原变量的表达式) (对偶变量)∗(带有原变量的表达式) ,加上其他只与原变量有关的项。改写该目标函数,使得其包含一些项形如 ( 原 变 量 ) ∗ ( 带 有 对 偶 变 量 的 表 达 式 ) (原变量)*(带有对偶变量的表达式) (原变量)∗(带有对偶变量的表达式) ,加上其余只与对偶变量有关的项。
做完上述操作之后,得到: max ⁡ λ 1 ≥ 0 , λ 2 , λ 3 ≥ 0 min ⁡ x 1 ≥ 0 , x 2 ≤ 0 , x 3 − b 1 λ 1 − b 2 λ 2 − b 3 λ 3 \max_{\lambda_1 \geq 0, \lambda_2, \lambda_3 \geq 0}\quad\min_{x_1\geq0,x_2\leq0,x_3}-b_1\lambda_1-b_2\lambda_2-b_3\lambda_3 λ1​≥0,λ2​,λ3​≥0max​x1​≥0,x2​≤0,x3​min​−b1​λ1​−b2​λ2​−b3​λ3​

+ x 1 ( a 1 λ 1 + λ 2 − v 1 ) (11) \tag{11} +\quad x_1(a_1\lambda_1+\lambda_2-v_1) +x1​(a1​λ1​+λ2​−v1​)(11) + x 2 ( λ 1 + a 2 λ 2 − v 2 ) (12) \tag{12} +\quad x_2(\lambda_1+a_2\lambda_2-v_2) +x2​(λ1​+a2​λ2​−v2​)(12) + x 3 ( λ 1 − a 3 λ 3 − v 3 ) (13) \tag{13} +\quad x_3(\lambda_1-a_3\lambda_3-v_3) +x3​(λ1​−a3​λ3​−v3​)(13)

做这步操作的时候要十分谨慎,如果你弄错了一个符号,或者漏掉了任何一项,不仅最终的对偶结果会出错,并且会变得非常具有误导性、迷惑性。

Step 6. 移除形如 ( 原 变 量 ) ∗ ( 带 有 对 偶 变 量 的 表 达 式 ) (原变量)*(带有对偶变量的表达式) (原变量)∗(带有对偶变量的表达式) 的项,并按照下述规则添加新的约束条件:

  • 表 达 式 ≥ 0 表达式\geq0 表达式≥0,如果该原变量是非负的
  • 表 达 式 ≤ 0 表达式\leq0 表达式≤0,如果该原变量是非正的
  • 表 达 式 = 0 表达式=0 表达式=0,如果该原变量是无限制的

这一步并不难记,因为它的原理非常直观。例如 ( 11 ) (11) (11)项:
x 1 ( a 1 λ 1 + λ 2 − v 1 ) . x_1(a_1\lambda_1+\lambda_2-v_1). x1​(a1​λ1​+λ2​−v1​).
因为 x 1 ≥ 0 x_1\geq0 x1​≥0,可以推出 a 1 λ 1 + λ 2 − v 1 ≥ 0 a_1\lambda_1+\lambda_2-v_1 \geq 0 a1​λ1​+λ2​−v1​≥0。为啥嘞?如果 a 1 λ 1 + λ 2 − v 1 ≤ 0 a_1\lambda_1+\lambda_2-v_1 \leq 0 a1​λ1​+λ2​−v1​≤0,那么内场玩家可以选择 x 1 → + ∞ x_1\rightarrow + \infty x1​→+∞(也就是任意大),因此该目标函数的值就会变成$ -\infty 。 因 此 外 场 玩 家 若 想 最 大 化 内 场 玩 家 给 的 最 小 值 问 题 , 他 就 会 选 择 。因此外场玩家若想最大化内场玩家给的最小值问题,他就会选择 。因此外场玩家若想最大化内场玩家给的最小值问题,他就会选择\lambda_1 , , ,\lambda_2 , , ,\lambda_3 的 值 , 使 得 的值,使得 的值,使得a_1\lambda_1+\lambda_2-v_1 \geq 0 。 同 理 , 这 个 操 作 应 用 到 例 子 的 剩 余 两 项 中 。 外 场 玩 家 必 须 选 择 一 些 值 , 使 得 。 同理,这个操作应用到例子的剩余两项中。外场玩家必须选择一些值,使得 。同理,这个操作应用到例子的剩余两项中。外场玩家必须选择一些值,使得\lambda_1+a_2\lambda_2-v_2\leq 0 , 否 则 内 场 玩 家 可 以 通 过 选 择 ,否则内场玩家可以通过选择 ,否则内场玩家可以通过选择x_2 \rightarrow - \infty$,使得
x 2 ( λ 1 + a 2 λ 2 − v 2 ) x_2(\lambda_1+a_2\lambda_2-v_2) x2​(λ1​+a2​λ2​−v2​)
这项趋近于 − ∞ -\infty −∞。最后,因为 x 3 x_3 x3​是无限制的,唯一能使得
x 3 ( λ 1 − a 3 λ 3 − v 3 ) x_3(\lambda_1-a_3\lambda_3-v_3) x3​(λ1​−a3​λ3​−v3​)
不趋近于 − ∞ -\infty −∞的方法,就是选择一些对偶变量值,使得 λ 1 − a 3 λ 3 − v 3 = 0 \lambda_1-a_3\lambda_3-v_3=0 λ1​−a3​λ3​−v3​=0。经过这些操作之后,我们有了一个船新版本的线性规划问题。注意到其中的原变量已经消失无踪了。
max ⁡ λ 1 ≥ 0 , λ 2 , λ 3 ≥ 0 − b 1 λ 1 − b 2 λ 2 − b 3 λ 3 \max_{\lambda_1 \geq 0, \lambda_2, \lambda_3 \geq 0}-b_1\lambda_1-b_2\lambda_2-b_3\lambda_3 λ1​≥0,λ2​,λ3​≥0max​−b1​λ1​−b2​λ2​−b3​λ3​ s . t . a 1 λ 1 + λ 2 − v 1 ≥ 0 (14) \tag{14} s.t.\quad a_1\lambda_1+\lambda_2-v_1 \geq 0 s.t.a1​λ1​+λ2​−v1​≥0(14) λ 1 + a 2 λ 2 − v 2 ≤ 0 (15) \tag{15} \lambda_1+a_2\lambda_2-v_2 \leq 0 λ1​+a2​λ2​−v2​≤0(15) λ 1 − a 3 λ 3 − v 3 = 0 (16) \tag{16} \lambda_1-a_3\lambda_3-v_3=0 λ1​−a3​λ3​−v3​=0(16)

Step 7. 如果在第一步时将问题改写成了最小化问题,那么现在将上一步得到的结果改写为最小化问题。否则跳过此步。
这个操作的结果如下。当然,约束条件可以移得更自然一些。
min ⁡ λ 1 ≥ 0 , λ 2 , λ 3 ≥ 0 b 1 λ 1 + b 2 λ 2 + b 3 λ 3 \min_{\lambda_1 \geq 0, \lambda_2, \lambda_3 \geq 0}b_1\lambda_1+b_2\lambda_2+b_3\lambda_3 λ1​≥0,λ2​,λ3​≥0min​b1​λ1​+b2​λ2​+b3​λ3​ s . t . a 1 λ 1 + λ 2 ≥ v 1 (17) \tag{17} s.t.\quad a_1\lambda_1+\lambda_2 \geq v_1 s.t.a1​λ1​+λ2​≥v1​(17) λ 1 + a 2 λ 2 ≤ v 2 (18) \tag{18} \lambda_1+a_2\lambda_2 \leq v_2 λ1​+a2​λ2​≤v2​(18) λ 1 − a 3 λ 3 = v 3 (19) \tag{19} \lambda_1-a_3\lambda_3 = v_3 λ1​−a3​λ3​=v3​(19)
这就搞定了构造对偶问题的流程啦。作为练习,你可以把上述的对偶问题作为原问题,看能否还原回最初的那个问题。

3、重要结论

线性规划问题可以是无解的(infeasible),无界的(unbounded)或者存在有限最优解(finite optimum)。如果没有一个解可以满足所有的约束条件,称为无解。比如说,假设在原问题例 ( 1 ) (1) (1)中有 a 1 = a 2 = a 3 = 1 a_1=a_2=a_3=1 a1​=a2​=a3​=1,且 b 1 = − 1 b_1=-1 b1​=−1, b 2 + b 3 ≥ 1 b_2+b_3\geq1 b2​+b3​≥1。很明显对于约束条件 ( 2 - 4 ) (2\text{-}4) (2-4)来说是无解的。(可解性只与约束条件有关,与目标函数无关。)
线性规划问题也可以是无界的。也就是说,对于最小化线性规划,任何一个可行解,都存在另一个可行解,且另一个解的目标函数值严格大于该解的。比如说,假设在例 ( 1 ) (1) (1)中有 a 1 = a 2 = 1 a_1=a_2=1 a1​=a2​=1, a 3 = − 1 a_3=-1 a3​=−1,且 b 1 = b 2 = b 3 = 0 b_1=b_2=b_3=0 b1​=b2​=b3​=0,且最终目标函数中的因子都是正数: v 1 , v 2 , v 3 > 0 v_1,v_2,v_3>0 v1​,v2​,v3​>0。可以知道,对于任意 c ∈ R c\in \mathbb{R} c∈R, c ( 0 , 0 , 1 ) c(0,0,1) c(0,0,1)都是可行解。该目标函数值为 c v 3 cv_3 cv3​,我们可以通过使 c → + ∞ c\rightarrow+\infty c→+∞来让目标函数值任意大。理论上说,即使这个问题有很多的可行解,它也不存在最优解。

.有穷最优解无界的无解的
有穷最优解可能不可能不可能
无界的不可能不可能可能
无解的不可能可能可能

表 1 : 原 问 题 和 对 偶 问 题 可 能 存 在 的 组 合 情 况 表1:原问题和对偶问题可能存在的组合情况 表1:原问题和对偶问题可能存在的组合情况
如果一个问题是可解的且有界的,那么它就存在一个非无穷的最优解(finite optimum)(该解可能不唯一)。表1列举了原问题和对偶问题在可解性上的关系。特别注意到,如果原问题是无界的,那么它的对偶问题就是无解的。如果对偶问题是无界的,那么原问题就是无解的。但也有可能两个问题都是无解的。

原问题的目标函数的最优值记为 V P V_P VP​,对偶问题的最优值记为 V D V_D VD​。线性规划的主要结论如下。
Theorem 1 (Strong duality) 如果一个线性规划问题有最优解,那么它的对偶问题也有,且 V P = V D V_P=V_D VP​=VD​。
这个结论与原问题和对偶问题的值有关,而与它们的解无关。下一个结论参照了例 ( 1 ) (1) (1),当然它也能直接应用到其他线性规划问题上。
Theorem 2 (Complementary slackness) 令 ( x 1 , x 2 , x 3 ) (x_1, x_2, x_3) (x1​,x2​,x3​) 和 ( λ 1 , λ 2 , λ 3 ) (\lambda_1, \lambda_2, \lambda_3) (λ1​,λ2​,λ3​) 分别为原问题和对偶问题的解,如果它们是最优解的话,当且仅当:
λ 1 ( a 1 x 1 + x 2 + x 3 − b 1 ) = 0 λ 2 ( x 1 + a 2 x 2 − b 2 ) = 0 λ 3 ( − a 3 x 3 + b 3 ) = 0 \lambda_1(a_1x_1+x_2+x_3-b_1)=0 \\ \lambda_2(x_1+a_2x_2-b_2)=0 \\ \lambda_3(-a_3x_3+b_3)=0 \\ λ1​(a1​x1​+x2​+x3​−b1​)=0λ2​(x1​+a2​x2​−b2​)=0λ3​(−a3​x3​+b3​)=0
且
x 1 ( a 1 λ 1 + λ 2 − v 1 ) = 0 x 2 ( λ 1 + a 2 λ 2 − v 2 ) = 0 x 3 ( λ 1 − a 3 λ 3 − v 3 ) = 0 x_1(a_1\lambda_1+\lambda_2-v_1)= 0 \\ x_2(\lambda_1+a_2\lambda_2-v_2)= 0 \\ x_3(\lambda_1-a_3\lambda_3-v_3)=0 \\ x1​(a1​λ1​+λ2​−v1​)=0x2​(λ1​+a2​λ2​−v2​)=0x3​(λ1​−a3​λ3​−v3​)=0
这些约束被称作complementary slackness conditions(互补松弛条件)。其中,前三个约束可以从 ( 8 - 10 ) (8\text{-}10) (8-10)中得出,后三个可以从 ( 11 - 13 ) (11\text{-}13) (11-13)中得出。也就是说,在构造对偶问题的过程中,得到了这么一个副产品——互补松弛条件。
这个互补松弛条件有时会写作另一种形式。比如,我们可以将
λ 1 ( a 1 x 1 + x 2 + x 3 − b 1 ) = 0 \lambda_1(a_1x_1+x_2+x_3-b_1)=0 λ1​(a1​x1​+x2​+x3​−b1​)=0
写作
λ 1 > 0 ⇒ a 1 x 1 + x 2 + x 3 − b 1 = 0. \lambda_1>0\Rightarrow a_1x_1+x_2+x_3-b_1=0. λ1​>0⇒a1​x1​+x2​+x3​−b1​=0.
或者等价于(取逆否)
a 1 x 1 + x 2 + x 3 − b 1 < 0 ⇒ λ 1 = 0. a_1x_1+x_2+x_3-b_1<0\Rightarrow \lambda_1=0. a1​x1​+x2​+x3​−b1​<0⇒λ1​=0.
当有原问题的最优解时,互补松弛条件定义了一个系统或多项式去解出、或识别其对偶问题的最优解(后者解同样需要满足对偶可行约束),反之亦然。

4、译者记

本文写作的最初目的是练习 LaTeX \LaTeX LATE​X的公式输入,但在写作的过程中我深刻感受到,翻译文献实在不是简单的事情,那些大牛的论文被翻译成中文真的要且看且珍惜(相信文学作品的翻译更是如此)。这篇笔记的原文是哥伦比亚大学一门课的笔记课件,它没有从数学理论的方面去阐述线性规划的对偶是什么、怎么求,而是用一个简洁易懂的例子来讲解整个构造过程和性质(有另一篇笔记讲解了更一般性的线性规划构造对偶问题)。下一步是理解拉格朗日对偶性的构造和理论证明,似乎离ADMM又近一步了!😃

量子纠错码性能极限:从MacWilliams恒等式到线性规划界 在经典与量子纠错码理论中,衡量编码性能的核心工具之一是重量枚举器,它统计了码字中错误模式的分布。MacWilliams恒等式揭示了线性码与其对偶码枚举器之间的深刻傅里叶变换关系,这一基础数学结构为分析码的纠错能力提供了统一框架。在量子领域,由于量子比特的叠加与纠缠特性,错误由泡利算子描述,需借助群表示论来定义量子版本的重量枚举器(如Shor-Laflamme枚举器),并建立相应的量子MacWilliams恒等式。该恒等式将量子码的枚举器与其对偶对象联系起来,并施加了关键的非负性约束。基于此,通过构建以枚举器 阅读详情

相关推荐

线性规划实战:从饲料混合问题到资源优化通用方法论

线性规划是运筹学中解决资源优化问题的核心方法,其原理是在一组线性等式或不等式约束条件下,寻找使某个线性目标函数达到最优的决策变量值。该技术通过单纯形法或内点法等成熟算法,能高效可靠地求得全局最优解,在工程实践中具有极高的技术价值。它广泛应用于生产配方优化、资源分配、成本控制等场景,例如在饲料工业中,通过建立成本最小化模型,并纳入原料营养、用量等约束,可自动化计算出满足标准的最低成本配方。本文以饲料混合问题为具体案例,深入剖析了使用Python和PuLP库进行建模、求解、灵敏度分析及结果落地的完整流程,并分享

weixin_30386713的博客 387

对偶问题的构建

如果互为对偶的两个问题都有可行解 , 原问题求最大值 ,对偶问题求最小值 ,求最大值的原问题一定都 在某个界限值之下 ,求最小值的对偶问题一定都 在某个界限之上 ,上述描述中的界限值是同一个界限值。应用:原问题为max问题时,对偶问题 任何一个可行解 的目标函数值 , 都是其原问题目标函数的上界。原问题不可行,则对偶问题不可行;原问题无界,则对偶问题无可行解;原问题最优,则对偶问题最优。问题(原始问题)也有一个确定的最优解,而且这两个最优解所对应的目标函数值相等。变成对偶问题中的一个。

weixin_43852510的博客 1156

线性规划求解实战:MATLAB、Python与LINGO三大工具详解

线性规划是运筹学与数学建模中的基础优化方法,用于在满足线性约束条件下,求解线性目标函数的最优值。其核心原理在于通过单纯形法或内点法等算法,在由约束构成的凸多面体可行域内搜索最优顶点或内点。该技术在资源分配、生产计划、投资组合等场景中具有重要价值,能有效提升决策效率与资源利用率。在实际工程应用中,掌握如何将实际问题转化为标准线性规划模型,并正确调用求解器是关键。本文聚焦于线性规划求解的实战环节,详细解析了在MATLAB、Python(SciPy)和LINGO三大常用平台中,如何实现模型标准化、接口调用、结果解

weixin_30482181的博客 317

【课堂笔记】运筹学第二章:对偶问题

单位第iii种资源在最优方案中做出贡献的估价做法:通过求导得到每一种资源带来的利润的提升是多少所有问题一定能找到对偶问题,但是其对偶问题不一定有意义.原问题对偶问题收益最大化代价最小化方程的个数,即种类的个数决策变量数价值系数对偶问题右端的项向量,即约束资源的约束价值系数与前面内容有所重复,即BCB,CBC互换,AAA转置上面讲的都是对称形式。

weixin_51772802的博客 1万+

【人工智能的数学基础】线性规划的对偶理论(Duality Theory)

一般地,对偶是指将原问题转化为一个等价的、但具有不同形式的新问题;将新问题通过同样形式的变换后能够还原为原问题。解决对偶问题,就等价地解决了原问题;弱对偶形式将一个最小值问题转换为一个最大值问题,给出了原问题的一个下界。,则在空间中应具有两种情况:在锥体内部(包括边界)和在锥体外部。对于线性规划问题来说,强对偶形式是成立的;有时线性规划问题难以直接求解,因此转而寻找线性规划问题的。线性规划问题的原问题是一个最小值问题,不妨假设最小值在。进一步地,若两个问题相等,则称为强对偶形式。上述两个不等式恒成立。

AI天才研究院 5209

【滚雪球学数学建模】第5.1节·优化与规划:线性规划与整数规划的理论、方法与应用!

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 1760

Linear Programming Dual

Linear Programming Dual p Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu [Sub

codeStone 1008

AD9361 FIR 滤波器设计

matlab 得到滤波器系数

weixin_44630490的博客 1万+

线性规划--对偶问题

0、前言 这篇笔记的目的有: (1)解释如何判断一个问题是不是线性规 (2)讲解如何构造一个线性规划的对偶问题 (3)列举出关于一个线性规划和它的对偶问题的基础结论。 这篇笔记不提供任何证明过程,也不解释任何线性规划对偶性中隐含的深层几何意义。这篇笔记的主要目标是解释机械化地构造对偶问题的流程细节。 除了本文提到的构造方法之外,还有许多其他的方法,但这是我最喜欢的方法。我发现当在几个问题上尝试过这...

Superpig的博客 2万+

基于高精度三维机器视觉的新能源汽车锂电池表面缺陷检测

在机器视觉行业迅速发展的背景下,市场上提供了功能强大且种类齐全的3D相机系列,可以满足锂电池从电芯到模组各个工艺和工位的3D检测需求。

Hinyeung_Limited的博客 1132

小程序强制更新避坑指南:手把手教你实现无缝升级

本文详细解析小程序强制更新的实现方法,重点介绍wx.getUpdateManager API的使用技巧,帮助开发者规避冷热启动机制下的版本管理陷阱。通过实战案例展示如何设计多级更新提示策略,确保用户无缝升级,提升小程序版本更新率。

star的博客 281

Online linear programming: Dual convergence, new algorithms, and regret bounds

在线线性规划

weixin_43889128的博客 1445

防火墙——双机热备理论讲解

本端和对端协商失败。有可能是因为本端和对端设备的软件版本不一致、某端配置错误、对端设备的心跳接口状态为Down、HRP源或目的端口号被修改、或者底层链路不通等原因导致。会话表、SeverMap表、IP监控表、分片缓存表、GTP表、黑名单、PAT方式端口映射表、NO-PAT方式地址映射表。两台设备一主一备,正常情况下业务流量由主设备处理,当主设备故障时,业务流量平滑切换到备用设备进行处理,业务不中断。开启自动备份后,当主用设备配置了一条可备份的命令或产生了可备份的会话表状态时,会直接备份到备用设备上。

m0_49864110的博客 2万+

凸优化第五章对偶 作业题

Lagrange对偶问题 The dual function provides a lower bound on the optimal value for convex optimization problems only. 对偶函数可以为任意优化问题的最优值提供下界。 The dual function of an optimization problem evaluated at some(λ,ν), withλ⪰0, is equal to 42. Enter a number tha..

hyl1181的博客 1457

免费,Python蓝桥杯等级考试真题--第10级(含答案解析和代码)

Python中蓝桥杯算是含金量和难度最大的比赛之一,网上可以找到不少真题,不过要么零零散散要么付费才能解锁,而且大都是没答案和解析的,给学习者造成很大困扰。因此本文档打算整理历年等级考试、STEMA、省赛、国赛真题卷和解析,供大家学习参考。

1578

人工智能训练师三级考试题型全解析|190道真题样例+30天备考路线

人工智能训练师三级考试并不神秘:理论考190道选择题(刷题就能过),实操考代码+方案设计(练练就会)。核心是花时间——30天系统备考,足以从容通过。如果你想从零开始系统备考,覆盖所有考点和实操技能,欢迎查看我的专栏:📖《人工智能训练师三级·从零到拿证完全指南》80篇系统化内容,覆盖报名、备考、冲刺、拿证全流程六大模块知识点逐个击破,每个考点都讲透实操代码题手把手教学,附带完整参考代码高频考点速记 + 易错题精讲 + 3套模拟试卷30天备考计划 + 冲刺复习策略。

白话机器学习 6083

Linear Programming Learning Notes (5) Duality Theory

Linear Programming Learning Notes (5) Duality Theory

Chilam的日常 684

OpenClaw 在 Docker 容器中的部署实战——零配置启动

本文介绍了OpenClaw在Docker容器中的快速部署方法,对比了本地部署与容器化部署的优势。通过官方镜像和Docker Compose两种方式,5分钟即可完成部署,并详细讲解了配置管理方案(挂载配置文件和环境变量)。文章还提供了飞书集成配置方法,以及生产环境下的日志管理、资源限制、健康检查等优化建议。最后包含常见问题排查指南,帮助开发者快速实现OpenClaw的容器化部署。

刘一说的IT专栏 906

SciPy linprog(method=‘interior-point‘) 内点法线性规划:从参数配置到原对偶路径跟踪实现解析

本篇技术指南围绕 SciPy 优化模块中 `scipy.optimize.linprog` 的 `method='interior-point'` 求解方法展开,基于官方参考文档 [optimize.linprog-interior-point.rst](https://link.gitcode.com/i/522e415dddffc1b54f603aedfdf9d86d) 及其对应的方法级文档字

gitblog_00774的博客 318

Android系统开发面试指南:系统Launcher岗位解析

本文针对上海礼聪Android系统开发岗位(侧重系统Launcher、充电/电池/USB底层开发)提供面试指南。内容涵盖应用开发(启动流程优化)、系统底层(充电状态机、USBOTG)、编程能力(线程安全LRU实现)、问题排查(ANR分析)及沟通协作等核心考点。通过5类典型问题及技术深度解析,帮助候选人系统准备,重点考察Framework源码理解、系统调试能力和工程思维。建议结合PowerManagerService等模块源码和systrace工具进行实践准备,同时注重技术表达与协作能力的展现。

郑伟强dev的专栏 935

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

cuopt API完全参考:从线性规划到混合整数规划的高效调用指南

cuopt是一款基于GPU加速的决策优化工具,提供了从线性规划(LP)到混合整数规划(MIP)的完整解决方案。通过其强大的API接口,用户可以轻松构建和求解各类优化问题,充分利用GPU的并行计算能力实现高效求解。本文将全面介绍cuopt API的核心功能、使用方法和最佳实践,帮助用户快速掌握从问题建模到结果分析的全流程。 ## cuopt API架构与核心优势 cuopt采用分层架构设计,将底

gitblog_00754的博客 668

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

数学建模实战:线性规划原理、Python/Matlab实现与运输问题求解

线性规划是运筹学与数学建模中的基础优化技术,其核心是在一组线性等式或不等式的约束条件下,寻找决策变量的最优值,以最大化或最小化一个线性目标函数。其原理基于可行域的凸多面体性质,经典算法如单纯形法通过顶点迭代寻优,内点法则从内部路径逼近。该技术价值在于模型简单、求解高效、结果可解释性强,并能提供影子价格等丰富的灵敏度分析信息,是资源分配、生产计划、投资组合和运输调度等场景的理想工具。在数学建模竞赛和工程实践中,掌握线性规划的标准化建模与SciPy、MATLAB求解器应用,是解决实际优化问题的关键第一步。本文以

weixin_34262482的博客 405

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Matlab线性规划实战:从建模到求解与调试全解析

线性规划是运筹学中的基础优化方法,其核心原理是在一组线性约束条件下,寻找线性目标函数的最优解。该技术通过数学模型将复杂的资源分配、生产调度等实际问题抽象化,具有极高的工程应用价值。在Matlab中,`linprog`函数是实现线性规划求解的核心工具,它要求问题必须转化为标准形式,即最小化目标函数,并处理不等式与等式约束。理解从问题描述到数学建模的转换过程至关重要,这包括正确定义决策变量、处理最大化与最小化的转换,以及确保约束条件的符号正确。在实际应用中,算法选择(如对偶单纯形法或内点法)、参数设置和结果验证

weixin_30516243的博客 405

MATLAB线性规划建模与求解实战:从原理到工程应用

线性规划是数学建模与优化领域的核心基础技术,用于在满足一系列线性约束条件下,寻找使线性目标函数达到最优的决策方案。其原理基于凸优化理论,通过单纯形法等算法在可行域的顶点间高效搜索全局最优解。该技术在工程与商业领域具有极高价值,广泛应用于资源分配、生产计划、投资组合等场景,能够将复杂的现实问题转化为可计算的数学模型。MATLAB的优化工具箱提供了强大的`linprog`函数,使得求解线性规划问题变得高效便捷。本文以工厂生产计划为例,详细阐述了如何将实际问题转化为标准线性规划模型,并利用MATLAB进行求解与结

benben 408

OR-Tools PDLP 求解器完全指南:基于一阶 PDHG 方法的 LP/QP 求解库

本文围绕 [ortools/pdlp/README.md](https://link.gitcode.com/i/572b6d00d58f38fa21327b470e5b02b4) 展开,系统讲解 OR-Tools 中 PDLP(Primal-Dual Hybrid Gradient Solver,原始-对偶混合梯度求解器)的库结构、数据模型、参数配置、终止条件与实战用法。读完本文,你将掌握 PD

gitblog_00633的博客 856

MILP实战指南:用混合整数线性规划解决业务优化难题

混合整数线性规划(MILP)是一种将真实业务约束转化为可计算数学模型的核心运筹学方法,适用于供应链调度、资源分配、产线排程等需同时满足整数决策与多重要求的场景。其原理在于构建线性目标函数与线性约束,并显式声明变量的整数性(如0-1开关、订单整批分配),从而在离散可行域中搜索全局最优解。相比纯线性规划(LP)的不可执行分数解,或启发式算法的黑箱近似,MILP提供可验证的最优性证明与丰富的对偶洞察(如影子价格),支撑高价值决策。典型应用包括仓库选址、广告预算分配、运输路径优化等——只要问题骨架具备线性结构(成本

chuiqi9947的博客 556
上一篇: H5序列帧动画实现过程(附源码)
下一篇: MATLAB R2016b 静默安装、激活(Ubuntu 16.04)
Zing22
博客等级 码龄12年 194粉丝 30原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值