线性规划

文章目录

  • 线性规划
    • 数学原型
    • 1. matlab求解
      • 函数原型
    • 2. python求解
    • 3. 例题
      • matlab求解

数学原型

m i n x c ⃗ T x ⃗ s . t . { A x ⃗ ≤ b ⃗ A e q ⋅ x ⃗ = b e q ⃗ l b ⃗ ≤ x ⃗ ≤ u b ⃗ min_x\quad \vec c^T\vec x\\ s.t.\left\{ \begin{aligned} A\vec x \leq \vec{b} \\ Aeq\cdot \vec x = \vec {beq} \\ \vec {lb} \leq \vec x \leq \vec{ub} \end{aligned} \right . minx​c Tx s.t.⎩⎪⎪⎨⎪⎪⎧​Ax ≤b Aeq⋅x =beq ​lb ≤x ≤ub ​

这里向量都是列向量, 大写都是矩阵

c称为价值向量, b称为资源向量

1. matlab求解

matlab中线性规划求解一般都是最小值

如果要求最大值就要在优化目标上加个负号

注意求解之前要化成标准型

函数原型

这里的函数参数命名参考上面的数学原型(具体是列向量还是行向量也对照上面看)

[x, fval] = linprog(c, A, b, Aeq, beq, lb, ub)
  • c, b, lb, ub都是列向量

2. python求解

可以使用的库, plupscipy

scipy代码线性规划的代码相较于plup稍微简洁一些

这里只浅介绍一下scipy

from scipy.optimize import linprog
import numpy as npres = linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIOS)
# 目标最小值
print(res.fun)
# 最优解
print(rea.x)

3. 例题

a r g m a x z = 4 x 1 + 3 x 2 s . t . { 2 x 1 + x 2 ≤ 10 x 1 + x 2 ≤ 8 x 2 ≤ 7 x 1 , x 2 ≥ 0 argmax \quad z = 4x_1+3x_2\\ s.t. \left\{ \begin{aligned} 2x_1 + x_2 \le 10\\ x_1+x_2\le8\\ x_2\le7\\ x_1, x_2\ge0\\ \end{aligned} \right . argmaxz=4x1​+3x2​s.t.⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​2x1​+x2​≤10x1​+x2​≤8x2​≤7x1​,x2​≥0​

matlab求解

%% 记得求解之前要把题目化成标准型(看最上面给出的数学原形里的那个标准型), 本题已经是标准型
% 变量名字都可以随便取, 只要自己认得出来
% 价值向量, 因为要求最大值所以加个负号
c = [-4; -3];A = [2, 1;1, 1;0, 1];% 资源向量
b = [10; 8; 7]% 返回值x_res, best_val也是随便取的名字
% linprog()括号里的参数 有空的中括号[] 是因为题目中没有等式条件
% 但是函数里面输入参数要按照顺序来, 所以就弄个[]占个位置
[x_res, best_val] = linprog(c, A, b, [], [], zeros(2, 1));x_res-best_val

附上答案

x_res =

2.0000
6.0000

ans(也就是 -best_val) =

26

数学建模常用算法汇总及python,MATLAB实现(一)—— 线性规划相关推荐

  1. 数学建模常用算法汇总及python,MATLAB实现(五) —— 拟合

    拟合 比较重要的就是2.1和2.3 2.2可以浅看一下, 自己敲着试一试 就拟合部分来说, MATLAB比python强大很多, 自带cftool工具包, 并且有很多快速的函数, 个人建议使用MATL ...

  2. 数学建模常用算法汇总及python,MATLAB实现(六) —— pandas和matlab实现插值

    插值 2的拉格朗日插值用的其实比较少, 可以看一下了解一下插值的原理 主要看看3里的结论和4的实现代码 文章目录 插值 1. 定义 2.拉格朗日插值 2.1 概念 3. Rouge现象 3.1 是什么 ...

  3. 数学建模常用算法汇总及python,MATLAB实现(二)—— 整数规划

    整数规划 第3部分主要讲算法的具体实现, 如果对具体细节没有要求, 直接看1, 4就行, 直接用matlab内置的intlinprog函数或者python的cvxpy等第三方包 这里我个人更偏向于使用 ...

  4. 【Python数学建模常用算法代码(二)之BP神经网络】

    Python数学建模常用算法代码(二) BP神经网络模型Python代码 import numpy as np import math import random import string impo ...

  5. 数学建模——主成分分析算法详解Python代码

    数学建模--主成分分析算法详解Python代码 import matplotlib.pyplot as plt #加载matplotlib用于数据的可视化 from sklearn.decomposi ...

  6. 【数学建模常用算法】之灰色预测模型GM

    作者:張張張張 github地址:https://github.com/zhanghekai [转载请注明出处,谢谢!] 文章目录 一.灰色预测模型GM(1,1) 1.数据检验与数据预处理 1.1 构 ...

  7. 二维动态规划降维误差一般为多少_数学建模常用算法模型

    数学模型的分类 按模型的数学方法分: 几何模型.图论模型.微分方程模型.概率模型.最优控制模型.规划论模型.马氏链模型等 按模型的特征分: 静态模型和动态模型,确定性模型和随机模型,离散模型和连续性模 ...

  8. 数学建模常用算法—灰色预测

    今天数模君给大家讲解一下数学建模比赛中常用的一种预测方法:灰色预测法. 目录 模型的含义 灰色预测的原理 实例 模型的含义 灰色预测模型 ( Gray Forecast Model )是通过少量的.不 ...

  9. 数学建模常用算法—马尔可夫预测

    今天数模君带大家学习一下数学建模中的预测算法之马尔科夫预测. 目录 模型的含义 实例分析 模型的含义 马尔可夫(Markov)预测法,就是一种关于事件发生的概率预测方法.它是根据事件的目前状况来预测其 ...

最新文章

  1. python多线程编程(2): 使用互斥锁同步线程
  2. AI顶会直播丨深度学习顶级会议ICLR中国预讲会明天召开,为期三天五大论坛
  3. Java Review - Java进程内部的消息中间件_Event Bus设计模式
  4. 一篇关于Maven项目的jar包Shell启动脚本
  5. Topk 问题详解及代码和数据分析
  6. Google 开源图形着色器测试框架 GraphicsFuzz
  7. 详细解读css中的浮动以及清除浮动的方法
  8. 同一性(identical)
  9. linux shell 递归统计代码行数
  10. python还能活多久_啥?python以后没活路?
  11. a form 出口享惠情况_关于“出口享惠情况”如何填报?
  12. linux格式u盘没有fat32,U盘,移动硬盘安装Linux的主分区,逻辑分区,FAT32格式分区的问题...
  13. 联想电脑Fn热键驱动
  14. linux下curl安装报错symbol lookup error
  15. matlab衰减曲线法整定步骤,Matlab仿真PID控制——衰减曲线法整定参数
  16. .net Core 3.1下的Roslyn 动态编译
  17. 大学生社会实践报告 模板
  18. iOS【UIDynamic重力、弹性碰撞吸附等现象】
  19. Burst(突发)信号详解
  20. 有赞会不会成为去中心化流量时代的淘宝

热门文章

  1. uni-app:游戏摇杆,遥控控制4方向 常用于移动端组件
  2. 跟我学flutter:Flutter雷达图表(一)如何使用kg_charts
  3. 【数据结构】队列的出队和入队操作
  4. VIVO小游戏支付以及服务端php支付流程
  5. Metal每日分享,UV去雾滤镜效果
  6. java.util.ConcurrentModificationException详解
  7. Linux 新建log文件
  8. github优秀项目分享 视频录制软件 OBS
  9. python实时绘制动态曲线_pyqt中使用matplotlib绘制动态曲线
  10. ds90cr286调试新得