当前课程知识点:数学建模 > 4 数学规划I > 4-1 线性规划——生产计划 > 线性规划——生产计划
在我们日常生活中要做很多决策
而且这些决策
都要各种各样的限制条件下
比如说企业管理、生产计划
对
在经济管理、工程技术、企业生产等
实际工作生活中
常常遇到一类问题是
要在一系列限制条件下给出
使得某项或者多项指标最优
最大或最小的决策方案
这类问题我们统称为最优化问题
数学规划是求解这类问题的常用方法
它包括三个要素
一是决策变量
即该问题要求解答那些未知量
二是目标函数
该问题要优化哪些指标的
数学表达式
三是约束条件
即该问题对决策变量的限制条件
数学规划模型
所有的决策变量都是实数
且目标函数和约束条件
都是线性函数式称为线性规划
若数学规划模型的目标函数和约束条件
至少有一个函数是非线性函数式
称为非线性规划
若数学规划模型的决策变量至少
有一个只能取整数式
称为整数规划
若数学规划模型有
多个目标函数式
称为多目标规划
线性规划模型的一般形式为
矩阵形式为
其中称z为目标函数的目标值
称c等于c1、c2到cn
为目标函数的系数向量
称x等于x1、x2到xn
为目标函数的系数向量
称b等于b1、b2到bn
为约束方程组的系数矩阵
你说得太复杂了听不懂
我刚好遇到一个问题
要不你帮我看看这怎么解决吧
我们在工厂生产甲乙两个产品
生产这两种产品的时候
需要消耗两种原料A和B
生产每吨产品甲需要A原料1.2吨
B原料1.8吨
生产每吨产品乙需要A原料2.9吨
B原料1.3吨
产品甲、乙销售利润分别为
7.8、9.2千元每吨
本周最多可销售50吨、30吨
工厂本周最多可以获得A、B原料
110吨、120吨
那我们该怎么制定本周的生产计划呢
我们先来清晰这个问题
看这个关系图表
那我们一起来进行数学建模
首先我们要确定你的
回答你的问题结构
你的问题是本周生产计划
那我们就要表达这个生产计划
那就是
本周生产多少吨产品甲
生产多少吨产品乙
恩 对
我们如何给出了一个生产计划
如何评价这个方案合理呢
郝问题
你认为什么样的生产计划才是好的呢
我希望在这个生产方案下
工厂所获的利润最大
工厂利润最大
就是评价生产计划的依据
要找到合适的生产计划
还需要在一定的限制下
比如工程原料供应的限制
产量的限制
小结一下
我们来给出这个问题的问题分析
这是一个优化问题
这个优化问题的目标是使得
工厂本周利润最大
要做的决策是
工厂本周的生产计划
即本周生产多少吨产品甲
生产多少吨产品乙
决策受到2个条件的制约
原料供应、产量限制
根据问题描述和分析
将决策变量、目标函数
和约束条件刻画出来
就可以得到下面的基本模型
决策变量
刻画回答问题的结构
这里问题是
确定本周生产计划
即本周生产多少吨产品甲
生产多少吨产品乙
故设本周生产x1吨产品甲
生产x2吨产品乙
目标函数
使得加工厂本周利润最大
即本周销售产品甲的利润
加销售产品乙的利润
设本周获利z元
x1吨产品甲
获利7.8x1千元
x2吨产品乙
获利9.2x2千元
故z等于7.8x1加9.2x2
约束条件
原料供应
本周用于生产产品甲和乙的原料A
总量不得超过本周原料A的供应量
即1.2x1加2.9x2小于等于110
本周用于生产
产品甲和产品乙的原料B
总量不得超过本周原料B的供应量
即1.8x1加1.3x2小于等于120
还有产量限制
产品甲和乙的本周生产量
不得超过本周的最大销售量
即x1小于等于50
x2小于等于30
非负约束
即x1、x2均为非负实数
x1大于等于0、x2大于等于0
最后我们可以得到总的数学模型
我们来小结一下这个建模过程
我们根据问题从问题出发
进行分析
得到解决这个问题优化模型结构的
三大要素
决策变量、目标函数、系列约束函数
我们先给出基本模型
叙述目标函数、约束函数
都是采用先给出文字表达函数关系
再给出符号表达的数学函数的方式
建立基本模型
最后再给出完整的数学模型
这样逐步推进
使得我们面对复杂问题时
可以让我们的思路更清晰
建模过程更有条理
这样我们就建立了数学模型
那结果呢
结果就要找我们技术猿来帮忙了
hi 技术猿
我们得到了一个优化模型
你看一看这个怎么求解呢
我们可以编写各种优化算法的程序
来解决这个模型
但是这类方法一般都会比较繁琐
所以为了简化这些繁琐的过程
我们可以运用一些相关的软件
比较有代表性的
就是Matlab软件和 LINGO软件
这个问题我们采用LINGO软件
下面我来介绍一下LINGO软件
LINGO软件它是由
美国LINDO公司推出的
它的功能十分强大
专门用于求解优化模型
下面我们就来用LINGO软件
来具体求解这个模型吧
首先我们在LINGO软件下面
新建一个模型文件
然后输入程序代码
LINGO的程序
一般都是以model开头
以end结束的
也可以省略不写
这个看个人的编程风格
字体的大小写不用区分
每个语句必须用分号来隔开
注意必须是英文的分号
而且所有输入的代码
都要用英文输入法
不能用中文输入法
LINGO中所有的决策变量
都是非负的
如果你输入大于
它其实表述的是大于等于
这个时候就可以简写
直接输大于就可以表示大于等于了
在我们输入模型中的第一行
为目标函数
下面的几行前面标有st1、st2
等是对各个约束的命名
以便在结果中对应查找相关的信息
最后我们将文件命名保存
并按菜单中的solve执行
最后可以得到如下结果
结果中的前三行表明
LINGO求出了模型的全局最优解
最优值为548.6
即本周工厂最大可获利548.6207千元
接下来的三行表明
最优解具体的参数
x1等于50、x2等于17.24
既然有了结果
我们下面就要对结果进行一些分析
继续挖掘它结果所隐含的信息
根据上面结果显示的最优解
我们进行下面具体的分析
首先1中4个约束条件的右端
分别表示原料A的供应
原料B的供应
本周产品甲产量限制
本周产品乙产量限制
LINGO结果输出第9至12行
给出了4种资源在最优解条件下
是否有剩余
首先 原料A剩余为0
原料B剩余为7.58
本周产品甲的产量剩余为0
本周产品乙的产量剩余为12.75
一般我们称剩余为0的约束条件为紧约束
或者称它为有效约束
目标函数不能进一步优化
正是紧约束所导致的
紧约束一旦放宽
那么它的目标函数值
就会得到进一步的优化
也是说本周生产50吨产品甲
约17吨产品乙
工厂的利润最大约为548千元
谢谢 谢谢技术猿
谢谢数模君
数模君
这个问题已经解决了
但是我在实际问题中
还是有一些困惑
一些附带的问题
比如说如需购置原料A以增加产量
最多应付原料A多少千元每吨
最多可采购多少吨呢
这个我知道
LINGO软件可以专门的
对这些信息进行分析
不过只能对线性规划模型才有意义
嗯 技术猿说得对
这是模型分析和讨论的工作
我建议采用直接建模
再求解的办法来解决这类问题
比如郝问题提出的这个问题
若需购买原料A以增加产量
最多应再付原料A多少千元每吨
最多可采购多少吨
将优化模型的式2的右段项
110改为111
可以得到目标最优值
也就是利润
由548增至551
增长了约3吨
因此若购买原料A以增加产量
最多应再付原料A3千元每吨
最多可采购多少吨呢
设最多可采购h吨
将目标函数改为
将式2改为
对应修改LINGO程序代码得到结果为
h等于15
即最多可采购15吨
太好了
直接根据问题来修改优化模型
再求解就可以了
那么如果有人提出来
甲产品的利润上浮5%
是否需要调整生产计划的问题
那产品甲的利润
由7.8千元每吨改为8.19千元每吨
因此目标函数z等于
改为z等于
对应修改LINGO程序代码
得到的结果为
x1等于50
x2等于17.24
即不需要调整生产计划了
-1-1 数学建模无处不在
--数学建模无处不在
-1-2 从现实对象到数学模型
-1-3 数学建模的基本方法和步骤
-1-4 如何学习数学建模
--如何学习数学建模
-1 数学建模无处不在--本章测验
-2-1 数学建模思维
--数学建模思维
-2-2 几种创新思维
--几种创新思维
-2-3 问题的提出与分析
--问题的提出与分析
-2-4 建模目标
--建模目标
-2-5 建模计划
--建模计划
-2-6 建立数学模型
--建立数学模型
-2 数学建模思维与过程--本章测验
-3-1 储蓄存单和抵押贷款买房
-3-2 单车租赁调度
--单车租赁调度
-3-3 最佳出售时机
--最佳出售时机
-3-4 名额的公平分配
--名额的公平分配
-3-5 汽车的油耗
--汽车的油耗
-3-6 传染病模型
--传染病模型
-3 数学建模初等方法--本章测验
-4-1 线性规划——生产计划
-4-2 线性规划——运输问题
-4 数学规划I--本章测验
-5-1 整数规划问题
--整数规划问题
-5-2 指派问题
--指派问题
-5-3 非线性规划
--非线性规划
-5-4其他规划模型
--其他规划模型
-5 数学规划II--本章测验
-6-1 层次分析法I
--层次分析法I
-6-2 层次分析法II
--层次分析法II
-6-3 其他评价方法
--其他评价方法
-6 层次分析法--本章测验
-7-1 线性回归I
--线性回归I
-7-2 线性回归II
--线性回归II
--线性回归III
-7-3 数据的自相关I
--数据的自相关I
-7-4 数据的自相关II
--数据的自相关II
-7-5 非线性回归
--非线性回归
-7 回归分析--本章测验
-8-1 数学建模方法综述
--数学建模方法综述
-8-2 数学建模报告
--数学建模报告
-8 数学建模方法与报告--本章测验