当前位置: 首页 > article >正文

线性规划中可行域为什么一定是凸的--证明

线性规划中的凸性证明

线性规划中可行域是凸的,这是自然能够想到和容易理解的道理。直观上,线性约束定义的可行域是由半平面的交集构成的,这些半平面的交集总是形成凸区域。

这么一个自然想到、容易理解的道理,怎么从数学上完备地证明它?下面的内容为此作答。

准备知识:

凸集的定义:如果集合 C C C中任意两点 X 1 X_1 X1 X 2 X_2 X2,其连线上的所有点也都在集合 C C C中,称 C C C为凸集.

为了更好地理解凸集,下面给出一些凸集和凹集的示例:

线性规划的标准型

m a x z = ∑ j = 1 n c j x j s . t . { ∑ j = 1 n a i j x j = b j x j ≥ 0 max \quad z= \sum_{j=1}^{n}c_{j}x_j \\ s.t. \left\{\begin{array}{l} {\sum_{j=1}^{n}a_{ij}x_j=b_j} \\ x_j \ge 0 \\ \end{array}\right. maxz=j=1ncjxjs.t.{j=1naijxj=bjxj0

证明

命题:如果线性规划中存在可行解,则可行解组成的可行域是凸集。

证明思路:任意假设两个可行解,证明其连线上的所有点仍属于可行域,即满足约束。

证明过程
步骤一:设任意两点,并给出满足约束的方程

  • X 1 = ( x 11 , x 12 , … , x 1 n ) T X_1=(x_{11},x_{12},\dots,x_{1n})^T X1=(x11,x12,,x1n)T, X 2 = ( x 21 , x 22 , … , x 2 n ) T X_2=(x_{21},x_{22},\dots,x_{2n})^T X2=(x21,x22,,x2n)T为可行域内任意两点,其满足
    { ∑ j = 1 n a i j x 1 j = b j ∑ j = 1 n a i j x 2 j = b j \left\{\begin{array}{l} \sum_{j=1}^n a_{ij}x_{1j}=b_j \\ \sum_{j=1}^n a_{ij}x_{2j}=b_j \\ \end{array}\right. {j=1naijx1j=bjj=1naijx2j=bj

步骤二:设连线上的任意一点,并给出与两点的关系方程

  • 连线上的任意点 X = ( x 1 , x 2 , … , x n ) T X=(x_{1},x_{2},\dots,x_{n})^T X=(x1,x2,,xn)T 的表示
    X = k ( X 1 − X 2 ) + X 2 , 0 ≤ k ≤ 1 X=k(X_1-X_2)+X_2, \quad 0 \leq k \leq1 X=k(X1X2)+X2,0k1
    这一步如果不好理解,可以看下面的解释:
    在这里插入图片描述

步骤三:判断 X X X 是否满足约束条件
∑ j = 1 n a i j x j = ∑ j = 1 n a i j ( k ( x 1 j − x 2 j ) + x 2 j ) = k ∑ j = 1 n a i j x 1 j − k ∑ j = 1 n a i j x 2 j + ∑ j = 1 n a i j x 2 j = k b j − k b j + b j = b j \begin{aligned} \sum_{j=1}^n a_{ij}x_{j}&=\sum_{j=1}^n a_{ij}(k(x_{1j}-x_{2j})+x_{2j}) \\ &= k\sum_{j=1}^n a_{ij} x_{1j} - k\sum_{j=1}^n a_{ij} x_{2j} + \sum_{j=1}^n a_{ij} x_{2j} \\ &= k b_j - k b_j + b_j \\ & = b_j \end{aligned} j=1naijxj=j=1naij(k(x1jx2j)+x2j)=kj=1naijx1jkj=1naijx2j+j=1naijx2j=kbjkbj+bj=bj
因此, X X X 在可行域内。这证明了连线上的任意点均在可行域内,即可行域是凸集。

证毕!


参考资料:

  • 胡运权主编的第五版《运筹学教程》

文档源码:

## 线性规划中的凸性证明
**线性规划中可行域是凸的**,这是自然能够想到和容易理解的道理。直观上,线性约束定义的可行域是由半平面的交集构成的,这些半平面的交集总是形成凸区域。

这么一个自然想到、容易理解的道理,怎么从数学上完备地证明它?下面的内容为此作答。
### 准备知识:
**凸集的定义**:如果集合$C$中任意两点$X_1$和$X_2$,其连线上的所有点也都在集合$C$中,称$C$为凸集.
<p align = "center">    
<img  src="https://i-blog.csdnimg.cn/direct/c36979ba43054a219a993520e58b5f2f.png" width="200" />
</p>

为了更好地理解凸集,下面给出一些凸集和凹集的示例:
<p align = "center">    
<img  src="https://i-blog.csdnimg.cn/direct/29b80fec3fb341fc8bad74738821ef4f.png" width="200" />
</p>

**线性规划的标准型**:

$$max \quad z= \sum_{j=1}^{n}c_{j}x_j \\
s.t. \left\{\begin{array}{l}
{\sum_{j=1}^{n}a_{ij}x_j=b_j} \\
x_j \ge 0 \\
\end{array}\right.$$

### 证明
命题:如果线性规划中存在可行解,则可行解组成的可行域是凸集。

证明思路:任意假设两个可行解,证明其连线上的所有点仍属于可行域,即满足约束。

证明过程
步骤一:**设任意两点,并给出满足约束的方程**
- 设$X_1=(x_{11},x_{12},\dots,x_{1n})^T$,$X_2=(x_{21},x_{22},\dots,x_{2n})^T$为可行域内任意两点,其满足
$$\left\{\begin{array}{l}
\sum_{j=1}^n a_{ij}x_{1j}=b_j \\
\sum_{j=1}^n a_{ij}x_{2j}=b_j \\
\end{array}\right.$$

步骤二:**设连线上的任意一点,并给出与两点的关系方程**
- 连线上的任意点 $X=(x_{1},x_{2},\dots,x_{n})^T$ 的表示
$$X=k(X_1-X_2)+X_2, \quad 0 \leq k \leq1$$
这一步如果不好理解,可以看下面的解释:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d3d7473352704642bd4e6503e0a0ad75.png)

步骤三:**判断 $X$ 是否满足约束条件**
$$ \begin{aligned} 
\sum_{j=1}^n a_{ij}x_{j}&=\sum_{j=1}^n a_{ij}(k(x_{1j}-x_{2j})+x_{2j}) \\
&= k\sum_{j=1}^n a_{ij} x_{1j} - k\sum_{j=1}^n a_{ij} x_{2j} + \sum_{j=1}^n a_{ij} x_{2j} \\
&= k b_j - k b_j + b_j \\
& = b_j
\end{aligned}$$
因此,$X$ 在可行域内。这证明了连线上的任意点均在可行域内,即可行域是凸集。

证毕!

---
参考资料:
- 胡运权主编的第五版《运筹学教程》

http://www.kler.cn/a/312902.html

相关文章:

  • 运行WHTools批量启动游戏房间工具提示要安装.Net Framework3.5解决
  • AI生活之我用AI处理Excel表格
  • 洞察鸿蒙生态,把握开发新机遇
  • go reflect 反射
  • C指针创建三维数组
  • GitLab实现 HTTP 访问和 SMTP 邮件发送
  • Vue2中路由的使用
  • 软件设计画图,流程图、甘特图、时间轴图、系统架构图、网络拓扑图、E-R图、思维导图
  • 高速CT滑环的特点分析
  • 在Python中优雅地打开和操作RDS
  • macOS平台(intel)编译MAVSDK安卓平台SO库
  • 《Discriminative Class Tokens for Text-to-Image Diffusion Models》ICCV2023
  • 【GitHub】如何将本地项目推送到GitHub 终端 or IDEA
  • 使用 Docker 容器化 .NET 应用:从进阶到高深
  • 【高分系列卫星简介——高分一号(GF-1)】
  • Spring MVC 启动与请求处理流程解析
  • STM32G431RBT6(蓝桥杯)串口(发送)
  • git使用“保姆级”教程2——初始化及工作机制解释
  • 【加密社】如何分析合约代码
  • Microsoft 365 Copilot: Wave 2 发布,开启AI时代下的全新工作流
  • 代码随想录算法训练营Day5
  • 重回极简:华为如何走向全面智能化?
  • 【C++ Primer Plus习题】16.10
  • MAC 安装 nvm
  • 【SpringCloud】服务注册与发现 - Eureka
  • windows10部署ChatTTS+Apifox调用