文章目录

  • 一.例题
  • 二.线性规划问题
  • 三.linprog
    • 1.导入模板
    • 2.参数解释
    • 3.例

一.例题

以《数学建模算法与应用》中的题为例:

二.线性规划问题

数学建模旨在将复杂问题抽象为更加本质的模型

线性规划问题的标准形式:

min cTxc^TxcTx
s.t.{
Aubx<=bubA_{ub}x<=b_{ub}Aub​x<=bub​
Aeqx=beqA_{eq}x=b_{eq}Aeq​x=beq​
lb<=x<=rblb<=x<=rblb<=x<=rb
}

min:标准形式中求的是最小值,如果想求最大值只要将系数矩阵取负数,再将得到的最小值取负数即得

cTc^TcT是系数,是一个值不变的向量(一维矩阵),T表示转置,系数向量转置后变为行向量

x在这里表示决策变量,也是一个向量,形如:[x1,x2,x3……][x_1,x_2,x_3……][x1​,x2​,x3​……]

cTxc^TxcTx就是目标函数

s.t.是subject to的缩写,后面的式子是约束条件,有三种类型的约束条件(ub表示upper bound,eq表示equal)

线性规划问题,就是在约束条件的限制下求目标函数最大值/最小值的问题

三.linprog

1.导入模板

import numpy as np
from scipy.optimize import linprog

2.参数解释

解决线性规划问题使用的函数是linprog(linear programming):

scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method=‘interior-point’, callback=None, options=None, x0=None)

①参数c:表示目标函数中的系数,一个一维的数组

②参数A_ub:该参数为可选参数,若线性规划问题中的约束条件含有不等式则使用该参数,A_ub是一个二维的矩阵(数组),它的每一行都代表一个不等式的系数

以例题的约束条件中的三个不等式为例:

2x1+x2<=102x_1+x_2<=102x1​+x2​<=10
x1+x2<=8x_1+x_2<=8x1​+x2​<=8
x2<=7x_2<=7x2​<=7

则系数矩阵应该表示为:

2 1
1 1
0 1

③参数b_ub:该参数为可选参数,对应上面的系数矩阵,是一个一维的列向量

④参数A_eq和b_eq大同小异,分别为等式约束条件中的系数矩阵和约束向量

⑤参数bound:是一个由元组(min,max)组成的序列,限定决策变量的取值范围,用None表示无限制

3.例

例题的代码:

import numpy as np
from scipy.optimize import linprogc=np.array([4,3])
A=np.array([[2,1],[1,1],[0,1]])
b=np.array([10,8,7])ret=linprog(-c,A_ub=A,b_ub=b,bounds=((0,None),(0,None)))print(ret)
print(ret.x)  #表示最优解
print(ret.fun)  #表示最值

线性规划问题——scipy.optimize.linprog相关推荐

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

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

  2. python模块:Scipy.optimize.linprog线性规划求解

    目录 一.模块介绍 二.模块源分析与参数解释 三.实例求解 四.参考 一.模块介绍 1.1模块功能 Scipy.optimize是Scipy中一个用于解决数学模型中优化类模型的子包,该子包中又包含了多 ...

  3. scipy.optimize.linprog()函数--求解线性规划问题

    这里写目录标题 关于方程组的标准形式 参数 c A_ub b_ub A_eq b_eq bounds method callback options maxiter disp presolve 返回值 ...

  4. python数学建模之用scipy.optimize.linprog实现线性规划

    在做数学建模时,我们经常会遇到在约束条件下求解目标的最优解的情况,如:在如下约束条件下求解-x0+4x1的最小值. 在求解这个问题的过程中,我们可以使用不同的工具去解决,如MATLAB.Java等语言 ...

  5. scipy.optimize.linprog函数参数最全详解

    scipy.optimize.linprog函数 1.线性规划概念 2.输入格式 3.参数设置: 4.输出格式: 5.例子 6.若有更多Python的问题,请挪步"佐佑思维"公众号 ...

  6. python网页优化公司_使用python优化scipy.optimize.minimize公司

    我将逐行检查您的代码,并强调一些问题:from scipy.optimize import minimize import numpy as np prices=np.array([[1.5,50,3 ...

  7. 线性规划求解的python函数 : optimize.linprog

    """ 需要特别注意,原来方式是求最小值,因此在A 和Alist中 所有小于等于方程式的各个因变量值不变,而当方程式为大于等于方程式,那么所有因变量和对应值均需要反转乘以 ...

  8. python数学建模之用scipy.optimize.minimize解决高次非线性规划问题

    在实际的数学建模应用中,我们会遇到很多约束条件是二次的,三次的或者是高次函数的情况,这样用 optimize.linprog()来解决就显得不适用了,因此我们使用scipy.optimize下得min ...

  9. scipy.optimize.fsolve:用Python求解方程的解

    例1: 求解方程组的一个解: x0*cos(x1) = 4, x1*x0 - x1 = 5. 需要注意两点: 1.定义方程组,方程组要写出f(x)=0的形式(=0不需要写出来),所以原方程右边4和5都 ...

最新文章

  1. 迈克尔 · 乔丹:我讨厌将机器学习称为AI
  2. UC伯克利新机器人成果:灵活自由地使用工具
  3. struts2框架之国际化(参考第二天学习笔记)
  4. 人工智能是如何应用于智能交通领域
  5. 《漫画线性代数》读书笔记 用矩阵解方程组
  6. linux同步IO: sync、fsync与fdatasync
  7. getParameter和getAttribute的区别
  8. lambda 流 peek java_JDK8 流与λ表达式
  9. JavaScript禁用页面刷新
  10. linux数据库监听配了两个,Oracle数据库和监听随LINUX系统启动
  11. Python实现十大经典排序算法
  12. 卷积神经网络_mnist
  13. java 两个list相等_java 怎么比较两个list是否相同
  14. linux resin mysql_【转】Linux下Resin+JSP+MySQL的安装和配置
  15. 文字排版中的字号尺寸对照表(清晰、准确(含两个版本对比)、可复制)
  16. 《线粒体疾病的遗传》学习笔记
  17. AndroidStudio 自带avd模拟器WiFi网络受限无法连接
  18. 爬取今日头条街拍美图
  19. CentOS7上安装Snipe-IT4.6.3详细过程及注意事项
  20. 高等数学与matlab要用电脑吗,知到高等数学与MATLAB启蒙答案全套

热门文章

  1. 专车,你动了谁的奶酪?
  2. Q-Net---基于查询的少镜头医学图像分割
  3. 0816-欧拉回路(外带模板题一个+sao操作)
  4. 自监督论文阅读笔记SELF-SUPERVISED SPECTRAL MATCHING NETWORK FOR HYPERSPECTRAL TARGET DETECTION
  5. My Eclipse
  6. 华为交换机命令 端口速率_华为交换机端口限速配置 | 铭泰网络
  7. 十分流行自举法(Bootstrapping )为什么有效
  8. ASP.NET之“Jbh.Common.DbHelperSQL”不实现接口成员“System.IDisposable.Dispose()”
  9. 二阶龙格库塔公式推导_数值常微分方程-欧拉法与龙格-库塔法
  10. 2021年质量员-市政方向-岗位技能(质量员)考试内容及质量员-市政方向-岗位技能(质量员)考试资料