目录
前言
在南方科技大学学习何炳生老师的数值分析课程期间有很多收获与感悟,由衷的感谢何老师的谆谆教导,当然我希望能将课程中所学习到的,能应用到未来科研和工作中的这部分知识,以学习笔记的方式记录下来,也希望能通过这种帖子将自己作为小白对于这些知识的通俗理解分享给大家,文中一些不够准确或错误的表达,还望大家指证。
【数值分析】学习笔记目录
本章节将分享凸优化的进阶知识——拉格朗日函数及变分不等式
一.线性约束的凸优化问题(一个凸函数+线性约束条件)
1.一个实例
在上一篇笔记中,我们提到了,在我们生活中很多凸优化问题除了函数自身的限制以外,还一般存在一个条件约束,需要同时满足两个条件的点才会是我们需要的最优解点,为方便大家理解,这里借用何老师课堂上的一个例子来进行说明:
背景:某饲料场需要购买一批粮食来配置动物们的饲料
要求:饲料需要满足动物所需的营养要求,其中淀粉2100千克,蛋白质600千克
目前已知市场上总共出售三种粮食(玉米、小麦、大豆)【j=1,2,3】,三种粮食每公斤的价格
c
j
c_{j}
cj以及营养成分
a
i
j
a_{ij}
aij如表所示,设三种粮食的采购量为
x
j
x_{j}
xj,请问如何在满足营养要求(线性约束条件)的情况下,购买粮食,并且花费尽可能少的钱(凸函数)?
含量 | 玉米 x 1 x_{1} x1 | 小麦 x 2 x_{2} x2 | 大豆 x 3 x_{3} x3 | 总需求量 |
---|---|---|---|---|
淀粉 | a 11 = 0.50 a_{11}=0.50 a11=0.50 | a 12 = 0.50 a_{12}=0.50 a12=0.50 | a 13 = 0.20 a_{13}=0.20 a13=0.20 | 2100 |
蛋白质 | a 21 = 0.10 a_{21}=0.10 a21=0.10 | a 22 = 0.12 a_{22}=0.12 a22=0.12 | a 23 = 0.40 a_{23}=0.40 a23=0.40 | 600 |
单价 | c 1 = 3 c_{1}=3 c1=3 | c 2 = 4 c_{2}=4 c2=4 | c 3 = 8.4 c_{3}=8.4 c3=8.4 |
设总的花费为
θ
(
x
)
=
c
T
x
\theta(x)=c^{T}x
θ(x)=cTx,营养需求为
b
b
b,那这个问题的数学表达可以写为
arg
min
{
θ
(
x
)
∣
A
x
=
b
,
x
∈
X
}
\arg \min \{\theta(x) \mid A x=b, x \in \mathcal{X}\}
argmin{θ(x)∣Ax=b,x∈X}这就是一个典型线性约束的凸优化问题,那它的最优解位于哪里(即求其最优性条件)呢?
这个问题其实和上一篇笔记中两个凸函数的凸优化问题是有异曲同工之处的,区别只在于,那个问题是求两个函数之和的最小,而此处我们需要一个最小的同时,另一个足够大满足甚至超过我们的要求,即min-max思想。除此之外这个问题还有一个难点就是在于,我们该如何表达出后面线性约束 A x = b Ax=b Ax=b 的最优性条件。
2.对偶问题
要求解上面这个问题,我们最需要去做的就是,将线性约束式与前面的凸函数式联立起来,得到一个新的函数表达式,再根据那个函数来求其最优解点。而如何联立两者,我们需要引入一个新的问题来方便理解,即它的对偶问题(Dual Problem),上面的问题则被称为原始问题(Primal Problem)。
背景:一家营养素公司,打算做饲料场的生意,他们可以直接供给淀粉营养素和蛋白质营养素,由于要能做成生意,他们保证配置同样的营养成分,买营养素是不会高于市场粮食价格的,设公司对两种营养素的价格设定分别为 y 1 , y 2 y_{1}, y_{2} y1,y2,请问该怎么设定价格可以实现最大的盈利。
含量 | 玉米 x 1 x_{1} x1 | 小麦 x 2 x_{2} x2 | 大豆 x 3 x_{3} x3 | 营养素价格 |
---|---|---|---|---|
淀粉 | a 11 = 0.50 a_{11}=0.50 a11=0.50 | a 12 = 0.50 a_{12}=0.50 a12=0.50 | a 13 = 0.20 a_{13}=0.20 a13=0.20 | y 1 y_{1} y1 |
蛋白质 | a 21 = 0.10 a_{21}=0.10 a21=0.10 | a 22 = 0.12 a_{22}=0.12 a22=0.12 | a 23 = 0.40 a_{23}=0.40 a23=0.40 | y 2 y_{2} y2 |
单价 | c 1 = 3 c_{1}=3 c1=3 | c 2 = 4 c_{2}=4 c2=4 | c 3 = 8.4 c_{3}=8.4 c3=8.4 |
根据其背景,设其最大盈利为
ψ
(
y
)
=
b
T
y
\psi(y)=b^{T}y
ψ(y)=bTy,我们可以得到这个对偶问题的数学表达为:
arg
max
{
ψ
(
y
)
∣
A
T
y
≤
c
,
x
∈
X
}
\arg \max \{\psi(y) \mid A^{T} y\leq c, x \in \mathcal{X}\}
argmax{ψ(y)∣ATy≤c,x∈X}总结两个问题的线性约束条件,可以得到
- 买方要实现营养要求: A x = b , x ≥ 0 A x=b,x\geq 0 Ax=b,x≥0
- 卖方要实现价格承诺: A T y ≤ c A^{T} y\leq c ATy≤c
由于
x
≥
0
x\geq 0
x≥0,将其乘到下面可以得到
x
T
(
c
−
A
T
y
)
≥
0
⇒
c
T
x
≥
y
T
A
x
⇒
c
T
x
≥
b
T
y
x^{T}\left(c-A^{T} y\right) \geq 0\Rightarrow c^{T} x \geq y^{T} A x\Rightarrow c^{T} x \geq b^{T} y
xT(c−ATy)≥0⇒cTx≥yTAx⇒cTx≥bTy即双方均有诚意时,买方要花的钱
≥
\geq
≥卖方能挣的钱,也就是当双方共赢时,此时买方最省钱,卖方最大利润。
利用该公式我们即可将两者的线性约束条件进行联立,转换为类似上一篇笔记中两个凸函数的凸优化问题。当然只是做到类似,因为这里的 θ ( x ) , ψ ( y ) \theta(x), \psi(y) θ(x),ψ(y)并不是简单相加的关系,两者的关系需要通过拉格朗日函数来进行表达。
二.拉格朗日函数与鞍点
1.拉格朗日函数
拉格朗日函数的提出与具体算术推导,这里由于个人能力问题就不展开了,如有兴趣推荐阅读第一篇参考引用中的文献。由于在上一节中我们利用对偶问题的思想,可以将线性约束条件与凸函数联立起来,如此一来,原本的两个要求(即 min θ ( x ) \min \theta(x) minθ(x)和 A x = b , x ≥ 0 A x=b,x\geq 0 Ax=b,x≥0)即可通过一个函数来进行表征,这个函数即拉格朗日函数,这是定义在 ℜ + n × ℜ m \Re_{+}^{n} \times \Re^{m} ℜ+n×ℜm上的函数,即
此处n即为 x x x的维数,m为 y y y的维数
L
(
x
,
y
)
=
c
T
x
−
y
T
(
A
x
−
b
)
L(x, y)=c^{T} x-y^{T}(A x-b)
L(x,y)=cTx−yT(Ax−b)由于这里的
x
x
x是原始问题(花费最少),即min问题的待求解,而
y
y
y是对偶问题,即max问题的待求解,因此对于拉格朗日函数而言,其最优解位置并不是极大值点或者极小值点,而是位于一个鞍点(Saddle Point)处,为方便理解,这里将鞍点与拉格朗日函数具象化,其大概长这个样子,而这个形态也很大程度上说明了,双赢即最优解!
2.鞍点
鞍点实质是一个奇点,其从一个维度(从卖方角度)看满足了极大的特性,从另一个维度(从买方角度)看则满足了极小的特性,结合第一节中的问题,鞍点定义为:
如果
x
∗
∈
ℜ
+
n
x^* \in \Re_{+}^{n}
x∗∈ℜ+n 和
y
∗
∈
ℜ
m
y^* \in \Re^{m}
y∗∈ℜm满足
L
y
∈
ℜ
m
(
x
∗
,
y
)
≤
L
(
x
∗
,
y
∗
)
≤
L
x
∈
ℜ
+
n
(
x
,
y
∗
)
L_{y \in \Re^{m}}\left(x^{*}, y\right) \leq L\left(x^{*}, y^{*}\right) \leq L_{x \in \Re_{+}^{n}}\left(x, y^{*}\right)
Ly∈ℜm(x∗,y)≤L(x∗,y∗)≤Lx∈ℜ+n(x,y∗)则称
(
x
∗
,
y
∗
)
\left(x^{*}, y^{*}\right)
(x∗,y∗)是拉格朗日函数
L
(
x
,
y
)
L(x, y)
L(x,y)在
ℜ
+
n
×
ℜ
m
\Re_{+}^{n} \times \Re^{m}
ℜ+n×ℜm上的一个鞍点。
为方便理解,不等式的前半部分 L y ∈ ℜ m ( x ∗ , y ) L_{y \in \Re^{m}}\left(x^{*}, y\right) Ly∈ℜm(x∗,y)可以理解为只考虑买方省钱,不考虑卖方受益的情况,即只考虑原始问题无约束下的最优解;后半部分 L x ∈ ℜ + n ( x , y ∗ ) L_{x \in \Re_{+}^{n}}\left(x, y^{*}\right) Lx∈ℜ+n(x,y∗)可以理解为只考虑卖方赚钱,不考虑买方省钱的情况,即只考虑对偶问题无约束下的最优解。由于实际最优解是双赢因此,鞍点肯定是位于两者之间的
换句话说,鞍点就是同时满足以下两个优化子问题的一个特殊点
{
x
∗
=
arg
min
{
L
(
x
,
y
∗
)
∣
x
∈
ℜ
+
n
}
y
∗
=
arg
max
{
L
(
x
∗
,
y
)
∣
y
∈
ℜ
m
}
\left\{\begin{aligned} x^{*} &=\arg \min \left\{L\left(x, y^{*}\right) \mid x \in \Re_{+}^{n}\right\} \\ y^{*} &=\arg \max \left\{L\left(x^{*}, y\right) \mid y \in \Re^{m}\right\} \end{aligned}\right.
{x∗y∗=argmin{L(x,y∗)∣x∈ℜ+n}=argmax{L(x∗,y)∣y∈ℜm}将上式结合上一篇学习笔记中根据凸函数性质得到的最优性条件不等式表达,上式可以被整理为
{
x
∗
≥
0
,
L
(
x
,
y
∗
)
−
L
(
x
∗
,
y
∗
)
≥
0
,
∀
x
≥
0
;
y
∗
∈
ℜ
m
,
L
(
x
∗
,
y
∗
)
−
L
(
x
∗
,
y
)
≥
0
,
∀
y
∈
ℜ
m
.
\left\{\begin{array}{r} x^{*} \geq 0, \quad L\left(x, y^{*}\right)-L\left(x^{*}, y^{*}\right) \geq 0, \quad \forall x \geq 0 ; \\ y^{*} \in \Re^{m}, \quad L\left(x^{*}, y^{*}\right)-L\left(x^{*}, y\right) \geq 0, \quad \forall y \in \Re^{m} . \end{array}\right.
{x∗≥0,L(x,y∗)−L(x∗,y∗)≥0,∀x≥0;y∗∈ℜm,L(x∗,y∗)−L(x∗,y)≥0,∀y∈ℜm.将拉格朗日函数式代入则有
{
x
∗
≥
0
,
(
x
−
x
∗
)
T
(
c
−
A
T
y
∗
)
≥
0
,
∀
x
≥
0
;
y
∗
∈
ℜ
m
,
(
y
−
y
∗
)
T
(
A
x
∗
−
b
)
≥
0
,
∀
y
∈
ℜ
m
.
\left\{\begin{array}{r} x^{*} \geq 0, \quad\left(x-x^{*}\right)^{T}\left(c-A^{T} y^{*}\right) \geq 0, \quad \forall x \geq 0 ; \\ y^{*} \in \Re^{m}, \quad\left(y-y^{*}\right)^{T}\left(A x^{*}-b\right) \geq 0, \quad \forall y \in \Re^{m} . \end{array}\right.
{x∗≥0,(x−x∗)T(c−ATy∗)≥0,∀x≥0;y∗∈ℜm,(y−y∗)T(Ax∗−b)≥0,∀y∈ℜm.即当一个点满足上述不等式表达,则其就可以被看做是一个鞍点,即问题的最优解点,而上述不等式正是其最优性条件!
三.变分不等式(Variational Inequality,VI)
如果你已经理解了上面的知识内容,那变分不等式其实就是个小概念罢了,可以看到基于鞍点和拉格朗日函数,线性约束的凸优化问题
arg
min
{
θ
(
x
)
∣
A
x
=
b
,
x
∈
X
}
\arg \min \{\theta(x) \mid A x=b, x \in \mathcal{X}\}
argmin{θ(x)∣Ax=b,x∈X}的最优性条件已经得到了,但这个表达还是不够简洁,为了规范化表达以及简化表述,我们将刚刚的不等式组进行整理,用
λ
\lambda
λ替换之前的
y
y
y,则有
{
x
∗
∈
X
,
θ
(
x
)
−
θ
(
x
∗
)
+
(
x
−
x
∗
)
T
(
−
A
T
λ
∗
)
≥
0
,
∀
x
∈
X
λ
∗
∈
Λ
,
(
λ
−
λ
∗
)
T
(
A
x
∗
−
b
)
≥
0
,
∀
λ
∈
Λ
.
\left\{\begin{array}{ll} x^{*} \in \mathcal{X}, \quad \theta(x)-\theta\left(x^{*}\right)+& \left(x-x^{*}\right)^{T}\left(-A^{T} \lambda^{*}\right) \geq 0, \quad \forall x \in \mathcal{X}\\ \lambda^{*} \in \Lambda, & \left(\lambda-\lambda^{*}\right)^{T}\left(A x^{*}-b\right) \geq 0, \quad \forall \lambda \in \Lambda . \end{array}\right.
{x∗∈X,θ(x)−θ(x∗)+λ∗∈Λ,(x−x∗)T(−ATλ∗)≥0,∀x∈X(λ−λ∗)T(Ax∗−b)≥0,∀λ∈Λ.将两者写为线性表达的的形式,即可表示成为一个单调的(混合)变分不等式:
w
∗
∈
X
,
θ
(
x
)
−
θ
(
x
∗
)
+
(
w
−
w
∗
)
T
F
(
w
∗
)
≥
0
,
∀
w
∈
Ω
w^{*} \in \mathcal{X}, \quad \theta(x)-\theta\left(x^{*}\right)+ \left(w-w^{*}\right)^{T}F(w^*)\geq 0, \quad \forall w \in \mathcal{\Omega}
w∗∈X,θ(x)−θ(x∗)+(w−w∗)TF(w∗)≥0,∀w∈Ω其中
w
=
(
x
λ
)
w=\begin{pmatrix} x\\ \lambda \end{pmatrix}
w=(xλ),
F
(
w
∗
)
=
(
−
A
T
λ
∗
A
x
∗
−
b
)
F(w^*)=\begin{pmatrix} -A^{T} \lambda^{*}\\ A x^{*}-b \end{pmatrix}
F(w∗)=(−ATλ∗Ax∗−b),
Ω
=
X
×
Λ
\Omega=\mathcal{X} \times \Lambda
Ω=X×Λ。如此一来,任何一个凸函数+一个线性约束条件线性约束的凸优化问题,其最优解需要满足的条件均可以用其VI来进行表达,从而设定了求解问题的目标。在下一篇笔记就是用什么样的方法去达成这个目标,将从问题的最优性条件出发,具体探讨如何根据变分不等式,求解其最优解。
五.参考引用
- Beavis B, Dobbs I. Optimisation and stability theory for economic analysis[M]. Cambridge university press, 1990.