LP线性规划初识
认识LP
线性规划(Linear Programming) 特指目标函数和约束条件皆为线性的最优化问题.
目标函数: 多个变量形成的函数
- 约束条件: 由多个等式/不等式形成的约束条件
线性规划: 在线性约束条件下,目标函数求极值的问题
- 可行解: 满足线性约束条件下的解
- 可行域: 所有可行解构成的集合
最优解: 使目标函数取得极值的可行解
线性
个人觉得最好理解是用向量了. 就是元素满足 加法和数乘 的形式
\(f(a+b) = f(a)+f(b)\)
\(f(ca) = c f(a), c为常数\)
当然要理解上面两个等式可能需要去理解向量空间, 线性变换这些内容,嗯, 反正我自己已经懂了, 有时间可以分享.
定义模型的步骤
前提一定是线性的哈
- 确定决策变量
- 确定线性目标函数, 求max 或 min
- 确定线性约束条件
- 写出数学模型
case1
球队运作
需求:
需要补充7名球员, 每名球员有攻击值和防守值, 希望7名球员的进攻值大于500, 防守值大于400, 且要尽可能省钱.
战力值 | 防守值 | 价格(万) | |
---|---|---|---|
进攻型 | 90 | 60 | 1000 |
平衡性 | 80 | 80 | 800 |
防守型 | 40 | 95 | 500 |
求解:
定义决策变量: 假设补充进攻型,防守型,平衡性各a,b,c名, 总价格为y万元,即
(s.t 即 subject to "受制于")
\(min \ y = 1000a + 800b + 500c\)
s.t.
\(90a + 80b +40c >= 500 \\ 60a+ 80b + 95c >= 400 \\a + b+ c = 7 \\ a,b,c >=0\)
case2
采购方案
需求:
作为采购经理,有2000元经费, 需采购单价为50元的桌子若干和单价20元的椅子若干.
- 桌椅总数尽可能多
- 椅子数量不少于桌子, 且不多于桌子的1.5倍
求解:
定义决策变量: 购买x1张桌子, x2把椅子, 总数为y.
\(max \ y = x1 + x2\)
s.t.
\(50x1 + 20x2 <= 2000 \\ 1.5x1 >= x2 \\ x1<= x2 \\ x1,x2 >=0\)
几何求解
约束条件的交集构成可行域
- 最优解即平行移动目标函数, 使其在可行域上达到截距最大
而最优解, 就是再交集域的顶点, 而无需在内部考虑.(不用严格用什么向量,几何, 什么定比分店,证明,肯定是边界的顶点上嘛)
证明最优解在边界顶点
假设平面三角形域顶点分别为x1, x2, x3, 最优解x0在三角形内, 过顶点x1,和x0的直线与底边 x2-x3交于点x4.
通过中学学的定点分比, 对x0作分解
$x_0 = $
LP的标准形式
\(min \ c^Tx \\ s.t. \ Ax <=b \\ x >= 0\)
x, c, 表列向量, \(c^T\)是行向量, \(c^Tx\)表示线性组合
- \(Ax=b\) 表示线性齐次方程组, A表示系数拒绝, x表列向量
- if 目标函数是求max, 则 - max 即转为了求min
if 约束条件有 >= , 则 - (>=) 即转为了 <=
将case2 转为标准型
\(min \ y = -x1 + -x2\)
s.t.
\(50x1 + 20x2 <= 2000 \\ -1.5x1+x2 <= 0 \\ x1-x2<= 0 \\ x1,x2 >=0\)
将case2转为松弛型
松弛型: 用等式约束来等价表述不等式约束
- 松弛变量度量了等式约束与原不等式约束直接的松弛或差别
其实就是为了求解方便呗
$min y = -x1-x2 $
s.t.
\(50x1 + 20x2 + a1 = 2000 \\ -1.5x1+x2 + a2 =0 \\ x1-x2+a3=0 \\ x1,x2,a1,a2,a3 >=0 \\ 其中a1,a2,a3为松弛变量\)
(附) 证明最优解在边界顶点
假设平面三角形域顶点分别为x1, x2, x3, 最优解x0在三角形内, 过顶点x1,和x0的直线与底边 x2-x3交于点x4.
通过中学学的定比分点, 对x0作分解
\(x_0 = \lambda_1 x_1 + (1-\lambda_1) x_4, 其中\lambda_1 = ||x0-x1||/||x0-x4||\)
\(x4 = \lambda_2 x2 + (1- \lambda_2) x3, 其中\lambda_2 = c(定点分比值))\)
即:
\(x_0 = \lambda_1 x1 + (1-\lambda_1) \lambda_2 x2 + (1-\lambda_1)(1-\lambda_2) x3\)
其中 \(\lambda_1 + (1-\lambda_1) \lambda_2 + (1-\lambda_1)(1-\lambda_2) = 1\)
假设 \(c^tx1 > =c^tx2 >= c^tx3, 根据大前提即:\\ c^tx0 >= c^tx1 >= c^tx2 > =c^tx3\)
即:
$c^tx_0 =x_0 = \lambda_1 c^t x1 + (1-\lambda_1) \lambda_2 c^t x2 + (1-\lambda_1)(1-\lambda_2) c^t x3 $
\(>=c^tx_0 =x_0 = \lambda_1 c^t x1 + (1-\lambda_1) \lambda_2 c^t x1 + (1-\lambda_1)(1-\lambda_2) c^t x1\)
$ = c^tx1$
即说明最优解并不是 x0, 而是顶点x1, 不在内部哦.
LP线性规划初识的更多相关文章
- LP线性规划求解 之 单纯形 算法
LP线性规划求解 之 单纯形 算法 认识-单纯形 核心: 顶点旋转 随机找到一个初始的基本可行解 不断沿着可行域旋转(pivot) 重复2,直到结果不能改进为止 案例-过程 以上篇的case2的松弛型 ...
- 对偶理论、拉格朗日对偶问题、LP线性规划对偶性质
Lagrange 对偶问题 定义其的对偶问题: Lagrange函数 考虑线性规划问题 若取集合约束D={x|x≥0},则该线性规划问题的Lagrange函数为 线性规划的对偶问题为: 对偶定理原问题 ...
- 【Python代码】混合整数规划MIP/线性规划LP+python(ortool库)实现
目录 相关知识点 LP线性规划问题 MIP混合整数规划 MIP的Python实现(Ortool库) assert MIP的Python实现(docplex库) 相关知识点 LP线性规划问题 Linea ...
- 机器学习-线性规划(LP)
线性规划问题 首先引入如下的问题: 假设食物的各种营养成分.价格如下表: Food Energy(能量) Protein(蛋白质) Calcium(钙) Price Oatmeal(燕麦) 110 4 ...
- 线性规划(LP)资料下载
1.学习用PPT harvard gondzio IOE610 mit cxg286 含matlab程序 2.测试库 BPMPD netlib fsu 3.软件测试 BENCHMARKS FOR OP ...
- [ActiveMQ]初识ActiveMQ
初识ActiveMQ ActiveMQ介绍 官方网站:http://activemq.apache.org/ 最新版本:ActiveMQ 5.14.1(2016-10-28) 最新版本下载链接:htt ...
- java 线性规划 和lingo 比较
model:max=13*A+ 23*B; 5*A + 15*B <480 ; 4*A + 4 *B <160 ; 35* A + 20 *B <1190 ; end Variabl ...
- 压缩感知中的lp球:p范数最优化为什么总会导致一个稀疏的解的原因
转自:彬彬有礼. 压缩感知中的lp球:p范数最优化为什么总会导致一个稀疏的解的原因 http://blog.csdn.net/jbb0523/article/details/40268943 题目: ...
- Django 初识
Django 初识 一.前言 Django是一款网站架构,能够快速的搭建一个网站.openstack的界面显示使用的就是Django的框架.所以,学习openstack多少要了解一些Django的内 ...
随机推荐
- ESA2GJK1DH1K升级篇: 升级STM32 预热: 单片机定时 使用 http 获取云端文本文件里面的内容,然后显示在液晶屏
前言: 实现功能概要 STM32使用AT指令控制Wi-Fi以TCP方式连接咱上节安装的Web服务器,然后使用http的get协议获取云端文本文件里面的内容, 然后把获取的数据显示在OLED液晶屏. ...
- CSRF 跨站
目录 CSRF 跨站请求伪造 解决跨站伪造问题: csrf 相关的装饰器: csrf.js文件: CSRF 跨站请求伪造 CSRF全称为Cross-site request forgery,也被称为: ...
- asp.net core nginx配置问题解决
1.无法访问nginx到发布的站点,但是使用原配置(nginx.conf)却可以.使用新建的配置conf.d/netcore.conf不行. 2.在windows浏览中访问http://xxx.xxx ...
- suface 触控笔
触控笔直接就可以书写,顶部橡皮擦可用. 但如果要使用笔上的按键(如单击启动OneNote),必须要用蓝牙进行配对.笔使用一节AAAA电池(九号电池)供电. 连接方法: 准备好surface触控笔,并确 ...
- kali 破解wifi
1.查看网卡名称:iwconfig 有一块 名为wlan0 的无线网卡通过一下命令排除影响因素 root@jkali:~# iwconfig lo no wireless extensions. wl ...
- python 关于celery的异步任务队列的基本使用(celery+redis)【采用配置文件设置】
工程结构说明:源文件下载请访问https://i.cnblogs.com/Files.aspx __init__.py:实例化celery,并加载配置模块 celeryconfig.py:配置模块 t ...
- Excel VBA业余爱好者心得及总结
我不是IT专业人士,而是一位医务工作者,当初学习Excel VBA时,是因为读研究生时的课题需要:实验仪器每天产生4个Word文件,每个文件有9个表格,总计近百个数据.为了对这些数据进行统计分析,则需 ...
- spring扩展点之五:ApplicationContextInitializer实现与使用
ApplicationContextInitializer是Spring框架原有的东西,这个类的主要作用就是在ConfigurableApplicationContext类型(或者子类型)的Appli ...
- Java计算工作日的工具类
有时候需要根据工作日计算指定的日期,也就是需要排除周六日. 1. 初版代码如下: package cn.xm.exam.utils; import java.util.Calendar; impor ...
- 单口 RAM、伪双口 RAM、真双口 RAM、单口 ROM、双口 ROM 到底有什么区别呢?
打开 IP Catalog,搜索 Block Memory Generator,即可看到其 Memory Type 可分为 5 中,分别是单口 RAM(Single Port RAM).伪双口 RAM ...