数学建模:线性规划—奶制品的生产销售计划模型 (Python 求解)
目录
- 奶制品的生产销售计划一 (粗加工)
- 1. 制订生产计划, 使每天获利最大
- 2. 35 元可买到 1 桶牛奶, 买吗? 若买, 每天最多买多少?
- 3. 可聘用临时工人,付出的工资最多是每小时几元?
- 4. A1A_1A1的获利增加到 30 元/kg, 应否改变生产计划?
- 奶制品的生产销售计划二 (深加工)
- 1. 制订生产计划, 使每天净利润最大
- 2. 30 元可增加 1 桶牛奶, 3 元可增加 1 h 时间, 应否投资?
- 3. 现投资 150 元, 可赚回多少?
- 4. B1,B2B_1, B_2B1,B2 的获利经常有 10% 的波动, 对计划有无影响?
- 5. 每天销售 10 kg A1A_1A1 的合同必须满足, 对利润有什么影响?
奶制品的生产销售计划一 (粗加工)
1桶牛奶{12h⟶3kgA1⟶获利 24元/kg8h⟶4kgA2⟶获利 16元/kg1 \ \text{桶牛奶} \begin{cases} 12 \ \mathrm{h} \longrightarrow 3 \ \mathrm{kg} \ A_1 \longrightarrow \text { 获利 } 24 \text { 元} / \mathrm{kg}\\ 8 \ \mathrm{h} \longrightarrow 4 \ \mathrm{kg} \ A_2 \longrightarrow \text { 获利 } 16 \text { 元} / \mathrm{kg}\\ \end{cases} 1 桶牛奶{12 h⟶3 kg A1⟶ 获利 24 元/kg8 h⟶4 kg A2⟶ 获利 16 元/kg
每天 50 桶牛奶, 时间 480 h, 至多加工 100 kg A1A_1A1.
- 制订生产计划, 使每天获利最大;
- 35 元可买到 1 桶牛奶, 买吗? 若买, 每天最多买多少?
- 可聘用临时工人,付出的工资最多是每小时几元?
- A1A_1A1 的获利增加到 30 元/kg, 应否改变生产计划?
1. 制订生产计划, 使每天获利最大
设 x1x_1x1 桶生产 A1A_1A1, x2x_2x2 桶生产 A2A_2A2, 建立线性规划模型
maxz=72x1+64x2s.t.{(11128)⋅(x1x2)⩽(50480)0⩽(x1x2)⩽(10003+∞)\begin{gathered} \max z=72 x_{1}+64 x_{2} \\ s.t. \begin{cases} \left( \begin{matrix} 1& 1\\ 12& 8\\ \end{matrix} \right) \cdot \left( \begin{array}{c} x_1\\ x_2\\ \end{array} \right) \leqslant \left( \begin{array}{c} 50\\ 480\\ \end{array} \right) \\ \mathbf{0} \leqslant \left( \begin{array}{c} x_1\\ x_2\\ \end{array} \right) \leqslant \left( \begin{array}{c} \frac{1000}{3}\\ + \infty \\ \end{array} \right) \end{cases} \end{gathered} maxz=72x1+64x2s.t.⎩⎪⎪⎨⎪⎪⎧(11218)⋅(x1x2)⩽(50480)0⩽(x1x2)⩽(31000+∞)
用 scipy.optimize.linprog 函数求解
from scipy.optimize import linprog
c=[-72, -64] #目标向量
A=[[1, 1],[12, 8]]; b=[[50],[480]]
bound=((0,100/3.0),(0,None))
res=linprog(c,A,b,None,None,bound,method='simplex')
print('最优值:',res.fun)
print('最优解:',res.x)
最优值: -3360.0
最优解: [20. 30.]
即最优解为 x1=20,x2=30x_{1}=20, x_{2}=30x1=20,x2=30, 最大收益为 3360 元
2. 35 元可买到 1 桶牛奶, 买吗? 若买, 每天最多买多少?
设买 x3x_3x3 桶, 模型变为
maxz=72x1+64x2−35x3s.t.{(11−11280)⋅(x1x2x3)⩽(50480)0⩽(x1x2x3)⩽(10003+∞+∞)\begin{gathered} \max z=72 x_{1}+64 x_{2}-35 x_3 \\ s.t. \begin{cases} \left( \begin{matrix} 1& 1& -1\\ 12& 8& 0\\ \end{matrix} \right) \cdot \left( \begin{array}{c} x_1\\ x_2\\ x_3\\ \end{array} \right) \leqslant \left( \begin{array}{c} 50\\ 480\\ \end{array} \right) \\ \mathbf{0} \leqslant \left( \begin{array}{c} x_1\\ x_2\\ x_3\\ \end{array} \right) \leqslant \left( \begin{array}{c} \frac{1000}{3}\\ + \infty \\ + \infty \\ \end{array} \right) \end{cases} \end{gathered} maxz=72x1+64x2−35x3s.t.⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧(11218−10)⋅⎝⎛x1x2x3⎠⎞⩽(50480)0⩽⎝⎛x1x2x3⎠⎞⩽⎝⎛31000+∞+∞⎠⎞
from scipy.optimize import linprog
c=[-72, -64, 35] #目标向量
A =[[1, 1, -1],[12, 8, 0]]; b=[[50],[480]]
bound=((0,100/3.0),(0,None),(0,None))
res=linprog(c,A,b,None,None,bound,method='simplex')
print('最优值:',res.fun)
print('最优解:',res.x)
最优值: -3490.0
最优解: [ 0. 60. 10.]
所以应该买 10 桶, 最大收益 3490 元
3. 可聘用临时工人,付出的工资最多是每小时几元?
计算间增加 1 单位的利润增长
from scipy.optimize import linprog
c=[-72, -64] #目标向量
A =[[1, 1],[12, 8]]
b1=[[50],[480]]
bound=((0,100/3.0),(0,None))
res1=linprog(c,A,b1,None,None,bound,method='simplex')
b2=[[50],[480+1]]
bound=((0,100/3.0),(0,None))
res2=linprog(c,A,b2,None,None,bound,method='simplex')
print(res1.fun-res2.fun)
2.0
即时间增加 1 单位, 利润增长 2 元, 所以聘用临时工人付出的工资最多每小时 2 元.
4. A1A_1A1的获利增加到 30 元/kg, 应否改变生产计划?
将目标函数变为 maxz=90x1+64x2\max z=90 x_{1}+64 x_{2}maxz=90x1+64x2 再次求解
from scipy.optimize import linprog
c=[-90, -64] #目标向量
A=[[1, 1],[12, 8]]; b=[[50],[480]]
bound=((0,100/3.0),(0,None))
res=linprog(c,A,b,None,None,bound,method='simplex')
print('最优值:',res.fun)
print('最优解:',res.x)
最优值: -3720.0
最优解: [20. 30.]
最优解仍为 x1=20x_{1}=20x1=20, x2=30x_{2}=30x2=30, 无需改变生产计划.
奶制品的生产销售计划二 (深加工)
1桶牛奶→{→12h3kgA1→{获利 24元/kg→1kg,2h,3元0.8kgB1→获利 44元 /kg→8h4kgA2→{获利 16元/kg→1kg,2h,3元0.75kgB2→获利 32元 /kg1 \ \text{桶牛奶} \rightarrow \begin{cases} \xrightarrow{12 \ \mathrm{h}} 3 \ \mathrm{kg} \ A_1 \rightarrow \begin{cases} \text { 获利 } 24 \text {元} / \mathrm{kg}\\ \xrightarrow{1 \ \mathrm{kg}, \ 2 \ \mathrm{h}, \ 3 \text{元}}0.8 \ \mathrm{kg} \ {B}_{1} \rightarrow \text { 获利 } 44 \text { 元 } / \mathrm{kg} \end{cases} \\ \xrightarrow{8 \ \mathrm{h}} 4 \ \mathrm{kg} \ A_2 \rightarrow \begin{cases} \text { 获利 } 16 \text {元} / \mathrm{kg}\\ \xrightarrow{1 \ \mathrm{kg}, \ 2 \ \mathrm{h}, \ 3 \text{元}}0.75 \ \mathrm{kg} \ {B}_{2} \rightarrow \text { 获利 } 32 \text { 元 } / \mathrm{kg} \end{cases} \end{cases} 1 桶牛奶→⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧12 h3 kg A1→{ 获利 24元/kg1 kg, 2 h, 3元0.8 kg B1→ 获利 44 元 /kg8 h4 kg A2→{ 获利 16元/kg1 kg, 2 h, 3元0.75 kg B2→ 获利 32 元 /kg
每天 50 桶牛奶, 时间 480 h, 至多加工 100 kg A1A_1A1.
- 制订生产计划, 使每天净利润最大;
- 30 元可增加 1 桶牛奶, 3 元可增加 1 h 时间, 应否投资?
- 现投资 150 元, 可赚回多少?
- B1,B2B_1, B_2B1,B2 的获利经常有 10% 的波动, 对计划有无影响?
- 每天销售 10 kg A1A_1A1 的合同必须满足, 对利润有什么影响?
1. 制订生产计划, 使每天净利润最大
设出售 x1kgA1,x2kgA2x_{1} \operatorname{kg} A_{1}, x_{2} \operatorname{kg} A_{2}x1kgA1,x2kgA2, x3kgB1,x4kgB2x_{3} \operatorname{kg} B_{1}, x_{4} \operatorname{kg} B_{2}x3kgB1,x4kgB2,. x5kgA1x_{5} \operatorname{kg} A_{1}x5kgA1 加工 B1B_{1}B1, x6kgA2x_{6} \operatorname{kg} A_{2}x6kgA2 加工 B2B_{2}B2
有 x5=x30.8\displaystyle{x_5=\frac{x_3}{0.8}}x5=0.8x3, x6=x40.75\displaystyle{x_6=\frac{x_4}{0.75}}x6=0.75x4
建立线性规划模型
maxz=24x1+16x2+44x3+32x4−3x5−3x6s.t.{x1+x53+x2+x64≤504(x1+x5)+2(x2+x6)+2x5+2x6≤480x1+x5≤100xi≥0\begin{gathered} \max \quad z=24 x_{1}+16 x_{2}+44 x_{3}+32 x_{4}-3 x_{5}-3 x_{6} \\ s.t. \begin{cases} \displaystyle{\frac{x_{1}+x_{5}}{3}+\frac{x_{2}+x_{6}}{4} \leq 50} \\ 4\left(x_{1}+x_{5}\right)+2\left(x_{2}+x_{6}\right)+2 x_{5}+2 x_{6} \leq 480\\ x_{1}+x_{5} \leq 100 \\ x_i \geq 0 \end{cases} \end{gathered} maxz=24x1+16x2+44x3+32x4−3x5−3x6s.t.⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧3x1+x5+4x2+x6≤504(x1+x5)+2(x2+x6)+2x5+2x6≤480x1+x5≤100xi≥0
⟹\Longrightarrow⟹
maxz=24x1+16x2+1614x3+28x4s.t.{(1314512134215216310540)(x1x2x3x4)⩾(50480100)(x1x2x3x4)⩾0\begin{gathered} \max \quad z=24 x_{1}+16 x_{2}+\displaystyle{\frac{161}{4}} x_{3}+28 x_{4} \\ s.t.\begin{cases} \left( \begin{matrix} \frac{1}{3}& \frac{1}{4}& \frac{5}{12}& \frac{1}{3}\\ 4& 2& \frac{15}{2}& \frac{16}{3}\\ 1& 0& \frac{5}{4}& 0\\ \end{matrix} \right) \left( \begin{array}{c} x_1\\ x_2\\ x_3\\ x_4\\ \end{array} \right) \geqslant \left( \begin{array}{c} 50\\ 480\\ 100\\ \end{array} \right) \\ \left( \begin{array}{c} x_1\\ x_2\\ x_3\\ x_4\\ \end{array} \right) \geqslant \mathbf{0} \end{cases} \end{gathered} maxz=24x1+16x2+4161x3+28x4s.t.⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧⎝⎛3141412012521545313160⎠⎞⎝⎜⎜⎛x1x2x3x4⎠⎟⎟⎞⩾⎝⎛50480100⎠⎞⎝⎜⎜⎛x1x2x3x4⎠⎟⎟⎞⩾0
用 scipy.optimize.linprog 函数求解
from scipy.optimize import linprog
c=[-24, -16, -161/4, -28] #目标向量
A =[[1/3, 1/4, 5/12, 1/3],[4, 2, 15/2, 16/3],[1, 0, 5/4, 0]]
b=[[50],[480],[100]]
Lb=[0]*4; Ub=[None]*4
bound=tuple(zip(Lb, Ub))
res=linprog(c,A,b,None,None,bound,method='simplex')
print('最优值:',res.fun)
print('最优解:',res.x)
最优值: -3460.8
最优解: [ 0. 168. 19.2 0. ]
每天销售 168 kg A2A_2A2 和 19.2 kg B1B_1B1, 利润 3460.8 元
2. 30 元可增加 1 桶牛奶, 3 元可增加 1 h 时间, 应否投资?
# 增加牛奶
from scipy.optimize import linprog
c=[-24, -16, -161/4, -28] #目标向量
A =[[1/3, 1/4, 5/12, 1/3],[4, 2, 15/2, 16/3],[1, 0, 5/4, 0]]
b1=[[50],[480],[100]]
Lb=[0]*4; Ub=[None]*4
bound=tuple(zip(Lb, Ub))
res1=linprog(c,A,b1,None,None,bound,method='simplex')
b2=[[50+1],[480],[100]]
res2=linprog(c,A,b2,None,None,bound,method='simplex')
print(res1.fun-res2.fun)
37.91999999999962
即增加 1 桶牛奶使利润增长 37.92 元
# 增加时间
from scipy.optimize import linprog
c=[-24, -16, -161/4, -28] #目标向量
A =[[1/3, 1/4, 5/12, 1/3],[4, 2, 15/2, 16/3],[1, 0, 5/4, 0]]
b1=[[50],[480],[100]]
Lb=[0]*4; Ub=[None]*4
bound=tuple(zip(Lb, Ub))
res1=linprog(c,A,b1,None,None,bound,method='simplex')
b2=[[50],[480+1],[100]]
res2=linprog(c,A,b2,None,None,bound,method='simplex')
print(res1.fun-res2.fun)
3.2600000000002183
即增加 1 h 时间使利润增长 3.26 元
3. 现投资 150 元, 可赚回多少?
相同投资增加牛奶的收益 (37.9230=1.264\frac{37.92}{30}=1.2643037.92=1.264) 大于增加时间的收益 (3.263=1.087\frac{3.26}{3}=1.08733.26=1.087), 所以投资 150 元增加 5 桶牛奶, 可赚回 189.6 元
4. B1,B2B_1, B_2B1,B2 的获利经常有 10% 的波动, 对计划有无影响?
目标函数变为 maxz=24x1+16x2+44(1±0.1)x3+32(1±0.1)x4−3x5−3x6\max \, z=24 x_{1}+16 x_{2}+44(1\pm 0.1) x_{3}+32(1\pm 0.1) x_{4}-3 x_{5}-3 x_{6}maxz=24x1+16x2+44(1±0.1)x3+32(1±0.1)x4−3x5−3x6, x5=x30.8\displaystyle{x_5=\frac{x_3}{0.8}}x5=0.8x3, x6=x40.75\displaystyle{x_6=\frac{x_4}{0.75}}x6=0.75x4, 分别求解
from scipy.optimize import linprog
c0=[-24, -16, -161/4, -28] #目标向量
A =[[1/3, 1/4, 5/12, 1/3],[4, 2, 15/2, 16/3],[1, 0, 5/4, 0]]
b=[[50],[480],[100]]
Lb=[0]*4; Ub=[None]*4
bound=tuple(zip(Lb, Ub))
res0=linprog(c0,A,b,None,None,bound,method='simplex')
# B1 增加 10%
c11=[-24, -16, -893/20, -28]
res11=linprog(c11,A,b,None,None,bound,method='simplex')
# B1 减少 10%
c12=[-24, -16, -717/20, -28]
res12=linprog(c12,A,b,None,None,bound,method='simplex')
# B2 增加 10%
c21=[-24, -16, -161/4, -156/5]
res21=linprog(c21,A,b,None,None,bound,method='simplex')
# B2 减少 10%
c22=[-24, -16, -161/4, -124/5]
res22=linprog(c22,A,b,None,None,bound,method='simplex')
print('原始方案',res0.x)
print('B1增加10%',res11.x)
print('B1减少10%',res12.x)
print('B2增加10%',res21.x)
print('B2减少10%',res22.x)
原始方案 [ 0. 168. 19.2 0. ]
B1增加10% [ 0. 168. 19.2 0. ]
B1减少10% [ 0. 160. 0. 30.]
B2增加10% [ 0. 160. 0. 30.]
B2减少10% [ 0. 168. 19.2 0. ]
B1B_1B1 获利下降 10%, B2B_2B2 获利上升 10%时对计划有影响, 所以浮动对计划有影响
5. 每天销售 10 kg A1A_1A1 的合同必须满足, 对利润有什么影响?
增加约束条件 x1≥10x_1 \geq 10x1≥10, 再次求解
from scipy.optimize import linprog
c=[-24, -16, -161/4, -28] #目标向量
A =[[1/3, 1/4, 5/12, 1/3],[4, 2, 15/2, 16/3],[1, 0, 5/4, 0]]
b=[[50],[480],[100]]
Lb0=[0]*4; Ub=[None]*4
Lb=[10,0,0,0]
bound0=tuple(zip(Lb0, Ub))
bound=tuple(zip(Lb, Ub))
res0=linprog(c,A,b,None,None,bound0,method='simplex')
res=linprog(c,A,b,None,None,bound,method='simplex')
print('最优值:',res.fun)
print('利润减少:',res0.fun-res.fun)
最优值: -3444.0
利润减少: -16.800000000000182
所以利润减少16元
数学建模:线性规划—奶制品的生产销售计划模型 (Python 求解)相关推荐
- 数学建模:插值与拟合—插值问题的python求解
目录 scipy.interpolate.interpnd 简介 一.一维插值 (interp1d) 二.二维网格节点插值 (interp2d) 三.二维散乱点插值 (griddata) scipy. ...
- 数学建模——线性规划模型详解Python代码
数学建模--线性规划模型详解Python代码 标准形式为: min z=2X1+3X2+x s.t x1+4x2+2x3>=8 3x1+2x2>=6 x1,x2,x3>=0 上述线性 ...
- Python数学建模—线性规划
我是猿童学,本文是根据司守奎老师<数学建模算法与程序>的书本内容编写,使用其书中案例,书中的编程语言是MATLAB.Lingo,我将使用Python来解决问题.接下来的一个月我将学习使用P ...
- 种群内禀增长率matlab求法,数学建模讲义:第三讲微分方程模型
<数学建模讲义:第三讲微分方程模型>由会员分享,可在线阅读,更多相关<数学建模讲义:第三讲微分方程模型(74页珍藏版)>请在人人文库网上搜索. 1.第三讲 微分方程模型,动态模 ...
- Algorithm:数学建模大赛之数学建模基础(经验/技巧)、流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价)、论文写作(意义/摘要/关键词/问题重述和模型假设/建模/文献)之详细攻略
Algorithm:数学建模大赛之数学建模基础(经验/技巧).流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价).论文写作(意义/摘要/关键词/问题重述和模型假设/建模/求解/结论/参考文 ...
- 数学建模——智能优化之粒子群模型详解Python代码
数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...
- 数学建模——一维、二维插值模型详解Python代码
数学建模--一维.二维插值模型详解Python代码 一.一维插值 # -*-coding:utf-8 -*- import numpy as np from scipy import interpol ...
- 数学建模清风第一次直播:传染病模型和微分方程拟合
学习网址:课件下载 数学建模清风第一次直播:传染病模型和微分方程拟合 数学建模清风第二次直播:模拟退火算法 数学建模清风第三次直播:excel在数学建模中的应用 博客笔记: 数学建模清风第一次直播:传 ...
- Matlab数学建模(七):连续模型
一.学习目标 (1)了解连续模型及解题步骤. (2)掌握用 dsolve 求解常见的微分方程解析解. (3)掌握用 ODE 家族的求解器求解数值解. (4)掌握使用专用的求解器求解. 二.实例演练 ( ...
- 数学建模:整数规划示例模型 (Python 求解)
目录 例 1 : 选课策略模型 1. 为了选修课程门数最少, 应学习哪些课程? 建立 0-1 规划模型 Python 求解 2. 选修课程最少时, 为了学分尽量多, 应学习哪些课程? 例 2 : 装箱 ...
最新文章
- 基本控件HyperlinkButton控件
- 2016-11-15试题解题报告
- BannerDemo【图片轮播图控件】
- 数据分析师被老板问住了——场面一度非常尴尬。
- 历届试题 大臣的旅费(树的直径)
- ORA-28547 连接服务器失败,可能是Oracle Net 管理错误
- Python中的getpass模块
- 使用FlashFXP V3.8烈火汉化绿色版软件连接Linux
- python log模块_Python日志模块-logging
- java selenium (十三) 智能等待页面加载完成
- 谷歌:早在这个0day 补丁发布前几周,朝鲜国家黑客就已利用
- rac节点频繁重启的问题分析
- zip知识点的部分总结!
- matlab遗传算法求解TSP旅行商问题
- Work breakdown structure 简介
- 2022-01-24:K 距离间隔重排字符串。 给你一个非空的字符串 s 和一个整数 k,你要将这个字符串中的字母进行重新排列,使得重排后的字符串中相同字母的位置间隔距离至少为 k。 所有输入的字符串
- 设计模式7-适配器模式
- 本科毕设-基于C8051单片机的身份识别系统设计
- 优化爬山法之八皇后问题
- 计算机考研abc区划分,考研abc区有什么区别