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

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

线性规划中的凸性证明

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

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

准备知识:

凸集的定义:如果集合 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.mrgr.cn/news/31453.html

相关文章:

  • 前端框架对比选择:如何在众多技术中找到最适合你的
  • C++ 中noexcept关键字的含义和使用方法
  • shell脚本(9.20)
  • lettuce引起的Redis command timeout异常
  • 大数据新视界 --大数据大厂之AI 与大数据的融合:开创智能未来的新篇章
  • sql中的union与union all区别
  • 队列基础概念
  • 基于机器学习的癌症数据分析与预测系统实现,有三种算法,bootstrap前端+flask
  • 【读书笔记-《30天自制操作系统》-23】Day24
  • 每天五分钟计算机视觉:将人脸识别问题转换为二分类问题
  • 完美转发、C++11中与线程相关的std::ref
  • IDEA配置全局的maven环境
  • 《深度解析 C++中的拷贝构造函数:概念、作用与实践》
  • Vue学习记录之六(组件实战及BEM框架了解)
  • 渐变色代码主题你受得了吗
  • 固执和坚持99%的人不作区分
  • C++_CH18_构造函数与析构函数
  • 【宠粉赠书】大模型RAG实战:RAG原理、应用与系统构建
  • 每日奇难怪题(持续更新)
  • 360手机黑科技“位置穿越”功能修复 360位置穿越使用