首先,两阶段鲁棒优化问题的构造为:
min
y
c
T
y
+
max
u
∈
U
min
x
∈
F
(
y
,
u
)
b
T
x
s.t.
Ay
≥
d
,
y
∈
S
y
F
(
y
,
u
)
=
{
x
∈
S
x
:
Gx
≥
h
−
Ey
−
M
u
}
然后把这个问题变为一个主问题和子问题的组合。
考虑第二阶段决策问题为 x \mathbf{x} x的一个线性规划问题.
首先考虑一个相对完整的补偿假设,即这个线性规划对任意给定的 y \mathbf{y} y和 u u u是可行的。
假设 π \pi π是对偶变量,
从而获得其对偶问题:最大化问题,并且可以与u的最大化问题合并。
于是可以获得以下问题,导出Benders对偶方法的子问题。
S
P
1
:
Q
(
y
)
=
max
u
,
π
{
(
h
−
E
y
−
M
u
)
T
π
:
G
T
π
≤
b
,
u
∈
U
,
π
≥
0
}
.
这个对偶子问题出现了双线性项:
M
u
T
π
\mathbf{M}u^T\pi
MuTπ.由于这两个值都是正数,所以需要用一些特殊的手段求解,比如说启发式方法,比如说一些特殊结构的
U
\mathcal{U}
U可以解。在这里略去相关的解法,只关注与算法本身,假设这个问题是可解的。
解对偶子问题获得割平面。对于给定的 y k ∗ y_{k}^{*} yk∗(这一块可以从主问题中获得),可以取得 ( u k ∗ , π k ∗ ) (u^*_k, \pi^*_k) (uk∗,πk∗),从而使 Q ( y k ∗ ) \mathcal{Q}(\mathbf{y}_k^*) Q(yk∗)在该条件下达到最优。
割平面的形式为:
η
≥
(
h
−
E
y
−
M
u
k
∗
)
T
π
k
∗
什么意思的?我的理解是取得了其中的一个下界。因为对偶子问题不是要取得最大值吗,他现在只是在一种情况里面取得了最大值,那我就是说我更新了我的一个下界,因为原来他是可以取得比这个还小的值的。
换言之,子问题可以有无数种情况,但是,现取得了其中一种情况的最大值,必可知实际上所有情况的最大值肯定是在这个最大值或者这个最大值以上。暂且作为子问题的最大值带进来求解主问题(这是后话)。所以现在这么定义割平面。
那么主问题的形式为:
min
y
,
η
c
T
y
+
η
s.t.
A
y
≥
d
η
≥
(
h
−
E
y
−
M
u
k
∗
)
T
π
k
∗
,
∀
l
≤
k
y
∈
S
y
,
η
∈
R
从主问题中可以计算出最优解
(
y
k
+
1
∗
,
η
k
+
1
∗
)
(\mathbf{y}^*_{k+1}, \eta_{k+1}^*)
(yk+1∗,ηk+1∗)。
已知 c T y k ∗ + Q ( y k ∗ ) \mathbf{c}^T\mathbf{y}_k^*+\mathcal{Q}(y_k^*) cTyk∗+Q(yk∗)提供了一个上界。 c T y k ∗ + η k + 1 ∗ \mathbf{c}^T\mathbf{y}_k^*+\eta_{k+1}^* cTyk∗+ηk+1∗提供了一个下界。
已知前述上界是根据主问题提出。前面的下界是根据子问题提出。似乎可以通过PPT去表示清楚这层关系.
下面针对一个特定的问题,写Benders分解程序。
案例
确定性问题形式表示如下:
min
400
y
0
+
414
y
1
+
326
y
2
+
18
z
0
+
25
z
1
+
20
z
2
+
22
x
00
+
33
x
01
+
24
x
02
+
33
x
10
+
23
x
11
+
30
x
12
+
20
x
20
+
25
x
21
+
27
x
22
s.t.
z
i
≤
800
y
i
,
i
=
0
,
1
,
2
,
∑
j
x
i
j
≤
z
i
,
i
=
0
,
1
,
2
,
j
=
0
,
1
,
2
,
∑
i
x
i
j
≥
d
j
,
j
=
0
,
1
,
2
,
i
=
0
,
1
,
2
,
y
i
∈
{
0
,
1
}
,
i
=
0
,
1
,
2
,
z
i
≥
0
,
i
=
0
,
1
,
2
,
x
i
j
≥
0
,
i
=
0
,
1
,
2
,
j
=
0
,
1
,
2.
不确定性集合定义如下所示:
D
=
{
d
∣
d
0
=
206
+
40
g
0
,
d
1
=
274
+
40
g
1
,
d
2
=
220
+
40
g
2
,
0
≤
g
0
≤
1
,
0
≤
g
1
≤
1
,
0
≤
g
2
≤
1
,
g
0
+
g
1
+
g
2
≤
1.8
,
g
0
+
g
1
≤
1.2
}
.
以下首先定义参数,接下来是设置主问题和子问题。
子问题:
S
P
1
:
Q
(
y
)
=
max
u
,
π
{
(
h
−
E
y
−
M
u
)
T
π
:
G
T
π
≤
b
,
u
∈
U
,
π
≥
0
}
.
和一开始的步骤一样,此处现将上界
U
B
UB
UB设置为
+
∞
+\infty
+∞,将下界
L
B
LB
LB设置为
−
∞
-\infty
−∞,变量的数量
k
k
k设置为1,并且将变量的集合设置为空向量,以备后来补充。并设置主问题。
可以看成双层规划,下层的模型是:
(原问题)
max
u
∈
U
min
x
b
T
x
s.t.
x
∈
F
(
y
,
u
)
F
(
y
,
u
)
=
{
x
∈
S
x
:
G
x
≥
h
−
E
y
−
M
u
}
化成标准形式:
max
u
∈
U
min
x
b
T
x
s.t.
x
∈
S
x
:
(
h
−
E
y
−
M
u
)
−
G
x
≤
0
:
π
(对偶问题)
max
u
∈
U
,
π
{
(
h
−
E
y
−
M
u
)
T
π
}
s.t.
G
T
π
≤
b
:
x
π
≥
0
化成标准形式:
max
u
∈
U
,
π
{
(
h
−
E
y
−
M
u
)
T
π
}
s.t.
G
T
π
−
b
≤
0
:
x
−
π
≤
0
考虑到
(
b
−
G
T
π
)
x
=
0
(b - G^T \pi) x = 0
(b−GTπ)x=0, 设置辅助变量
u
u
u;考虑到
(
(
h
−
E
y
−
M
u
)
−
G
x
)
π
=
0
(( h - Ey - Mu ) - Gx)\pi = 0
((h−Ey−Mu)−Gx)π=0,设置辅助变量
v
v
v。但是为什么需要有一个这个原问题和对偶问题的变量相乘的形式还不是很清楚。