【鲁棒优化】| 论文笔记:The Price of Robustness - 列不确定性部分的推导

本文主要是介绍【鲁棒优化】| 论文笔记:The Price of Robustness - 列不确定性部分的推导,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【鲁棒优化】| 论文笔记:The Price of Robustness - 列不确定性部分的推导

作者:刘兴禄,清华大学,博士在读

欢迎关注我们的微信公众号 运小筹

在这里插入图片描述

前言

  • 最近读者群的一个小伙伴问到了一个关于鲁棒优化经典论文中理论推导的一个小问题。该问出自近些年鲁棒优化中最为经典的论文之一:《The Price of Robustness》。
  • 我仔细地回答了这个问题,给出了本问题的一个完整、详细的推导,还专门写成了笔记。个人觉得比较有趣,这里分享给大家,希望对大家有帮助。
  • 这位读者问的问题,只根据当前文献,确实有些细节拿捏不到(但是依然可以推出来),只有结合了另外两篇更先前的论文才能顺理成章的把问题讲的更清楚。我之前读这里的时候也没有这么细究,就直接想当然的过去了,现在看来当时也是有些读得粗糙了。所以在此,我也非常感谢这位读者的提问。另外,文中涉及到提问者自己上传的图片,也是获得了使用许可的。

问题:column-wise uncertainty的模型为什么是这样?来自论文原文

这位读者的问题来源于下面的图片。

在这里插入图片描述
(图片来自文献:Bertsimas D, Sim M. The price of robustness[J]. Operations research, 2004, 52(1): 35-53.)

  • 问题
    为什么图中column-wise uncertainty下的模型是这样的?具体来讲,就是为什么会有 − y j ⩽ x j ⩽ y j -y_j \leqslant x_j \leqslant y_j yjxjyj这个约束?以及下面的部分是怎么推出来的?比如最优解时一定有 y ∗ = ∣ x ∗ ∣ y^{*}=|x^{*}| y=x,为什么?

这个问题看似不难,不就是很明显令 y = ∣ x ∣ y=|x| y=x就行嘛。但是其实是有一些隐藏细节的。

第一次看到这个问题,第一个回答者给出的解答如下图:
在这里插入图片描述
我当时也是这么认为的,另外由于忙着改书,并且也觉得这个回答确实是对的,没问题,就没仔细研究。

直到这位同学再次发出疑问:
在这里插入图片描述
(图片来自某读者)

由于没人回答,我好奇看了一眼。之后答应这位读者回答他。但是我仔细过了一遍,也觉得确实有值得探索的地方。

我自己的推导:所有详细步骤全部列举出来了

max ⁡ ∑ j c j x j s . t . ∑ j a i j x j + ∑ j ∈ J i a ^ i j y j ⩽ b i , ∀ i − y j ⩽ x j ⩽ y j , ∀ j l ⩽ x ⩽ u y ⩾ 0 \begin{aligned} \max \quad &\sum_{j}{c_jx_j} && \\ s.t. &\sum_{j}{a_{ij}x_j}+\sum_{j\in J_i}{\hat{a}_{ij}y_j}\leqslant b_i, \quad &\forall i \\ &-y_j\leqslant x_j\leqslant y_j, &&\forall j \\ &\mathbf{l}\leqslant \mathbf{x}\leqslant \mathbf{u}&& \\ &\mathbf{y}\geqslant 0&& \end{aligned} maxs.t.jcjxjjaijxj+jJia^ijyjbi,yjxjyj,lxuy0ij

我们整理约束1,得到
∑ j a i j x j + ∑ j ∈ J i a ^ i j y j ⩽ b i ⟺ ∑ j ∈ J i ( a i j x j + a ^ i j y j ) + ∑ j ∉ J i a i j x j ⩽ b i \begin{aligned} &\sum_{j}{a_{ij}x_j}+\sum_{j\in J_i}{\hat{a}_{ij}y_j}\leqslant b_i \\ \Longleftrightarrow & \\ &\sum_{j\in J_i}{\left( a_{ij}x_j+\hat{a}_{ij}y_j \right)}+\sum_{j\notin J_i}{a_{ij}x_j}\leqslant b_i \end{aligned} jaijxj+jJia^ijyjbijJi(aijxj+a^ijyj)+j/Jiaijxjbi

