内容发布更新时间 : 2024/12/27 14:52:21星期一 下面是文章的全部内容请认真阅读。
实验一: 数学规划模型AMPL求解 专业年级: 2014级信息与计算科学1班 姓名: 黄志锐 学号:201430120110
一、实验目的
1. 熟悉启动AMPL的方法。 2. 熟悉SCITE编辑软件的运行。 3. 熟悉AMPL基本编程。
4. 熟悉AMPL求解数学规划模型的过程。
二、实验内容
1. 用AMPL求解下列问题并作灵敏度分析:
一奶制品加工厂用牛奶生产A1和A2两种奶制品,1桶牛奶可以在甲类设备上用12小时加工成3公斤A1或者在乙类设备上用8小时加工成4公斤A2,且都能全部售出,且每公斤A1获利24元,每公斤A2获利16元。先加工厂每天能得到50桶牛奶的供应,每天工人总的劳动时间为480小时,并且甲类设备每天至多加工100公斤A1,乙类设备的加工能力没有限制,试为该厂制定一个计划,使每天的获利最大。
基本模型:
根据题意,设每天用 桶牛奶生产 ,用 桶牛奶生产 ,每天获利为 元,则可建立线性规划模型如下:
模型求解:
使用AMPL编程求解上述线性规划模型(并作敏感性分析)代码如下: milk.mod: 1 2 3 4 5 6 7 8 9 set Products ordered; #产品集合 param Time{i in Products }>0; #加工时间 param Quan{i in Products}>0; #单位产量 param Profit{i in Products}>0; #单位利润 var x{i in Products}>=0; #决策变量 maximize profit:sum{i in Products} Profit[i]*Quan[i]*x[i]; subject to raw:sum{i in Products} x[i]<=50; subject to time:sum{i in Products} Time[i]*x[i]<=480; subject to capacity: Quan[first(Products)]*x[first(Products)]<=100;
milk.dat: 1 2 3 4 set Products := A1 A2; param Time := A1 12 A2 8; param Quan := A1 3 A2 4; param Profit := A1 24 A2 16;
milk.run: 1 2 3 4 5 6 7 8 9 model milk.mod; data milk.dat; option solver cplex; option cplex_options 'sensitivity'; solve; display x; display x.rc, x.down, x.up; display raw, time, capacity; display raw.down, raw.up,raw.current, raw.slack; 结果分析:
使用AMPL编程求解上述线性规划模型(并作敏感性分析)结果如下:
通过分析上述结果可知,该线性规划模型的全局最优解为 ,
则最优值为3360(即最大利润为3360元)。求解过程中迭代次数为2次。
对上述线性规划模型进行敏感度分析有:
1.目标函数系数变化范围:
x.rc x.down x.up := x1 0 64 96 x2 0 48 72 ;
即x.rc为最优解下“资源”增加1单位时“效益”的增量; x.down,x.up为最优解不变时目标函数系数允许变化范围。 2.影子价格
raw = 48 原料增加1单位, 利润增长48; time = 2 时间增加1单位, 利润增长2; capacity = 0 加工能力增长不影响利润
即1桶牛奶的影子价格为48元,1小时劳动的影子价格为2元,甲类设备的影子价格为0元。