线性规划

线性规划问题的标准形式可以写成:

\[\begin{aligned}
&max~z=\pmb{c}^T\pmb{X} \\
&s.t.\{
\begin{aligned}
&\pmb{A}\pmb{X}=\pmb{b}\\
&\pmb{X}\geqslant0
\end{aligned}
\end{aligned}
\]

,\(\pmb{X}\)是列向量


为什么可以统一为这个标准形式 ?

  1. 所有约束都可以写成等式约束是因为在初始决策变量不足的情况下,我们可以加入非负的松弛变量到不等式中,使其变成等式约束。

  2. 之所以可以将决策变量约束为非负是因为,决策变量的符号有三种可能

  • 首先是非负的,这种情况下我们无需改变
  • 第二种情况是决策变量是非正的,那么我们只需用相反的变量取代即可
  • 第三种情况是决策变量没有符号要求,那么我们就可以定义两个非负变量进行相减来替代这个没有符号要求的决策变量。

线性规划的解有四种可能:

  • 唯一解
  • 无穷多解
  • 无界解(即目标函数可以在约束条件下达到无穷进而使得无解)
  • 无可行解(即不存在满足约束条件的解)

单纯形法

单纯形表

计算步骤(求极大)

(1) 确定一个初始基可行解

(2) 计算非基变量的检验数

判别准则:

  1. 若所有非基变量检验数都小于或等于零, 则原问题得到最优解
  2. 当非基变量的检验数至少有一个为零, 原问题有无穷多组最优解, 但其目标函数值相等
  3. 非基变量的检验数至少有一个大于零, 且某个大于零的检验数所对应的非基变量的系数列向量中没有正数, 则原问题具有无界解

(3) 基变换. 寻找检验数最大的列对应的变量, 将 \(b\) 分别除以这一列上的数得到 \(\theta\) 列, 再选定 \(\theta\) 最小的这一行对应的变量, 用最大的检验数对应的变量替换最小的 \(\theta\) 对应的 \(\boldsymbol{X}_b\) 处的变量

(4) 迭代

初始时, \(\boldsymbol{b}\) 需要大于零

右下角的函数值由 \(\boldsymbol{c}_B^\top\boldsymbol{b}\) 计算得

当算法停止时, \(\boldsymbol{X}_B\) 对应的 \(\boldsymbol{b}\) 取值即为解, 右下角的函数值即为最优函数值

停止算法条件

如果是求极大, 则当非基变量的检验数都小于等于0时停止

如果是求极小, 则当所有非基变量的检验数都大于等于0时停止

大M法

使用条件

当使用单纯形法时发现没有单位子矩阵

操作

通过加入人工变量拼凑单位子矩阵, 再运用单纯形法进行求解

  • 当无解或者有解但最优解中至少还有一个人工变量时, 说明原问题无解.
  • 当有解且最优解中不含有人工变量时, 其最优解就是原线性规划问题的最优解.

优点

可以直接求解问题

缺点

由于电脑无法输入任意大的数继续进行运算, 所以大M法只能手动运算

两阶段法

操作

  • 第一阶段是构造一个目标函数只含有人工变量的辅助问题,再运用单纯形法进行求解.
  • 当无解或者有解但目标函数不为零, 说明原问题无解, 终止
  • 当有解且其目标函数值为零时, 则得到原问题的一个初始基可行解.
  • 第二阶段是对第一阶段得到的单纯形表, 将其表头换位原问题的表头并且重新计算检验数

运筹学之线性规划 1.X的更多相关文章

  1. MIS(管理信息系统)

    MIS 管理信息系统(Management Information System,简称MIS) 是一个以人为主导,利用计算机硬件.软件.网络通信设备以及其他办公设备,进行信息的收集.传输.加工.储存. ...

  2. 使用python scipy.optimize linprog和lingo线性规划求解最大值,最小值(运筹学学习笔记)

    1.线性规划模型: 2.使用python scipy.optimize linprog求解模型最优解: 在这里我们用到scipy中的linprog进行求解,linprog的用法见https://doc ...

  3. lingo运筹学上机实验指导

    <运筹学上机实验指导>分为两个部分,第一部分12学时,是与运筹学理论课上机同步配套的4个实验(线性规划.灵敏度分析.运输问题与指派问题.最短路问题和背包问题)的Excel.LONGO和LI ...

  4. Excel与Google Sheets中实现线性规划求解

    很久没更新过APS系列文章了,这段时间项目工作确实非常紧,所以只能抽点时间学习一下运筹学的入门知识,算是为以后的APS项目积累点基础.看了一些运筹学的书(都是科普级别的)发现原来我目前面对的很多排产. ...

  5. 无缘诺贝尔奖的George Dantzig——线性规划之父

    无缘诺贝尔奖的George Dantzig——线性规划之父 王军强,2012年11月2日 “线性规划之父”的George Dantzig,与“计算机之父”.“博弈论之父”John Von Neuman ...

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

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

  7. 使用Python scipy linprog 线性规划求最大值或最小值(使用Python学习数学建模笔记)

    函数格式 scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method='simp ...

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

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

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

  10. 用Microsoft.Solver.Foundation进行线性规划,为WPF应用添加智能

    在管理信息系统的开发过程中,往往会涉及到一些线性规划数学模型,例如资源配置优化.微软的Microsoft.Solver.Foundation是一个数学库,可以很好的对线性规划问题进行求解.关于它的细节 ...

随机推荐

  1. vite+vue3.0+ts搭建项目

    项目git地址:https://gitee.com/suyong01/vue3-ts-template vue+ts+vite项目初始化 # npm 6.x npm init @vitejs/app ...

  2. vue过滤出字符串中的汉字,match加正则

    vue过滤出字符串中的汉字,match加正则 str="23申迪MTN001(102380026)";str.match(/[\u4e00-\u9fa5]/g).join(&quo ...

  3. VS2015+QT5.10项目中文乱码

    解决:文件-高级保存选项,选择utf-8编码.

  4. win10开机无限自动修复篇

    转载请注明来源:https://www.cnblogs.com/Sherlock-L/p/15521381.html 关键词:win10.开机无限自动修复.nvlddmkm.sys 哈哈哈,其实这篇随 ...

  5. spring 创建 bean 的 几种方式

    Spring 创建 bean 有 多种方式: 自动创建,手动创建注入: 方式1: 使用 Spring XML 配置: <bean id=''id  class=''class / > 方式 ...

  6. Hadoop完全分布式开发配置流程

    完全分布式开发 整体流程 1.准备3台纯净虚拟机 2.修改每台ip,主机名,主机映射,关闭防火墙 3.安装jdk和hadoop,配置环境变量 4.集群分发脚本编写 5.集群配置 6.ssh免密登录 7 ...

  7. mt5获取双色球

    string cookie=NULL,headers; char post[],result[]; string ssq=""; string url="http://k ...

  8. docker停止所有窗容器

    docker中 启动所有的容器命令docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) docker中 关闭所有的容器命令dock ...

  9. css样式 div垂直水平居中对齐

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. Vue项目在IE报错SCRIPT1003: 缺少' : ',导致页面空白的解决方案

    一.问题 用IE浏览器访问系统,页面显示空白,控制台报错 SCRIPT1003: 缺少' : ' 二.查看报错        2.1.点击控制台报错,进入app.js,咋一看代码看不懂,不要慌,一直往 ...