且约束其实等价于下面的形式
− y j ⩽ x j ⩽ y j , ∀ j ⟺ ∣ x j ∣ ⩽ y j , ∀ j \begin{aligned} &-y_j\leqslant x_j\leqslant y_j, &&\forall j \\ \Longleftrightarrow & \\ &|x_j| \leqslant y_j, &&\forall j \end{aligned} yjxjyj,xjyj,jj

由于

  1. y j ⩾ ∣ x j ∣ y_j\geqslant |x_j| yjxj
  2. 目标函数是 max ⁡ c x \max \,\, cx maxcx
  • 根据1, 2,可得,最优解中,一定有 y ∗ = ∣ x ∗ ∣ y^{*}=|x^{*}| y=x

这个说起来很直观,但是我还是来证明一下:

命题:考虑下面的问题
max ⁡ c x s . t . ∑ j a i j x j + ∑ j ∈ J i a ^ i j y j ⩽ b i , ∀ i y j ⩾ ∣ x j ∣ , ∀ j l ⩽ x ⩽ u y ⩾ 0 \begin{aligned} \max \quad & \mathbf{cx} \\ s.t. \quad & \sum_{j}{a_{ij}x_j}+\sum_{j\in J_i}{\hat{a}_{ij}y_j}\leqslant b_i, \quad &\forall i \\ &y_j \geqslant |x_j| , &&\forall j \\ &\mathbf{l}\leqslant \mathbf{x}\leqslant \mathbf{u}&& \\ &\mathbf{y}\geqslant 0&& \end{aligned} maxs.t.cxjaijxj+jJia^ijyjbi,yjxj,lxuy0ij
则在最优解中,一定有 y ∗ = ∣ x ∗ ∣ y^{*}=|x^{*}| y=x

证明
(反证法)假设最优解为 ( y ∗ , x ∗ ) (\mathbf{y}^{*}, \mathbf{x}^{*}) (y,x), 根据约束,他们一定满足 y ∗ ⩾ ∣ x ∗ ∣ \mathbf{y}^{*}\geqslant |\mathbf{x}^{*}| yx

这里包含且仅包含两种情形: y ∗ > ∣ x ∗ ∣ \mathbf{y}^{*}> |\mathbf{x}^{*}| y>x或者 y ∗ = ∣ x ∗ ∣ \mathbf{y}^{*} = |\mathbf{x}^{*}| y=x

如果最优解满足: y ∗ > ∣ x ∗ ∣ \mathbf{y}^{*} > |\mathbf{x}^{*}| y>x, 约束2显然满足。

