认识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线性规划初识的更多相关文章

  1. LP线性规划求解 之 单纯形 算法

    LP线性规划求解 之 单纯形 算法 认识-单纯形 核心: 顶点旋转 随机找到一个初始的基本可行解 不断沿着可行域旋转(pivot) 重复2,直到结果不能改进为止 案例-过程 以上篇的case2的松弛型 ...

  2. 对偶理论、拉格朗日对偶问题、LP线性规划对偶性质

    Lagrange 对偶问题 定义其的对偶问题: Lagrange函数 考虑线性规划问题 若取集合约束D={x|x≥0},则该线性规划问题的Lagrange函数为 线性规划的对偶问题为: 对偶定理原问题 ...

  3. 【Python代码】混合整数规划MIP/线性规划LP+python(ortool库)实现

    目录 相关知识点 LP线性规划问题 MIP混合整数规划 MIP的Python实现(Ortool库) assert MIP的Python实现(docplex库) 相关知识点 LP线性规划问题 Linea ...

  4. 机器学习-线性规划(LP)

    线性规划问题 首先引入如下的问题: 假设食物的各种营养成分.价格如下表: Food Energy(能量) Protein(蛋白质) Calcium(钙) Price Oatmeal(燕麦) 110 4 ...

  5. 线性规划(LP)资料下载

    1.学习用PPT harvard gondzio IOE610 mit cxg286 含matlab程序 2.测试库 BPMPD netlib fsu 3.软件测试 BENCHMARKS FOR OP ...

  6. [ActiveMQ]初识ActiveMQ

    初识ActiveMQ ActiveMQ介绍 官方网站:http://activemq.apache.org/ 最新版本:ActiveMQ 5.14.1(2016-10-28) 最新版本下载链接:htt ...

  7. 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 ...

  8. 压缩感知中的lp球:p范数最优化为什么总会导致一个稀疏的解的原因

    转自:彬彬有礼. 压缩感知中的lp球:p范数最优化为什么总会导致一个稀疏的解的原因 http://blog.csdn.net/jbb0523/article/details/40268943 题目: ...

  9. Django 初识

    Django  初识 一.前言 Django是一款网站架构,能够快速的搭建一个网站.openstack的界面显示使用的就是Django的框架.所以,学习openstack多少要了解一些Django的内 ...

随机推荐

  1. 浅谈BST(二叉查找树)

    目录 BST的性质 BST的建立 BST的检索 BST的插入 BST求前驱/后继 BST的节点删除 复杂度 平衡树 BST的性质 树上每个节点上有个值,这个值叫关键码 每个节点的关键码大于其任意左侧子 ...

  2. E-value identity bitscore

    E-value: The E-value provides information about the likelihood that a given sequence match is purely ...

  3. 深入理解 JavaScript 中的 class

    在 ES6 规范中,引入了 class 的概念.使得 JS 开发者终于告别了,直接使用原型对象模仿面向对象中的类和类继承时代. 但是JS 中并没有一个真正的 class 原始类型, class 仅仅只 ...

  4. c++篇 cad.grx 入门,手动配置编译环境

    安装vs2010+sp1补丁; 安装浩辰2018(64位版本); 下载浩辰Grx开发的SDK,注意对应版本年份., 解压到E盘目录下, E:\grxsdk 在他们的官方用户群下载,搜sdk, 找到gr ...

  5. 关于nginx proxy_next_upstream 重试 和 max_fails的那些事

    背景及简要分析 前几天一次故障定位的时候发现,后端服务(java)在从故障中恢复之后,会出现大量499,且会持续较长时间无法自行恢复.根本原因是服务容量问题,处理太慢导致客户端等不了了,主动断开.不过 ...

  6. xunsearch搜索测试

    1.导入测试数据 cd $prefix/sdk/php util/Indexer.php --source=csv --clean demo 然后出现 初始化数据源 ... csv WARNING: ...

  7. 【转帖】Alpha、Beta、RC、GA版本的区别

    [版本]Alpha.Beta.RC.GA版本的区别 https://www.jianshu.com/p/d69226decbfe Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测 ...

  8. 63 网络编程(四)——TCP编程

    TCP编程 TCP编程是面向连接的数据传输,所以需要时用IO流来建立连接. 用户输出流到服务器,服务器输入流接收数据. 服务器输出流到用户,用户输入流接收. 基本流程 服务器端 创建服务器端:Serv ...

  9. python学习之旅

    python学习分类 python基础    +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...

  10. xcode红色文件夹或文件解决方法

    文件夹或文件变红是找不到文件导致,解决方法如下: 选中红色的文件或者文件夹,在最右边出现菜单里面有个Location,下一行有个文件夹按钮,点击选择正确的文件路径或者文件就可以了.