《运筹学》课程实验报告
实验名称: 实验三 灵敏性报告与运输规划 任课教师:
专 业: 班级: 姓名:
学 号: 完成日期:
一、实验目的
(1) 熟悉LINGO的模型结果报告的主要数据含义;
(2) 掌握在LINGO进行灵敏度分析的操作方法;
(3) 掌握运输规划的求解。
二、实验内容
(1) 实验1:
(2) 实验2:
(3) 实验3:略难
三、实验步骤及设计说明
(1) 实验1:
3.该报告说明:
(1)运行 3 步找到全局最优解,目标函数值为 29000 ,变量值分别为x1= 100 ,x2= 30 ;
(2)在“Slack or Surplus”(松弛或剩余)列,对于“<=”不等式,右减左的差值为Slack,对于“>=”不等式,左减右的差值为Surplus,从Row2和Row4的数值0,表示资源 1号生产线 和 劳动工时 在最优生产计划下已经用尽,从Row3的数值90,表示 2号生产线的资源使用剩余的资源还有90 ;
(3)“Dual Price”是对偶价格(影子价格),从报告中可看出,生产线1、生产线2和劳动工时的影子价格分别是 50 、 0 、 150 。
①若有2号生产线可以升级产量,升级成本是300,升级后的产量是200,问是否值得升级____不值得____?
②若通过加班来增加工人劳动力时间,那么付给工人的加班费每小时最多不能超过_150_______.
5.在模型窗口中,选择LINGO/Range选项,或按Ctrl+R,可得到该模型的灵敏度分析报告:
可以看到在最优基不改变的条件下,
x1的目标函数系数c1有效范围是[150,+∞],
x2的目标函数系数c2有效范围是 [ 0,400 ] ;
对应1号生产线资源b1的有效范围是 [ 0,160 ] ;
对应2号生产线资源b2的有效范围是 [ 30,+∞ ] ;
对应劳动工时b3的有效范围是 [ 100,340 ] .
(2) 实验2:
实验代码:
sets:
col/1..3/:a;
row/1..4/:b;
aa(col,row):c,x;
endsets
data:
a = 7,4,9;
b = 3,6,5,6;
c = 3,11,3,10,
1,9,2,8,
7,4,10,5;
enddata
min = @sum (aa:c*x);
@for (col(i):@sum (row(j):x(i,j)) = a(i));
@for (row(j):@sum (col(i):x(i,j)) = b(j));
实验3:
代码:
max = 550*x1 + 600*x2 + 350*x3 + 400*x4 + 200*x5;
12*x1 + 20*x2 + 25*x4 + 15*x5 <= 864;
10*x1 + 8*x2 + 16*x3 <= 576;
20*x1 + 20*x2 + 20*x3 + 20*x4 + 20*x5 <= 1152;
x2 >= 10;
x2 <= 100;
x4 >= 20;
x4 <= 150;
并结合模型结果报告和灵敏度分析报告回答下列问题:
(1)写出正确的线性规划模型与生产计划。
解:设x(i)为一周内产品p(i)的生产量,i=1,2,3,4,5;由题得,各种资源的限额为:
研磨工时:9*6*2*8=864;
钻孔工时:6*6*2*8=576;
装配工时:24*6*8=1152;
又可得10≤x2≤100,20≤x4≤150;
所以原问题的线性规划模型如下:
目标函数:maxz=550*x1+600*x2+350*x3+400*x4+200*x5;
约束条件:12*x1+20*x2+25*x4+15*x5≤864;
10*x1+8*x2+16*x3≤576;
20*x1+20*x2+20*x3+20*x4+20*x5≤1152;
x2≥10;
x2≤100;
x4≥20;
x4≤150;
x(i)≥0,i=1,2,3,4,5.
由lingo及联系实际解得:x1=14,x2=10,x3=14,x4=20,x5=0,maxz=26600
生产计划是生产产品p1,p2,p3,p4,p5分别为14,10,14,20,0件。
(2)这家工厂还有剩余的资源吗?若有,是哪种资源?有多少?
答:由截图可以看出,该工厂还有136.4小时钻床工时资源的剩余
(3)增加一台磨床每周将增加多少利润?
答:可知,增加一台磨床即一周增加研磨工时6*2*6=96工时。从图1可以得出研磨工时的影子价格为16.667,则说明每增加一工时的研磨可获得利润16.667元。又从图2可知,研磨工时的有效变化范围为(864-164=700,864+167.2=1031.2),而增加一台磨床后的研磨工时为864+96=960属于(700,1031.2),所以将增加的利润为:16.667*96=1600.032元。
(4)若钻孔的总工时下降至440,每周的利润有什么变化?
答:知其影子价格为0,而且有图2得出钻孔工时有效可变范围为(576-136.4=439.6,+∞),因440大于439.6,该变化没有超出可变范围,所以利润没有变化。
(5)若每周能增加劳动工时90人时,成本每人时8.5元,或者能租借研磨工艺100工时,每工时的租金为9.5元,您将选择哪一种方案?
答:由图1和图2得出劳动工时的有效变化范围为(873.5,1322.5),研磨工时的有效变化范围为(700,1031.2),而且增加之后的劳动工时为1152+90=1242和研磨工时为864+100=964都没有超出他们的有效变化范围;
所以他们分别增加的利润为:劳:90*(17.5-8.5)=810元
研:100*(16.667-9.5)=716.7元
综上,我选第二个方案。
(6)若产品P2的单位利润从600元增至650元,最优生产计划有什么变化?总利润会有什么变化?
答:由图2得p2的有效可变范围是(-∞,683.3),因650小于683.3,所以原问题的最优解不变,即最优生产计划不变,总利润会增加50*10=500元。
(7)产品P1的单位利润在什么范围变化,最优生产方案保持不变?总利润有改变吗?
答:由图2得出p1的有效可变范围是(500,+∞),最优生产方案不变,总利润会随着p1的单位利润变化而变化。
(8)若P4的最低需求变为25,或产品P2的最低需求变为5,总利润又是多少?
答:①由图2得,p4的灵敏度范+围是(7.1385,26.56),25在该范围内;由图1得p4的影子价格是负数,所以每增加1个单位的p4,总利润就相应的减少83.33333,总利润为:26600-5*83.33333=26183.33335
②同理。由图2知p2的灵敏度范围是(0,18.2),5在该范围内,由图1得p2的影子价格用为负数,所以每减少一个单位的p2,总利润就相应的增加366.6667,总利润为:26600+5*366.6667=28433.3335
(9)若减少两台磨床,对总利润有什么影响?
答:可知研磨的灵敏度范围是(700,1031.2),当减少2台磨床时,研磨工时变为864-2*96=672,不在该灵敏度范围内,最优解改变,总利润改变。研磨工时限额变为672小时,重新利用lingo计算问题,得出改变后的问题不可行。
四、实验结果与结论:
(1) 实验2
结果截图:
(2) 实验3
实验结果图(图1):
变量有效的可变范围图(图2):
实验3(第9小题)
五、实验中遇到的问题、解决方法及体会
(1) 实验3一开始有点难理解,要完全理解影子价格和灵敏度范围所代表的含义才能解答。
附录:程序源程序
(1)实验1:网页编辑
(2)实验2:列表
第二篇:实验三实验报告 2
贵州师范大学数学与计算机科学学院学生实验报告
课程名称:数值分析 班级: 数本(1)班 实验日期: 20##年1月9日
学 号:110701010039 姓名:欧习昌 指导教师:杨一都老师
实验成绩:
一、实验名称
实验三: 数值积分
二、实验目的及要求
1. 让学生掌握复化梯形法, 复化Simpson法和Romberg公式以及变步长梯形法,变步长Simpson法
2. 让学生能够用这些方法解决一些具体问题
三、实验环境
每人一台微机,要求安装Windows2000或Windows XP操作系统,Matlab软件
四、实验内容
题1 从地面发射一枚火箭,在最初80 s 内记录起加速度如下表, 试求火箭在第50s,80s时的速度.
要求:分别用复化梯形法,复化Simpson 法和 Romberg公式计算.
题2 给定积分 和 ,分别用下列方法计算积分值要求准确到 ,并比较分析计算时间.
1) 变步长梯形法;
2) 变步长 Simpson 法
3) Romberg 方法
五、算法描述及实验步骤
六、题1(1)根据复合梯形公式:Tn=
根据已知输入数据a=[30.00,31.63,33.44,35.47,37.75,40.33,42.39,46.69,50.67]
步1:输入h
步2:T=(h/2)*(a(1)+a(6)+2*(a(2)+a(3)+a(4)+a(5)))
步3:T=(h/2)*(a(1)+2*(a(2)+a(3)+a(4)+a(5)+a(6)+a(7))+a(8))
(2)根据复合simpson公式:Sn=
根据已知输入数据a=[30.00,31.63,33.44,35.47,37.75,40.33,42.39,46.69,50.67]
先用Lagrange插值得出t=5,15,25,35,45,55,65,75处的值
步1:h=;Sn=f(a)-f(b);x=a.
步2:对k=1,2,...,n执行
x=x+h/2;Sn=Sn+4f(x);x=x+h/2;Sn=Sn+2f(x).
步3:Sn=Sn
步4:输出Sn.
(3)根据Romberg积分公式Rn=
2.(1). 求积分 ,允许误差为ε。
被积函数f(x),a,b,ε.
复合梯形积分值T2n.
h<=b-a.
T1=h/2(f(a)+f(b)).
反复执行步4—步10。
S<=0;x<=a+h/2.
反复执行步6—步7.
S<=S+f(x);x<=x+h.
若x≥b,则退出本层循环。
T2<=T1/2+h/2S
e<=|T2-T1|;h<=h/2;T1<=T2.
若e≤ε则退出循环。
T2n<=T2.
输出T2n.
(2). 求积分 ,允许误差为ε。
被积函数f(x),a,b,ε.
复合梯形积分值T2n.
h<=b-a.
T1=h/2(f(a)+f(b));S1=0;k<=0.
反复执行步3—步9.
S<=0;x<=a+h/2.
反复执行步5—步6.
S<=S+f(x);x<=x+h.
若x≥b,则退出本层循环。
T2<=T1/2+h/2S;S2<=4/3T2-1/3T1.
e<=|S2-S1|;h<=h/2;T1<=T2;S1=S2;k<=k+1
若e≤ε则退出循环。
S2n<=S2.
输出S2n.
(3).求积分 ,允许误差为ε。
被积函数f(x),积分区间端点a,b,ε.
复合梯形积分值R2n.
h<=b-a.
T1=h/2(f(a)+f(b));S1=0;C1=0;R1=0;k<=0.
反复执行步3—步9.
S<=0;x<=a+h/2.
反复执行步5—步6.
S<=S+f(x);x<=x+h.
若x≥b,则退出本层循环.
执行
T2<=T1/2+h/2S;S2<=4/3T2-1/3T1;C2=16/15S2-1/15S1;R2=64/63C2-1/63C1.
执行
e<=|R2-R1|;h<=h/2;T1<=T2.T1<=T2;S1<=S2;C1<=C2;R1<=R2;k<=k+1.
若e≤ε且k≥5则退出循环。
R2n<=R2.
输出R2n.
六、调试过程及实验结果
题1 复合梯形法
复合Simpson法
题2
(1) 变步长梯形法
七、总结
经过这几次的实验数据处理,对于同一个问题而言,不同的计算方法,其计算速度也不相同,并且数据的精确度越高。计算机的发展给数学的发展注入新的活力,在问题解决过程更加有效。
八、附录(源程序清单)
1. (1):复合梯形公式法
>> a=[30.00,31.63,33.44,35.47,37.75,40.33,42.39,46.69,50.67];
>> h=10;
>> T=(h/2)*(a(1)+a(6)+2*(a(2)+a(3)+a(4)+a(5)))
T =
1.7345e+003
>> T=(h/2)*(a(1)+a(9)+2*(a(2)+a(3)+a(4)+a(5)+a(6)+a(7)+a(8)))
T =
3.0803e+003
(2)复合simpson公式法
M文件:
function cy=Lagrange(x,y,n,cx)
m=length(cx);cy=zeros(1,m);
for k=1:n+1
t=ones(1,m);
for j=1:n+1
if j~=k
t=t.*(cx-x(j))./(x(k)-x(j));
end
end
cy=cy+y(k).*t;
end
>> x=0:10:80;
>> y=[30.00,31.63,33.44,35.47,37.75,40.33,42.39,46.69,50.67];
>> cx=5:10:75;
>> cy=Lagrange(x,y,5,cx)
cy =
30.7962 32.5094 34.4257 36.5764 38.9978 41.7610 45.0023 48.9530
>> h=10;
>> Sn=(h/6)*(y(1)+4*(cy(1)+cy(2)+cy(3)+cy(4)+cy(5))+2*(y(2)+y(3)+y(4)+y(5))+y(6))
Sn =
1.7336e+003
>> Sn=(h/6)*(y(1)+4*(cy(1)+cy(2)+cy(3)+cy(4)+cy(5)+cy(6)+cy(7)+cy(8))+2*(y(2)+y(3)+y(4)+y(5)+y(6)+y(7)+y(8))+y(9))
Sn =
3.0869e+003
2.
变步长梯形法:
>> a=1;b=3;tol=0.000005;
>> I=Vsm('f',a,b,tol)
I =17.3673
>> a=1;b=3;tol=0.000005;
>> I=Vsm('f',a,b,tol)
I =1.0986
M文件:
function T2n=Vsm(f,a,b,tol)
h=b-a;
T1=h/2*(feval(f,a)+feval(f,b));
while 1
S=0;x=a+h/2;
while 1
S=S+feval(f,x);x=x+h;
if x>=b
break
end
end
T2=T1/2+h*S/2;
e=abs(T2-T1);h=h/2;T1=T2;
if e<=tol
break
end
end
T2n=T2;
(1)
function y=f(x)
y=exp(x);
(2)function y=f(x)
y=1/x;