我们再来看约束1。
∑ j a i j x j ∗ + ∑ j ∈ J i a ^ i j x j ∗ < ∑ j a i j x j ∗ + ∑ j ∈ J i a ^ i j y j ∗ ⩽ b i , ∀ i ( ∗ ) \begin{aligned} \sum_{j}{a_{ij}x_j^{*}}+\sum_{j\in J_i}{\hat{a}_{ij}x_j^{*}} < \sum_{j}{a_{ij}x_j^{*}}+\sum_{j\in J_i}{\hat{a}_{ij}y_j^{*}}\leqslant b_i, \quad &\forall i \hspace{1cm} (*) \end{aligned} jaijxj+jJia^ijxj<jaijxj+jJia^ijyjbi,i()
由于我们的目标函数是 max ⁡ c x \max \, \mathbf{cx} maxcx,而 ( ∗ ) (*) ()式显示,一定 ∃ x j ∗ \exist x_j^{*} xj还有可以增大的空间,因此我们有,必然 ∃ ( y ˉ , x ˉ ) \exist (\bar{\mathbf{y}}, \bar{\mathbf{x}}) (yˉ,xˉ)使得原问题可行(这里其实更专业的写法是写成 ∃ ( y ˉ , x ˉ ) ∈ S \exist (\bar{\mathbf{y}}, \bar{\mathbf{x}}) \in \mathbf{S} (yˉ,xˉ)S其中 S \mathbf{S} S表示上述问题的可行域,意思就是说这个也是个可行解。这里我只是提及一下), 并且使得 x ˉ \bar{\mathbf{x}} xˉ中所有分量都不小于 x ∗ \mathbf{x}^{*} x的分量,即
x ˉ j ⩾ x ˉ j ∗ , ∀ j \bar{x}_j \geqslant \bar{x}_j^{*}, \quad \forall j xˉjxˉj,j。并且至少存在一个分量大于 x ∗ \mathbf{x}^{*} x的分量,即并且 ∃ j ′ \exist j' j,满足 x ˉ j ′ > x j ′ ∗ \bar{x}_{j'} > x_{j'}^{*} xˉj>xj
由于 ( y ˉ , x ˉ ) (\bar{\mathbf{y}}, \bar{\mathbf{x}}) (yˉ,xˉ)是可行解,因此满足 (实际上这一句可以不要)
∑ j a i j x ˉ j + ∑ j ∈ J i a ^ i j y ˉ j ⩽ b i \begin{aligned} \sum_{j}{a_{ij}\bar{x}_j}+\sum_{j\in J_i}{\hat{a}_{ij}\bar{y}_j}\leqslant b_i \end{aligned} jaijxˉj+jJia^ijyˉjbi
因此,可行解 ( y ˉ , x ˉ ) (\bar{\mathbf{y}}, \bar{\mathbf{x}}) (yˉ,xˉ)必然导致 c x ˉ > c x ∗ \mathbf{c\bar{\mathbf{x}}} > \mathbf{c\mathbf{x}^{*}} cxˉ>cx,从而推出 ( y ∗ , x ∗ ) (\mathbf{y}^{*}, \mathbf{x}^{*}) (y,x)不是最优解。这与原假设矛盾。
所以,若 ( y ∗ , x ∗ ) (\mathbf{y}^{*}, \mathbf{x}^{*}) (y,x)为问题的最优解,则一定满足 y ∗ = ∣ x ∗ ∣ \mathbf{y}^{*} = |\mathbf{x}^{*}| y=x。原命题得证。

在下面的讨论中,我们就直接不加证明地使用这个结论了。

但是这个为什么就要做这个线性化了呢,现在的版本不都是 ( a i j + z i j a ^ i j ) x j (a_{ij} + z_{ij} \hat{a}_{ij}) x_j (aij+zija^ij)xj吗,其中 ( − 1 ⩽ z i j ⩽ 1 -1 \leqslant z_{ij} \leqslant 1 1zij1),这里一般都不是绝对值呀,都没怎么见过 ( a i j x j + a ^ i j ∣ x j ∣ ) (a_{ij}x_j + \hat{a}_{ij}|x_j|) (aijxj+a^ijxj)这样的形式,这里我比较好奇,想去探索一下。

一些探索:约束表达式为什么会是 ( a i j x j + a ^ i j ∣ x j ∣ ) (a_{ij}x_j + \hat{a}_{ij}|x_j|) (aijxj+a^ijxj)的形式

约束表达式为什么会是 ( a i j x j + a ^ i j ∣ x j ∣ ) (a_{ij}x_j + \hat{a}_{ij}|x_j|) (aijxj+a^ijxj)的形式?

为了搞明白这个问题,我就去调研了两篇更早的文献:

[1]: Ben-Tal A, Nemirovski A. Robust solutions of linear programming problems contaminated with uncertain data[J]. Mathematical programming, 2000, 88(3): 411-424.
[2]: Soyster A L. Convex programming with set-inclusive constraints and applications to inexact linear programming[J]. Operations research, 1973, 21(5): 1154-1157.

我从文献[1]中找到了答案。主要是根据这一段的内容:

在这里插入图片描述
(图片来自文献:Ben-Tal A, Nemirovski A. Robust solutions of linear programming problems contaminated with uncertain data[J]. Mathematical programming, 2000, 88(3): 411-424.)

以下推导,全部都省去了原论文中右端项 δ max ⁡ [ 1 , b [ i ] ] \delta \max [1, b[i]] δmax[1,b[i]]这一项。请读者周知。

上图定义了,具有不确定性的约束系数 a i j a_{ij} aij的真实值 a ~ i j \tilde{a}_{ij} a~ij的范围是 [ a i j − ϵ ∣ a i j ∣ , a i j + ϵ ∣ a i j ∣ ] [a_{ij} - \epsilon|a_{ij}|, a_{ij} + \epsilon|a_{ij}|] [aijϵaij,aij+ϵaij],因此就有
∣ a ~ i j − a i j ∣ ⩽ ϵ ∣ a i j ∣ \begin{aligned} |\tilde{a}_{ij} -a_{ij} | \leqslant \epsilon|a_{ij}| \end{aligned} a~ijaijϵaij

我们令不确定的列的下标集合为 J i J_i Ji,因此约束可以写成

∑ j ∉ J i a i j x j + ∑ j ∈ J i a ~ i j x j ⩽ b i , ∀ i \begin{aligned} \sum_{j\notin J_i}{a_{ij}x_j}+\sum_{j\in J_i}{\tilde{a}_{ij}x_j}\leqslant b_i, \forall i \end{aligned} j/Jiaijxj+jJia~ijxjbi,i

接下来就开始正式推导。

我们做一个等价变化,凑一下等式
∑ j ∉ J i a i j x j + ∑ j ∈ J i a ~ i j x j ⩽ b i , ∀ i ⟹ ∑ j ∉ J i a i j x j + ∑ j ∈ J i a i j x j + ∑ j ∈ J i ( a ~ i j − a i j ) x j ⩽ b i , ∀ i ⟹ ∑ j a i j x j + ∑ j ∈ J i ( a ~ i j − a i j ) x j ⩽ b i , ∀ i (注意第一项求和的index变化) \begin{aligned} & \sum_{j\notin J_i}{a_{ij}x_j}+\sum_{j\in J_i}{\tilde{a}_{ij}x_j}\leqslant b_i, \forall i \\ \Longrightarrow & \sum_{j\notin J_i}{a_{ij}x_j}+\sum_{j\in J_i}{a_{ij}x_j}+\sum_{j\in J_i}{\left( \tilde{a}_{ij}-a_{ij} \right) x_j}\leqslant b_i, \forall i \\ \Longrightarrow & \sum_j{a_{ij}x_j}+\sum_{j\in J_i}{\left( \tilde{a}_{ij}-a_{ij} \right) x_j}\leqslant b_i, \forall i \qquad \text{(注意第一项求和的index变化)} \end{aligned} j/Jiaijxj+jJia~ijxjbi,ij/Jiaijxj+jJiaijxj+jJi(a~ijaij)xjbi,ijaijxj+jJi(a~ijaij)xjbi,i(注意第一项求和的index变化)

我们做个标注
∑ j a i j x j + ∑ j ∈ J i ( a ~ i j − a i j ) x j ⩽ b i , ∀ i ( 1 ) \begin{aligned} \sum_j{a_{ij}x_j}+\sum_{j\in J_i}{\left( \tilde{a}_{ij}-a_{ij} \right) x_j}\leqslant b_i, \forall i \qquad (1) \end{aligned} jaijxj+jJi(a~ijaij)xjbi,i(1)

到这里,我们需要做一步放缩,上面提到
∣ a ~ i j − a i j ∣ ⩽ ϵ ∣ a i j ∣ |\tilde{a}_{ij} -a_{ij} | \leqslant \epsilon|a_{ij}| a~ijaijϵaij
因此
∣ a ~ i j − a i j ∣ ⩽ ϵ ∣ a i j ∣ ⟹ − ϵ ∣ a i j ∣ ⩽ a ~ i j − a i j ⩽ ϵ ∣ a i j ∣ \begin{aligned} &|\tilde{a}_{ij} -a_{ij} | \leqslant \epsilon|a_{ij}| \\ \Longrightarrow & -\epsilon |a_{ij}|\leqslant \tilde{a}_{ij}-a_{ij}\leqslant \epsilon |a_{ij}| \end{aligned} a~ijaijϵaijϵaija~ijaijϵaij
因此就有
( a ~ i j − a i j ) x j ⩽ ϵ ∣ a i j ∣ ∣ x j ∣ \begin{aligned} \left( \tilde{a}_{ij}-a_{ij} \right) x_j\leqslant \epsilon |a_{ij}||x_j| \end{aligned} (a~ijaij)xjϵaijxj
注意,这里一定得是乘以 ∣ x j ∣ |x_j| xj因为乘以一个 ⩾ 0 \geqslant0 0的数才能保证不等号的方向

基于此,我们对约束的左端进行放缩
∑ j a i j x j + ∑ j ∈ J i ( a ~ i j − a i j ) x j ⩽ ∑ j a i j x j + ∑ j ∈ J i ϵ ∣ a i j ∣ ∣ x j ∣ \begin{aligned} &\sum_j{a_{ij}x_j}+\sum_{j\in J_i}{\left( \tilde{a}_{ij}-a_{ij} \right) x_j} \\ \leqslant & \sum_j{a_{ij}x_j}+\sum_{j\in J_i}{\epsilon |a_{ij}||x_j|} \end{aligned} jaijxj+jJi(a~ijaij)xjjaijxj+jJiϵaijxj
而论文中说,如果后者成立,前者就成立,所以我们可以直接采取放缩后的表达式,因此约束变成。
∑ j a i j x j + ∑ j ∈ J i ϵ ∣ a i j ∣ ∣ x j ∣ ⩽ b i , ∀ i ( ∗ ) \begin{aligned} \sum_j{a_{ij}x_j}+\sum_{j\in J_i}{\epsilon |a_{ij}||x_j|} \leqslant b_i, \forall i \hspace{1cm} (*) \end{aligned} jaijxj+jJiϵaijxjbi,i()

易得, ( ∗ ) (*) () ( 1 ) (1) (1)的一个比较紧的松弛, ( ∗ ) (*) ()成立 ⟹ \Longrightarrow ( 1 ) (1) (1)成立。但是改模型是非线性的,含有绝对值,我们可以将其等价线性化。

  • 注意,目标函数为 max ⁡ c x \max \,\,\,cx maxcx

我们继续往下推。我们将上述模型线性化,去掉绝对值。线性化的方法就是

  1. 引入辅助变量 y y y代替 ∣ x ∣ |x| x,且 y ⩾ 0 y \geqslant 0 y0.
  2. 引入约束 y ⩾ x y\geqslant x yx
  3. 引入约束 y ⩾ − x y\geqslant -x yx
  • 由于目标函数为 max ⁡ c x \max \,\, cx maxcx,因此最后 y y y的取值一定会等于 ∣ x ∣ |x| x,也就是最优解中,一定有 y = ∣ x ∣ y=|x| y=x

我们基于上面的来整理一下:
y ⩾ x y\geqslant x yx y ⩾ − x y\geqslant -x yx

等价于 x ⩽ y x\leqslant y xy − y ⩽ x -y\leqslant x yx

也就是
− y ⩽ x ⩽ y \begin{aligned} -y\leqslant x \leqslant y \end{aligned} yxy

因此,我们的问题就可以等价为下面的形式

max ⁡ ∑ j c j x j s . t . ∑ j a i j x j + ∑ j ∈ J i ϵ ∣ a i j ∣ y j ⩽ b i , ∀ i − y j ⩽ x j ⩽ y j , ∀ j l ⩽ x ⩽ u y ⩾ 0 \begin{aligned} \max \quad & \sum_{j}{c_jx_j} \\ s.t. \quad& \sum_{j}{a_{ij}x_j}+\sum_{j\in J_i}{\epsilon |a_{ij}|y_j}\leqslant b_i, \forall i \\ & -y_j\leqslant x_j\leqslant y_j, \forall j \\ & \mathbf{l}\leqslant \mathbf{x}\leqslant \mathbf{u} \\ & \mathbf{y}\geqslant 0 \end{aligned} maxs.t.jcjxjjaijxj+jJiϵaijyjbi,iyjxjyj,jlxuy0

根据上文,我们令 ϵ ∣ a i j ∣ = a ^ i j \epsilon |a_{ij}| = \hat{a}_{ij} ϵaij=a^ij,则上述模型就可以写成与《The Price of Robustness》论文中完全相同的形式
max ⁡ ∑ j ∈ J c j x j s . t . ∑ j a i j x j + ∑ j ∈ J i a ^ i j y j ⩽ b i , ∀ i − y j ⩽ x j ⩽ y j , ∀ j l ⩽ x ⩽ u y ⩾ 0 \begin{aligned} \max \quad & \sum_{j\in J}{c_jx_j} \\ s.t. \quad& \sum_{j}{a_{ij}x_j}+\sum_{j\in J_i}{\hat{a}_{ij}y_j}\leqslant b_i, \forall i \\ & -y_j\leqslant x_j\leqslant y_j, \forall j \\ & \mathbf{l}\leqslant \mathbf{x}\leqslant \mathbf{u} \\ & \mathbf{y}\geqslant 0 \end{aligned} maxs.t.jJcjxjjaijxj+jJia^ijyjbi,iyjxjyj,jlxuy0

  • 注意,这个是线性化后的模型,由于是等价线性化,因此在最优解中,一定有 y ∗ = ∣ x ∗ ∣ y^{*}=|x^{*}| y=x。当然,也可以通过上面说的两个条件很明显地推出来。即
  1. y j ⩾ ∣ x j ∣ y_j\geqslant |x_j| yjxj
  2. 目标函数是 max ⁡ c x \max \,\, cx maxcx

这样就搞清楚了,为什么最开始图中的等价中出现了 ( a i j x j + a ^ i j ∣ x j ∣ ) (a_{ij}x_j + \hat{a}_{ij}|x_j|) (aijxj+a^ijxj)的形式,原来是由于那一步放缩导致的。

到这里,上面的疑惑也是探索了,但是我在看那篇更早的文献《Convex programming with set-inclusive constraints and applications to inexact linear programming》的时候,还是有一些小的体会,也顺便跟大家聊聊。

一些理解:关于column-wise uncertainty

在溯源的过程中,读到了文献《Convex programming with set-inclusive constraints and applications to inexact linear programming》,这篇论文是1972年被OR接收的。

文章探讨的问题如下:

在这里插入图片描述
在这里插入图片描述

这篇文献中,将每一列 K i K_i Ki都称之为activity sets(活动集合),然后把右端部分 K K K称之为resource set(资源集合)。

这个可能比较抽象,我们来举个例子来直观解释一下。

我们以下料问题(Cutting stock problem)为例:

以下几张图来源于笔者即将出版的教材:《运筹优化常用模型、算法及案例实战:Python+Java实现》

在这里插入图片描述

问题:
一家棒料销售公司销售 10 英寸、11 英寸和 19 英寸的棒料产品。客户需要 46个 10 英寸,22 个 11 英寸,43 个 19 英寸的产品。棒料销售公司需要截断 80 英寸的原材料棒料,来满足客户的需求,同时最小化使用棒材的根数。问该公司最好需要多少棒材,以及如何切割棒材?

下表列出了5中切割方案以及相应的数据。
在这里插入图片描述

我们基于这5个pattern,可以写出线性规划模型(这里实际上是0-1整数规划,但是由于是举例子,我们就当做是线性的)。
在这里插入图片描述
在上述模型中,右端常数向量 b b b就是resource set(资源集合)
b = [ 46 22 43 ] b=\left[ \begin{array}{c} 46\\ 22\\ 43\\ \end{array} \right] b=462243
b b b其实有很多种可能的值,上面的选取只是其中一种,论文中考虑 b b b的可选值构成一个凸集,即 K = { b ∈ R m } K = \{b \in \mathbb{R}^m\} K={bRm}是凸集。

这就是说,我们的资源是可以在这个可行域 K K K中变动,比如客户今天的需求是
b = [ 46 22 43 ] b=\left[ \begin{array}{c} 46\\ 22\\ 43\\ \end{array} \right] b=462243
明天的需求变成了
b = [ 40 26 30 ] b=\left[ \begin{array}{c} 40\\ 26\\ 30\\ \end{array} \right] b=402630
如果 b b b K K K内可以随意取值,但是其具体值我们不能提前获知,那这就是一种column-wise uncertainty

想到这里,我就越发觉得,前辈们的想法真的超级棒呀!

同样的,如果每一列,例如第4列,
a 4 = [ 5 1 1 ] \mathbf{a}_4=\left[ \begin{array}{c} 5\\ 1\\ 1\\ \end{array} \right] a4=511
这是一种切割方案,是说,切割4个长度为10英寸的,1个长度为11英寸的,1个长度为19英寸的。这不就是一种活动嘛,称之为activity set还是真的贴切。

为什么将一列约束对应的约束向量 a i \mathbf{a}_i ai的取值范围 K i K_i Kiactivity set呢?是因为作者考虑 a k \mathbf{a}_k ak的具体取值,我们也是提前不知道的,因此它也有很多种可能性,但是其可能的取值区域是一个凸集,也就是 a i ∈ K i \mathbf{a}_i \in K_i aiKi,且 K i K_i Ki是个凸集。

对于一个确定的取值 a i \mathbf{a}_i ai,作者称其为activity vector

比如,一种方案,可以是
a i = [ 5 1 1 ] \mathbf{a}_i=\left[ \begin{array}{c} 5\\ 1\\ 1\\ \end{array} \right] ai=511

他也可以是
a i = [ 8 0 0 ] \mathbf{a}_i=\left[ \begin{array}{c} 8\\ 0\\ 0\\ \end{array} \right] ai=800
所以我们想到,上述模型中 a 1 ∼ a 5 \mathbf{a}_1 \sim \mathbf{a}_5 a1a5不就是可以看做是 K i K_i Ki这个图集中的元素嘛!哈哈。

也就是说,我们考虑,我们只有80英寸这一种棒材,这一个棒材如何切割,我们也不知道。但是每一种不同的切割方案,我们都可以叫做一个activity vector,所以,我们就可以把下料问题建模成为下面的问题

max ⁡ x 1 s . t . x 1 K 1 ⊂ K x 1 ⩾ 0 \begin{aligned} \max \quad & x_1 \\ s.t. \quad& x _1 K_1 \subset K \\ &x_1\geqslant 0 \end{aligned} maxs.t.x1x1K1Kx10

如果我们有80英寸和100英寸两种棒材,则可以写为
max ⁡ x 1 + x 2 s . t . x 1 K 1 + x 2 K 2 ⊂ K x 1 ⩾ 0 \begin{aligned} \max \quad & x_1 + x_2 \\ s.t. \quad& x _1 K_1 + x _2 K_2 \subset K \\ &x_1\geqslant 0 \end{aligned} maxs.t.x1+x2x1K1+x2K2Kx10
如果说,我们考虑:如果可以在每一个activity set中选择任意的activity vector,则问题就变化为
max ⁡ x 1 + x 2 s . t . x 1 a 1 + x 2 a 2 ⩾ b x 1 ⩾ 0 \begin{aligned} \max \quad & x_1 + x_2 \\ s.t. \quad& x _1 \mathbf{a}_1 + x _2 \mathbf{a}_2 \geqslant \mathbf{b} \\ &x_1\geqslant 0 \end{aligned} maxs.t.x1+x2x1a1+x2a2bx10
其中 a 1 ∈ K 1 \mathbf{a}_1 \in K_1 a1K1, a 2 ∈ K 2 \mathbf{a}_2 \in K_2 a2K2

由于最后具体选择到的activity vector是哪个,我们也不知道,因此约束列向量是可以视为column-wise uncertainty的。

另外,由于每一列就是一个切割方案,因此这一列的可行方案可以通过求解下面的线性规划得到 (这里其实应该是整数规划,但是我们就姑且将其当成线性规划):

min ⁡ 1 s . t . 10 a 1 + 11 a 2 + 19 a 3 ⩽ 80 a 1 , a 2 , a 3 ⩾ 0 \begin{aligned} \min \quad & 1 \\ s.t. \quad& 10a_1+11a_2+19a_3\leqslant 80 \\ &a_1,a_2,a_3\geqslant 0 \end{aligned} mins.t.110a1+11a2+19a380a1,a2,a30

我们令 a 1 = ( a 1 , a 2 , a 3 ) T \mathbf{a}_1 = (a_1, a_2, a_3)^T a1=(a1,a2,a3)T。由于线性规划的可行域是一个凸多面体,当然也就是一个凸集。因此,这就完全符合我们的假设,也就是 a 1 \mathbf{a}_1 a1的活动集合activity set
K 1 = { a 1 ∣ min ⁡ 1 , s . t . 10 a 1 + 11 a 2 + 19 a 3 ⩽ 80 ; a 1 , a 2 , a 3 ⩾ 0 } K_1 = \{ \mathbf{a}_1 | \min \,\, 1, s.t. 10a_1+11a_2+19a_3\leqslant 80; a_1,a_2,a_3\geqslant 0\} K1={a1min1,s.t.10a1+11a2+19a380;a1,a2,a30}
是凸集。而 a 1 \mathbf{a}_1 a1的的具体取值,可以是 K 1 K_1 K1中的任何值,这就是一种column-wise uncertainty。我们无法提前准确获知约束矩阵中的每一列的系数。

到这里,我们是不是对column-wise uncertainty有了一些更加直观的理解。

我觉得从列生成的角度,理解起来确实更有趣一些。我们确实决定要去用80英寸和100英寸的两种棒材去制作产品,但是具体怎么切割,我们也不知道,最后采用了哪种切割方案(也就是选了哪个activity vector),我们事先也不能确定。这种不能事先确定列约束向量的情况,也是很有趣呢。

小结

好了,到这里,今天的分享就到此结束吧,希望之后哟更多的小伙伴来提一些有趣的问题。

另外,通过读论文,有学到了一些起名字的经验,比如这里涉及到的resource setactivity set等的,都是很形象很有趣。

参考文献

[1]: Ben-Tal A, Nemirovski A. Robust solutions of linear programming problems contaminated with uncertain data[J]. Mathematical programming, 2000, 88(3): 411-424.
[2]: Soyster A L. Convex programming with set-inclusive constraints and applications to inexact linear programming[J]. Operations research, 1973, 21(5): 1154-1157.
[3]: Bertsimas D, Sim M. The price of robustness[J]. Operations research, 2004, 52(1): 35-53.


** 作者: 刘兴禄, 清华大学博士在读**


欢迎关注我们的微信公众号 运小筹

在这里插入图片描述

公众号往期推文如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这篇关于【鲁棒优化】| 论文笔记:The Price of Robustness - 列不确定性部分的推导的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/231377

相关文章

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl