线性规划之对偶问题

Posted by ZhengYang on 2016-08-15

首先明确一下,很多凸优化问题都可以通过对偶问题来求解(SVM),线性规划只是一个特例。而且线性规划的对偶问题,可以用拉格朗日对偶理论导出。

为什么要进行对偶问题?

线性规划中,如果原始问题约束条件多,决策变量少,转换为对偶问题约束变少了,更好求解。

一个对偶问题的例子

产品 产品A1 产品A2 资源量 资源价格(影子价格)
设备B1 5 10 40台 y1
材料B2 2 0 8吨 y2
材料B3 0 6 18吨 y3
利润 4万元 6万元
产量 x1 x2

原问题

Max:s = 4x1 + 6x2
s.t.
5x1 + 10x2 <= 40
2*x1 <= 8
6*x2 <= 18
x1 >= 0
x2 >= 0

对偶问题

Min: w = 40y1 + 8y2 + 18*y3
s.t.
5y1 + 2y2 >= 4
10y1 + 6y3 >= 6
y1 >= 0
y2 >= 0
y3 >= 0

对偶问题的经济学解释

原问题

  • 直观解释:我自己加工,卖产品,得利润
  • 约束:每个产品里的成本量,必须满足小于资源总量
  • 目标:最大利润

对偶问题

  • 直观解释:别人委托我加工,付给我资源使用费
  • 约束:对于我来说,每个产品的资源使用费一定要高于该产品的利润,否则我会自己加工。
  • 目标:获得更多的委托,间接表示为资源使用费最小。
    (从需求供给上来考虑,我的资源使用费必须尽可能的小,才能接收到更多的委托,才能得到更多的资源使用费)

当委托加工的目标函数降到最小时,就等同于自己加工利润的最大值。所以说,上述对偶问题是原问题的上界。

影子价格?

对偶问题的解,相当于原规划中各种资源的价值,称为影子价格(Shadow price),是对资源价值的一个估价。影子价格又称边际价值(Marginal Value)。

  • 影子价格为0的资源,是系统中的长线资源,其供应的继续扩大(对偶问题目标函数的资源量,eg,40),并不能使系统的最大收益有所增加;
  • 影子价格大于0的资源,则是系统中的短线资源,它的供应的扩大,将使系统中的最大收益增加。

影子价格不是资源的市场价格,也不是会计帐面上的数字,而是经济分析中使用的一个概念,是用以分析某种资源在系统中所起的作用。

拉格朗日对偶中的理论解释

原问题

Max:s = 4x1 + 6x2
s.t.
5x1 + 10x2 <= 40
2*x1 <= 8
6*x2 <= 18
x1 >= 0
x2 >= 0

优化问题一般是求极小值,因此转化一下原问题的目标函数和约束,得到原问题1。

原问题1

Min:s = -4x1 - 6x2
s.t.
5x1 + 10x2 - 40 <= 0
2*x1 - 8 <= 0
6*x2 - 18 <= 0
-x1 <= 0
-x2 <= 0

拉格朗日对偶问题,先min,后max

构造拉格朗日函数,
Max L = -4*x1-6*x2 + y1*(5*x1+10*x2-40) + y2*(2*x1-8) + y3*(6*x2-18) + y4*(-x1) + y5*(-x2)

分别对x1和x2求偏导,得到

-4 + 5y1 + 2y2 - y4 = 0

-6 + 10y1 + 6y3 – y5 = 0

Y1,y2,y3,y4,y5>=0

将y4和y5用y1,y2,y3替换得

y4 = -4 + 5y1 + 2y2 >= 0

y5 = -6 + 10y1 + 6y3 >=0

y1,y2,y3>=0

将L函数中的y4,y5用y1,y2,y3替换得

L = -4*x1-6*x2 + y1*(5*x1+10*x2-40) + y2*(2*x1-8) + y3*(6*x2-18) +
(-4+5*y1+2*y2)*(-x1) + (-6+10*y1+6*y3)*(-x2)

化简L,得
L=-40*y1-8*y2-18*y3

所以,拉格朗日对偶问题为,

Max L = -40y1 - 8y2 - 18*y3
s.t.
-4 + 5y1 + 2y2 >= 0
-6 + 10y1 + 6y3 >=0
y1,y2,y3 >= 0

整理一下,得线性规划对偶问题的形式

Min: L = 40y1 + 8y2 + 18*y3
s.t.
5y1 + 2y2 >= 4
10y1 + 6y3 >= 6
y1 >= 0
y2 >= 0
y3 >= 0

所以,可以看出线性规划的对偶问题,是拉格朗日对偶的一个特例。