运筹学实验.docx
- 文档编号:1243830
- 上传时间:2022-10-19
- 格式:DOCX
- 页数:14
- 大小:182.91KB
运筹学实验.docx
《运筹学实验.docx》由会员分享,可在线阅读,更多相关《运筹学实验.docx(14页珍藏版)》请在冰豆网上搜索。
运筹学实验
武汉轻工大学
数学与计算机学院
《运筹学》实验报告
班级:
信管1301班
学号:
1305020001
姓名
指导老师
2015年 12月 5日
【实验目的】
(1)学会用运筹学的思想解决优化问题和建立数学模型。
(2)学会使用Lindo和Lingo软件求解线性规划问题。
【实验内容】
验证下料问题不同目标函数的最优解情况。
【主要步骤】
生产100套钢架,长2.9、2.1、1.5米各1根/套,原料长7.4米,如何下料?
分析:
(1)如何解答下料?
需要分析生产过程。
原料的裁剪方式有多少种?
每一种裁剪方式确定配备的原料数量。
(2)如何确定目标函数?
有两个目标:
料头最少,或,原料最省(即钢架个数最少)。
方案
1
2
3
4
5
6
7
8
2.9
2
1
1
1
0
0
0
0
2.1
0
2
1
0
3
2
1
0
1.5
1
0
1
3
0
2
3
4
料头
0.1
0.3
0.9
0
1.1
0.2
0.8
1.4
minZ=0.1x1+0.3x2+0.9x3+1.1x5+0.2x6+0.8x7+1.4x8(料头最少)
或minZ=x1+x2+x3+x4+x5+x6+x7+x8原料最省(即钢架个数最少)。
2x1+x2+x3+x4≥100
2x2+x3+3x5+2x6+x7≥100
x1+x3+3x4+2x6+3x7+4x8≥100
x1,x2,x3,x4,x5,x6,x7,x8≥0,整数
给出下料问题的计算程序:
原料最省方案程序:
Lindo程序:
!
min0.1x1+0.3x2+0.9x3+0x4+1.1x5+0.2x6+0.8x7+1.4x8
min1x1+1x2+1x3+1x4+1x5+1x6+1x7+1x8
subjectto
2x1+1x2+1x3+1x4+0x5+0x6+0x7+0x8>100
0x1+2x2+1x3+0x4+3x5+2x6+1x7+0x8>100
1x1+0x2+1x3+3x4+0x5+2x6+3x7+4x8>100
end
ginx1
ginx2
ginx3
ginx4
ginx5
ginx6
ginx7
ginx8
运行结果:
料头最少方案程序:
min0.1x1+0.3x2+0.9x3+0x4+1.1x5+0.2x6+0.8x7+1.4x8
!
min1x1+1x2+1x3+1x4+1x5+1x6+1x7+1x8
subjectto
2x1+1x2+1x3+1x4+0x5+0x6+0x7+0x8>100
0x1+2x2+1x3+0x4+3x5+2x6+1x7+0x8>100
1x1+0x2+1x3+3x4+0x5+2x6+3x7+4x8>100
end
ginx1
ginx2
ginx3
ginx4
ginx5
ginx6
ginx7
ginx8
运行结果:
Lingo程序:
料头最少
model:
!
min=0.1*x1+0.3*x2+0.9*x3+0*x4+1.1*x5+0.2*x6+0.8*x7+1.4*x8;
min=1*x1+1*x2+1*x3+1*x4+1*x5+1*x6+1*x7+1*x8;
2*x1+1*x2+1*x3+1*x4+0*x5+0*x6+0*x7+0*x8>100;
0*x1+2*x2+1*x3+0*x4+3*x5+2*x6+1*x7+0*x8>100;
1*x1+0*x2+1*x3+3*x4+0*x5+2*x6+3*x7+4*x8>100;
@gin(x1);
@gin(x2);
@gin(x3);
@gin(x4);
@gin(x5);
@gin(x6);
@gin(x7);
@gin(x8);
End
运行结果:
Lingo程序:
model:
sets:
E/1..8/:
c,x;
F/1..3/:
b;
link(F,E):
a;
endsets
min=@sum(E(j):
c(j)*x(j));
@for(F(i):
@sum(E(j):
a(i,j)*x(j))>100);
@for(E:
@gin(x));
data:
!
c=0.1,0.3,0.9,0,1.1,0.2,0.8,1.4;
c=1,1,1,1,1,1,1,1;
a=2,1,1,1,0,0,0,0,
0,2,1,0,3,2,1,0,
1,0,1,3,0,2,3,4;
enddata
end
运行结果:
或:
model:
sets:
E/1..8/:
c,x;
F/1..3/:
b;
link(F,E):
a;
endsets
min=@sum(E:
c*x);
@for(F(i):
@sum(E(j):
a(i,j)*x(j))>100);
@for(E(j):
x(j)>0);
@for(E:
@gin(x));
data:
!
c=0.1,0.3,0.9,0,1.1,0.2,0.8,1.4;
c=1,1,1,1,1,1,1,1;
a=2,1,1,1,0,0,0,0,
0,2,1,0,3,2,1,0,
1,0,1,3,0,2,3,4;
enddata
end
运行结果:
模型分析问题:
(1)两个目标是否是等价的?
(2)如果不等价,比较两种生产方案的优劣。
设废料最少模型为
(1);原料最省模型为
(2)。
即
(1)MinZ1=0.1x1+0.3x2+0.9x3+1.1x5+0.2x6+0.8x7+1.4x8
(2)MinZ2=x1+x2+x3+x4+x5+x6+x7+x8
原料最省:
model:
!
min=0.1*x1+0.3*x2+0.9*x3+0*x4+1.1*x5+0.2*x6+0.8*x7+1.4*x8;
min=1*x1+1*x2+1*x3+1*x4+1*x5+1*x6+1*x7+1*x8;
2*x1+1*x2+1*x3+1*x4+0*x5+0*x6+0*x7+0*x8>100;
0*x1+2*x2+1*x3+0*x4+3*x5+2*x6+1*x7+0*x8>100;
1*x1+0*x2+1*x3+3*x4+0*x5+2*x6+3*x7+4*x8>100;
0.1*x1+0.3*x2+0.9*x3+0*x4+1.1*x5+0.2*x6+0.8*x7+1.4*x8=y1;
1*x1+1*x2+1*x3+1*x4+1*x5+1*x6+1*x7+1*x8=y2;
@gin(x1);
@gin(x2);
@gin(x3);
@gin(x4);
@gin(x5);
@gin(x6);
@gin(x7);
@gin(x8);
End
运行结果:
运行结果:
料头最少:
运行结果:
最优状态的目标
模型
(1)
模型
(2)
Z1
10
16
Z2
150
90
实验结果表明:
模型
(1)和模型
(2)的最优解产生的废料量和使用的原料量均不同,因此,两个目标函数是不同的。
最优状态的松弛变量
模型
(1)
模型
(2)
约束1
0
0
约束2
0
0
约束3
300
0
实验结果表明:
模型
(1)废料最少,但是第3种材料多生产了300件;模型
(2)原料最少,3种材料均没有剩余。
因此,两套生产方案各有利弊,需要针对不同的市场需求,采用不同生产方案。
练习1某工厂生产A、B两个产品,要经过2道工序,每单位B产品生产2单位副产品C,无生产费用。
C一部分产品出售,其他产品销毁。
A产品单位利润4元,B产品单位利润10元,C产品单位利润3元,C产品销毁费2元。
预测C产品最多出售5个单位,试设计生产计划。
单位产品用时
1工序
2工序
A
2
3
B
3
4
总用时
16
24
总结该工厂的最优生产的规律。
AB两种产品分别需两个工序,所以受工序总用时限制,同时由于每单位B产品生产2单位副产品C,无生产费用,所以X2,X3,X4之间存在函数关系2x2=x3+x4,又有x1、x2、x3、x4 都是具有实际意义的量,所以得注意它的实际意义上的取值范围。
争取的目标是利润最大化。
解设A产品、B产品、C(售)产品、C(毁)产品的数量为x1、x2、x3、x4。
MaxZ=4x1+10x2+3x3-2x4
2x1+3x2≤16
3x1+4x2≤24
2x2=x3+x4
x3≤5
x1≥0,x2≥0,x3≥0,x4≥0为整数
Lingo程序:
model:
max=4*x1+10*x2+3*x3-2*x4;
2*x1+3*x2<16;
3*x1+4*x2<24;
2*x2=x3+x4;
x3<5;
@gin(x1);
@gin(x2);
@gin(x3);
@gin(x4);
end
运行结果:
【实验总结】
在这次实验中,我了解到了Lingo的基本使用方法,但是在具体的实例中,我理解了同样的问题,我们考虑的重点不同,也会导致不同的结果,就像例子中的料头最少和原料最省问题,所以以后遇到问题,首先我们应考虑的是我们的目标是什么,其次再在问题中找出可设的未知量,在题中整理出这些所设的量之间的联系和约束条件,从而建出数学模型,再解决问题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运筹学 实验