优化模型在科学生产、工程领域、企业管理、社会经济等领域有非常广泛的应用,主要通过对现实问题的简化,将生活中的实际因素抽象为决策变量,从而建立数学类的优化模型,获得最佳的决策方案。
【示例3.3.1】——生猪出售时机问题
一饲养场每天投入5元资金用于饲料、设备、人力,估计可使一头85公斤重的生猪每天增加2公斤。目前生猪出售的市场价格为每公斤9元,但是预测每天会降低0.01元,问该场应该什么时候出售生猪可以获得最大利润。
问题分析
设在第t天出售生猪(生猪初始状态下的体重为85公斤),则:(1)出售时每头生猪的体重w为:w(t)=85+2t;
(2)出售时每头生猪总的投入c为:c(t)=5t
(3)出售时每头生猪的价格p为:p(t)=(9-0.1t)w
(4)在第t天出售每头生猪获得的纯利润为:
模型建立
要使每头生猪获得最大的利润,可以建立无约束的非线性的最大化模型如下:
模型求解
Lingo软件输入窗口编写代码如下:
图3.3.1 生猪出售时机模型
运行后得到输出结果为:
结果解释
由于时间t在实际问题中只能取整数,因而分别计算t=303时,利润L=2610.27;t=304时,利润L=2610.28,因而在第303天或者304天出售这样的生猪都可以获得最大利润约为2610元。
【示例3.3.2】——选课策略问题
某高校针对计算机专业的学生开设部分专业选修课,要求学生毕业时必须至少学过两门数学课、三门运筹学课和两门计算机课,这些课程的编号、名称、学分、所属类别和先修课程具体要求见表3.3.1,试根据表中信息完成以下问题:
(1)毕业时学生最少可以学习这些课程中的哪些课程?
(2)如何选课,学生才能选修最少的课程获得最多的学分?
表3.3.1 课程信息一览表
问题分析
设九门课程分别记为:x i,i=1,2,3…,9,x i只能取0或者1。当学生选这门课程时,对应的变量取为1,否则为0。
约束条件(1)—课程约束
要求学生毕业时至少学过两门数学课、三门运筹学课和两门计算机课,对应的数学表达式为:
约束条件(2)—0-1约束
九门课程对应的变量xi只能取0或者1,对应的数学表达式为:
约束条件(3)—先修课程约束
例如,学生要想选修最优化方法这门课程,得先修过微积分和线性代数这两门课程,对应的数学表达式为:x 3≤x 1,x 3≤x 2,下面将所有先修课程约束条件转换为数学表达式见表3.3.2。
表3.3.2 约束条件一览表
模型建立
(1)针对第一问,学生毕业时所学课程门数最少的目标建立有约束的0-1线性规划模型如下:
模型求解
Lingo软件输入窗口编写代码如下:
图3.3.2 选课问题模型
运行后得到输出结果为:x 1=x 2=x 3=x 6=x 7=x 9=1,其他为0。
结果解释
学生可以选修微积分、线性代数、最优化方法、计算机模拟、计算机编程、数学实验这6门课程,获得总学分21个学分;如果增加选修数据结构、应用统计、预测理论这三门中的某一门课程,目标函数(课程数)会增加一个。
(2)设每门课程对应的学分为pi(i=1,2,…,9),针对第二问中学生毕业时所学课程最少、获得学分最多的目标建立多目标的0-1线性规划模型如下:
将上述双目标的0-1线性规划问题转化为单目标0-1线性规划问题如下:
注 目标函数中的w为权重,取值在0,1之间,w取不同的值对结果有稍微的影响。下面以w=0.7为例,对模型进行求解。
模型求解
Lingo软件输入窗口编写代码如下:
图3.3.3 多目标选课问题模型
运行后得到输出结果为:
结果解释
学生可以选修微积分、线性代数、最优化方法、数据结构、应用统计、计算机模拟、计算机编程、数学实验这8门课程,获得总学分28个学分。
注 当w<2/3时,该问题的最优解与w=0的结果相同,即主要考虑获得学分最多的目标;当w>3/4时,该问题的最优解与w=1的结果相同,即主要考虑所选课程最少的目标。
【示例3.3.3】——奶制品加工问题(www.xing528.com)
一奶制品加工厂用牛奶生产A1,A2两种初级奶制品,它们可以直接出售也可以分别加工成B1,B2两种高级奶制品再出售。按目前技术每桶牛奶可加工成2kg A1和3kg A2,每桶牛奶的买入价为10元,加工费为5元,加工时间为15h。每千克A1可进一步加工为0.8kgB1,加工费为4元,加工时间为12h;每千克A2可进一步加工为0.7kgB2,加工费为3元,加工时间为10h。初级奶制品A1,A2的售价为10元/kg和9元/kg,高级奶制品B1,B2的售价为30元/kg和20元/kg。工厂现有的加工能力为每周共2000h,根据市场需求量,高级奶制品的需求量占全部奶制品需求量的20%至40%。试在供需平衡的条件下为该厂制定一周的生产计划,使获得的利润最大。
问题分析
购买的牛奶总数为y桶;生产的奶制品A1,A2的数量分别为x 1,x 2;A1,A2中用于加工高级奶制品数量分别为x 3,x 4;每周出售的奶制品A1,A2,B1,B2的数量分别为x 5,x 6,x 7,x 8,则:
目标函数分析
(1)成本分析:加工为初级奶制品的总成本为15y;
进一步加工为高级奶制品的总成本为4x 3+3x 4;
(2)收入分析:每周的总收入为10x 1+9x 2+30x 3+20x 4;
(3)利润分析:每周的总利润为
约束条件分析
(1)加工能力约束:15y+12x 3+10x 4≤2000;
(2)用量约束:
(3)销量约束:
(4)非负约束:y≥0,xi≥0,i=1,2,…,8。
模型建立
针对供需平衡的条件下获得利润最大的目标,建立最大化线性规划模型如下:
模型求解
Lingo软件输入窗口编写代码如下:
图3.3.4 奶制品加工问题模型
图3.3.5 奶制品加工问题求解报告
运行后得到输出结果为:
x 1=78.43,x 2=94.12,x 3=78.43,x 4=0,x 5=70.59,x 6=94.12,x 7=62.75,x 8=0,y=70.59,z=2611.77。
结果解释
购买的牛奶总数为71桶;生产的奶制品A1,A2的数量分别为78.43,94.12kg;A1,A2中用于加工高级奶制品数量分别为78.43,0kg;每周出售的奶制品A1,A2,B1,B2的数量分别为0,94.12,62.75,0kg,获得最大利润为2611.77元。
灵敏度分析
图3.3.5所示求解报告中的DUAL PRICES给出了这几种原料增加1个单位时的影子价格,如生产奶制品A1增加1个单位时,利润增长1.305元;生产奶制品A2增加1个单位时,利润大约降低34.58元;而用10元购买1桶牛奶时,可生产奶制品A1共2kg,总利润可增加2.6元,显然低于成本价格,因而不建议再次加购牛奶。
【示例3.3.4】——人员分配问题
假设每周7天为社区进行服务,但是所有志愿者每周需工作5天,休息2天。根据团队以往的组织经验,预计每周周一至周日对志愿者人数的需求量分别是30 30 18 16 23 14 19,求在满足对志愿者需求的前提下,该团每天需要招募多少志愿者,使一周所招募的志愿者人数最少?
问题分析
(1)寻找本题中需要建立的原始集,即每周的天数,用days表示;(2)数据段中初始化days的数据成员;
(3)确定days的属性,每天需要招募的人数和每天开始工作的人数,分别用required和hire表示;
(4)目标函数:招募志愿者人数最少,
(5)约束条件:每天必须有足够的志愿者满足社区服务的需求,即
模型建立
注 @wrap(index,limit)返回[1,limit]之间的数。
当days(j)=1时,days(i)=1 2 3 4 5,由于循环周期为7,因而@wrap(j+i+2,7))返回值为4 5 6 7 1;
当days(j)=2时,days(i)=1 2 3 4 5,由于循环周期为7,因而@wrap(j+i+2,7))返回值为5 6 7 1 2。
【能力训练3.3】
1.水泥配送问题(非线性规划)
某水泥加工厂的两个料场A(5,1)、B(2,7),每天向六个建筑工地运输水泥的供应计划见表1,每个工地的地理位置和水泥日均需求量见表2,试制定每天的供应计划,使总的吨千米数(距离×运量)最少?
表1 A、B料场每天的供应量
表2 六个工地的地理位置和水泥日需求量
2.奶制品加工(整数规划)
如果示例3.3.3中要求牛奶必须购买整数桶,该问题又应该如何求解,并对结果进行灵敏度分析。
3.队员选拔
现需对某次大赛参加混合泳的队员进行选拔,目前共有5名候选人的百米成绩见表3。
表3 5名候选人的百米成绩
试建立优化模型完成下列问题:
(1)如何选拔队员组成4×100米的混合泳接力队?
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。