数学建模——线性规划

数学建模的线性规划模型——python实现
摘要由CSDN通过智能技术生成

数学建模——线性规划

参考博客:用python解决线性规划

模型标准型:

所需库:scipy、pulp(可选)

例题1

转化为标准形:
{ − x + y ≤ 5 − x − y ≤ 0 x ≤ 3 \begin{cases}-x+y\le 5\\-x-y\le 0\\x\le 3\end{cases} x+y5xy0x3

import numpy as np
from scipy import optimize
#以下符号与标准形对应
z = np.array([4,-1]) #z = 4x-y
A = np.array([[-1,1],
              [-1,-1]]) # 约束条件系数矩阵
b = np.array([5,0]) 
x = (None,3) #x<=3
y = (None,None)
res = optimize.linprog(z,A,b,bounds=(x,y))
res
     con: array([], dtype=float64)
     fun: -12.499999999587356
 message: 'Optimization terminated successfully.'
     nit: 4
   slack: array([1.52723167e-10, 2.05568895e-11])
  status: 0
 success: True
       x: array([-2.5,  2.5])

例题2

转化为标准型:
{ − 2 x 1 + 5 x 2 − x 3 ≤ − 10 x 1 + 3 x 2 + x 3 ≤ 12 x 1 + x 2 + x 3 = 7 x 1 , x 2 , x 3 ≥ 0 \begin{cases}-2x_1+5x_2-x_3\le-10\\x_1+3x_2+x_3\le 12\\x_1+x_2+x_3=7\\x_1,x_2,x_3\ge 0\end{cases} 2x1+5x2x310x1+3x2+x312x1+x2+x3=7x1,x2,x30

import numpy as np
from scipy import optimize

z = np.array([2,3,-5]) #要求最大值,只要在最后调用函数时乘一个-1就行,系数不用改
A = np.array([[-2,5,-1],[1,3,1]])
b = np.array([-10,12])
Aeq = np.array([[1,1,1]]) #注意是二维数组
beq = np.array([7])
x1 = (0,None)
x2 = (0,None)
x3 = (0,None)
res = optimize.linprog(-z,A,b,Aeq,beq,(x1,x2,x3))
res
     con: array([1.80712245e-09])
     fun: -14.571428565645084
 message: 'Optimization terminated successfully.'
     nit: 5
   slack: array([-2.24599006e-10,  3.85714286e+00])
  status: 0
 success: True
       x: array([6.42857143e+00, 5.71428571e-01, 2.35900788e-10])

pulp库可选学,此不附,可参见参考博客

总结步骤:

  • 列出标准型方程
  • 调包(doge)
  • 根据方程列出价值向量、约束条件的系数矩阵、常数向量(注意是小于等于条件下的),等于条件分开列,以及决策变量的范围
  • 调用函数,依次输入价值向量、系数矩阵、常数向量、等式条件的系数矩阵、常数向量、决策向量

来个综合题


习题来源:《数学建模算法与程序》司守奎

分析题目,可知决策向量为每个货舱内各个货物的质量,可视为三行四列的矩阵

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值