南农工 工管162 rambo运筹学实验报告1128Bai Di.docx
- 文档编号:10731150
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:31
- 大小:3.09MB
南农工 工管162 rambo运筹学实验报告1128Bai Di.docx
《南农工 工管162 rambo运筹学实验报告1128Bai Di.docx》由会员分享,可在线阅读,更多相关《南农工 工管162 rambo运筹学实验报告1128Bai Di.docx(31页珍藏版)》请在冰豆网上搜索。
南农工工管162rambo运筹学实验报告1128BaiDi
实验报告册
课程名称:
运筹学实验
指导老师:
班级:
姓名:
学号:
学期:
2018—2019学年第1学期
南京农业大学工学院教务处印
实验目录
实验一:
软件介绍及线性规划
实验二:
线性规划灵敏度分析
实验三:
线性规划对偶问题
实验四:
运输问题
实验五:
目标规划
实验六:
整数规划及指派问题
实验七:
图与网络分析
实验一:
软件介绍及线性规划
1.简述LINGO软件的功能特点。
(1).简单的模型表示
LINGO可以将线性、非线性和整数问题迅速得予以公式表示,并且容易阅读、了解和修改。
LINGO的建模语言允许使用汇总和下标变量以一种易懂的直观的方式来表达模型,非常类似在使用纸和笔。
模型更加容易构建,更容易理解,因此也更容易维护。
(2).方便的数据输入和输出选择
LINGO建立的模型可以直接从数据库或工作表获取资料。
同样地,LINGO可以将求解结果直接输出到数据库或工作表。
能够在选择的应用程序中生成报告.
(3).强大的求解器
LINGO拥有一整套快速的,内建的求解器用来求解线性的,非线性的(球面&非球面的),二次的,二次约束的,和整数优化问题.您甚至不需要指定或启动特定的求解器,因为LINGO会读取方程式并自动选择合适的求解器.
(4).交互式模型或创建Turn-key应用程序
能够在LINGO内创建和求解模型,或能够从自己编写的应用程序中直接调用LINGO.对于开发交互式模型,LINGO提供了一整套建模环境来构建,求解和分析模型.对于构建turn-key解决方案,LINGO提供的可调用的DLL和OLE界面能够从用户自己写的程序中被调用.LINGO也能够从Excel宏或数据库应用程序中被直接调用.
2.手工求解下面的线性规划问题并用Lingo验证。
MaxZ=—3x1+x3
.x1+x2+x3≤4
—2x1+x2-x3≥1
3x2+x3=9
x1,x2,x3≥0
3.工业原料的合理利用:
要制作100套钢筋架子,每套有长米、米和米的钢筋各一根。
已知原材料长米,应如何切割使用原材料最省请建立该问题的数学模型,并用Lingo软件求解(写出程序),并解释状态窗口的含义。
编程如下:
min=*(x1+x2+x3+x4+x5);
2*x1+x2+x3>=100;
2*x2+x3+3*x4>=100;
x1+x3+4*x5>=100;
@gin(x1);
@gin(x2);
@gin(x3);
@gin(x4);
@gin(x5);
关于上图的含义解释如下:
(1)Model(模型)LP(线性规划)Linearprogramming;
(2)State(状态)GlobalOpt(整体最优解)Globaloptimalsolution;
(3)Objective,目标函数值为,由于处于最优解状态,所以这里表示最优值为;
(4)Infeasibility0,不可行性0,表示此时有可行解,否则没有可行解;
(5)Iteration4,表示迭代了4步求得最优解;
(6)ExtendedSolverStatus,表示扩展的解的状况,主要用于整数规划和非线性规划;
(7)Variables,表示变量,Total5,表示总决策变量5个,非线性(Nonlinear)变量是0个和整数(Integer)变量是5个;
(8)Constraints,表示约束,Total4,表示包括目标函数一共4个约束,非线性(Nonlinear)约束0个;
(9)Nonzeros,表示非零系数,Total14,表示包括目标函数和约束条件中变量的非零系数14个,右端常数项不算。
实验二:
线性规划灵敏度分析
1.简述灵敏度分析的步骤。
2.某车间有甲、乙两台机床,用于加工3种工件。
假设这两台机床的台时数分别为70和80小时,3种工件需要加工的数量分别为30、50和40件。
用不同机床加工单位工件所用的台时数和加工费用不同(见下表)。
机车类型
加工台时(小时/件)
加工费用(元/件)
台时上限/小时
1
2
3
1
2
3
甲
13
9
10
70
乙
11
12
8
80
问题:
(1)怎样安排加工任务,才能既满足加工数量要求,又使总的费用最少请建立该问题的数学模型,并用LINGO软件求解(写出程序),并解释状态窗口的含义。
(2)三种工件的最低市场定价是多少
(3)如果加工费用增加,是否会改变加工计划
(4)在现有加工能力下,是否可适当增加产品数量
(1)
设甲乙机车加工1,2,3工件的数量为xi件(i=1,……,6)建模如下:
编程如下:
min=13*x1+9*x2+10*x3+11*x4+12*x5+8*x6;
x1+x4>=30;
x2+x5>=50;
x3+x6>=40;
*x1+*x2+x3<=70;
*x4+*x5+*x6<=80;
@gin(x1);
@gin(x2);
@gin(x3);
@gin(x4);
@gin(x5);
@gin(x6);
关于上图的含义解释如下:
1.Model(模型)LP(线性规划)Linearprogramming;
2.State(状态)GlobalOpt(整体最优解)Globaloptimalsolution;
3.Objective,目标函数值为1100,由于处于最优解状态,所以这里表示最优值为1100;
4.Infeasibility0,不可行性0,表示此时有可行解,否则没有可行解;
5.Iteration3,表示迭代了3步求得最优解;
6.ExtendedSolverStatus,表示扩展的解的状况,主要用于整数规划和非线性规划;
7.Variables,表示变量,Total6,表示总决策变量6个,非线性(Nonlinear)变量是0个和整数(Integer)变量是6个;
8.Constraints,表示约束,Total6,表示包括目标函数一共6个约束,非线性(Nonlinear)约束0个;
9.Nonzeros,表示非零系数,Total18,表示包括目标函数和约束条件中变量的非零系数18个,右端常数项不算。
(2)通过求解模型可得:
1号工件只在乙上加工,加工费11元,因此最低价格为11元;2号工件只在甲上加工,加工费9元,因此最低价格为9元;同理3号工件最低价格为8元。
(3)对于甲机车而言,当2号工件加工费用改变时,计划才改变;
对于乙机车而言,当1号和3号工件加工费用改变时,计划才改变;
(4)甲机车台时上限为70小时,当前利用台时50*=55小时<70;
乙机车台时上限为80小时,当前利用台时30*+40*=67小时<80;
由于甲乙机车都还有可利用台时,因此可以增加产品数量。
实验三:
线性规划对偶问题
1.简述原问题与对偶问题的关系。
每一个线性规划问题,即原问题,都有一个与之对应的线性规划问题,即对偶问题。
原问题与对偶问题的解是对应的,得出一个问题的解,另一个问题的解也就得到了。
并且原问题与对偶问题在形式上存在很简单的对应关系:
1.原问题目标函数求极大化,对偶问题则是极小化;
2.原问题目标函数中的系数是对偶问题约束条件中的右端常数,而原问题约束条件中的右端常数则是对偶问题中目标函数的系数;
3.原问题和对偶问题的约束条件的符号方向相反;
4.原问题约束条件系数矩阵转置后即为对偶问题的约束条件的系数矩阵;
5.原问题的约束方程数对应于对偶问题的变量数,而原问题的变量数对应于对偶问题的约束方程数;
6.对偶问题的对偶问题是原问题
它们存在着简单的矩阵转置,系数变换的关系。
2.简述对偶问题的基本性质。
并对互补松弛性定理进行证明。
3.简述影子价格的含义。
影子价格是根据资源在生产中做出的贡献而做出的估价,这种估价不是资源的市场价格。
它反映了在最优经济结构中,在资源得到最优配置的前提下,资源的边际使用价值。
单纯形表中松弛变量所对应的检验数的相反数是在该经济结构中的影子价格,也可以说对偶问题的最优解是结构中的影子价格。
影子价格越大,说明这种资源越是相对紧缺;影子价格越小,说明这种资源相对不紧缺。
如果最优生产计划下某种资源有剩余,这种资源的影子价格一定等于0。
实验四:
运输问题
1.简述运输问题表上作业法的基本步骤。
2.用LINGO求解6个发点8个收点的最小费用运输问题,产销单位运价如下表:
B1
B2
B3
B4
B5
B6
B7
B8
产量
A1
6
2
6
7
4
2
5
9
60
A2
4
9
5
3
8
5
8
2
55
A3
5
2
1
9
7
4
3
3
51
A4
7
6
7
3
9
2
7
1
43
A5
2
3
9
5
7
2
6
5
41
A6
5
5
2
2
8
1
4
3
52
销量
35
37
22
32
41
32
43
38
编程如下:
sets:
as/a1..a6/:
capacity;
bs/b1..b8/:
demand;
links(as,bs):
cost,volume;
endsets
min=@sum(links:
cost*volume);
@for(bs(J):
@sum(as(I):
volume(I,J))=demand(J));
@for(as(I):
@sum(bs(J):
volume(I,J))<=capacity(I));
data:
capacity=605551434152;
demand=3537223241324338;
cost=62674295
49538582
52197433
76739271
23957265
55228143;
enddata
end
程序运行结果如下:
实验五:
目标规划
1.简述目标规划模型的一般形式。
2.最近,某节能灯具厂接到了订购16000套A型和B型节能灯具的订货合同,合同中没有对这两种灯具各自的数量做要求,但合同要求工厂在一周内完成生产任务并交货。
根据该厂的生产能力,一周内可以利用的生产时间为20000min,可利用的包装时间为36000min。
生产完成和包装完成一套A型节能灯具各需要2min;生产完成和包装完成一套B型节能灯具分别需要1min和3min。
每套A型节能灯具成本为7元,销售价为15元(即利润为8元);每套B型节能灯具成本为14元,销售价为20元(即利润为6元)。
厂长首先要求必须要按合同完成订货任务,并且既不要有不足量,也不要有超过量。
其次要求满意的销售额尽量达到或接近275000元。
最后要求在生产总时间和包装总时间上尽可能不要超量。
同时注意到生产时间与包装时间的权重比为比。
试为该节能灯具厂制定生产计划。
请建立该问题的数学模型,并用LINGO软件求解(写出程序),并解释状态窗口的含义。
编程如下:
sets:
num_j/1..2/:
x;
num_k/1..3/:
p,f,z;
num_l/1..4/:
d1,d2,g;
link_kl(num_k,num_l):
w1,w2;
link_lj(num_l,num_j):
c;
endsets
data:
p=;
z=;
c=1,1,15,20,2,1,2,3;
g=16000,275000,20000,36000;
w1=1,0,0,0,0,1,0,0,0,0,0,0;
w2=1,0,0,0,0,0,0,0,0,0,,;
enddata
[OBJ]min=@SUM(num_k:
p*f);
@FOR(num_k(k):
f(k)=@SUM(num_l(l):
(w1(k,l)*d1(l)+w2(k,l)*d2
(1))););
@FOR(num_l(l):
@SUM(num_j(j):
c(l,j)*x(j))+d1(l)-d2(l)=g(l););
@FOR(num_l(k)|k#lt#@SIZE(num_k):
@BND(0,f(k),z(k)););
@FOR(num_j(j):
x(j)>=0;@GIN(x(j)););
@FOR(num_l(l):
d1(l)>=0;d2(l)>=0;);
共有三级目标,需运行三次该程序。
第一次运行时,取p
(1)=1,p
(2)=p(3)=0,z
(1)与z
(2)都取较大的值。
得:
Objectivevalue:
X
(1),X
(2)
第二次运行时,取p
(1)=0,p
(2)=1,p(3)=0,z
(1)=0,z
(2)取较大的值。
得:
Objectivevalue:
X
(1),X
(2)
第三次运行时,取p
(1)=0,p
(2)=0,p(3)=0,z
(1)=0,z
(2)=0
得:
X
(1)9000,X
(2)70000,
D2(3)5000,D2(4)3000
则该厂生产A灯具9000套,B灯具7000套,可完成16000套的计划,且完成了销售指标275000元,生产时间需增加5000min,包装时间需增加3000min。
关于上图的含义解释如下:
(10)Model(模型)LP(线性规划)Linearprogramming;
(11)State(状态)GlobalOpt(整体最优解)Globaloptimalsolution;
(12)Objective,目标函数值为,由于处于最优解状态,所以这里表示最优值为;
(13)Infeasibility0,不可行性0,表示此时有可行解,否则没有可行解;
(14)Iteration4,表示迭代了4步求得最优解;
(15)ExtendedSolverStatus,表示扩展的解的状况,主要用于整数规划和非线性规划;
(16)Variables,表示变量,Total5,表示总决策变量5个,非线性(Nonlinear)变量是0个和整数(Integer)变量是5个;
(17)Constraints,表示约束,Total4,表示包括目标函数一共4个约束,非线性(Nonlinear)约束0个;
(18)Nonzeros,表示非零系数,Total14,表示包括目标函数和约束条件中变量的非零系数14个,右端常数项不算。
实验六:
整数规划及指派问题
1.简述分支定界法和割平面法的基本原理。
分枝定界法将问题分枝为子问题并对这些子问题定界,在每次分支后,对凡是界限超出已知可行解值那些子集不再做进一步分支。
这样,解的许多子集(即搜索树上的许多结点)就可以不予考虑了,从而缩小了搜索范围。
这一过程一直进行到找出可行解为止,该可行解的值不大于任何子集的界限。
用割平面法求解整数规划的基本思路是:
先不考虑整数约束条件,求松弛问题的最优解,如果获得整数最优解,即为所求,运算停止.如果所得到最优解不满足整数约束条件,则在此非整数解的基础上增加新的约束条件重新求解.这个新增加的约束条件的作用就是去切割相应松弛问题的可行域,即割去松弛问题的部分非整数解(包括原已得到的非整数最优解).而把所有的整数解都保留下来,故称新增加的约束条件为割平面.当经过多次切割后,就会使被切割后保留下来的可行域上有一个坐标均为整数的顶点,它恰好就是所求问题的整数最优解.即切割后所对应的松弛问题,与原整数规划问题具有相同的最优解。
2.列出数学模型并用LINGO求解,人员选拔问题:
队员号码
身高/m
位置
队员号码
身高/m
位置
1
中锋
2
中锋
3
前锋
4
前锋
5
前锋
6
后卫
7
后卫
8
后卫
同时,要求出场阵容必须满足以下条件:
(1)中锋只能有一个上场;
(2)至少有一名后卫;(
3)如果1号和4号队员都上场,则6号队员不能上场;
(4)2号队员和6号队员必须至少保留一个不出场。
如果要选择5个队员上场,总身高最高,请确定出场阵容。
用lingo编程如下:
MODEL:
SETS:
team/1..8/:
a,x;
ENDSETS
DATA:
a=,,,,,,,;
ENDDATA
max=@sum(team(i):
a(i)*x(i));
@SUM(team(i):
x(i))=5;
x
(1)+x
(2)=1;
x(6)+x(7)+x(8)>=1;
x
(1)+x(4)+x(6)<=2;
x
(2)+x(6)<=1;
@FOR(team(i):
@bin(x(i)));
END
得第1、3、4、5、7位队员被选上,身高总和最大为++++=(米)
3.有一份说明书要分别译成英、日、德、俄四种文字,交给甲乙丙丁四个人去完成。
因个人专长不同,他们完成翻译不同种文字所需要的时间(小时)也不同,如下表所示。
问应如何分配,使四个人分别完成这四项任务的总时间为最少。
请用LINGO软件求解(写出程序),并解释状态窗口的含义。
甲
乙
丙
丁
英文
2
10
9
7
日文
15
4
14
8
德文
13
14
16
11
俄文
4
15
13
9
编程如下:
MODEL:
SETS:
warehouses/wh1,wh2,wh3,wh4/:
capacity;
vendors/v1,v2,v3,v4/:
demand;
links(warehouses,vendors):
cost,volume;
ENDSETS
min=@sum(links:
cost*volume);
@for(vendors(J):
@sum(warehouses(I):
volume(I,J))=demand(J));
@for(warehouses(I):
@sum(vendors(J):
volume(I,J))=capacity(I));
DATA:
capacity=1111;
demand=1111;
cost=21097
154148
13141611
415139;
ENDDATA
END
关于上图的含义解释如下:
(1)Model(模型)LP(线性规划)Linearprogramming;
(2)State(状态)GlobalOpt(整体最优解)Globaloptimalsolution;
(3)Objective,目标函数值为28,由于处于最优解状态,所以这里表示最优值为28;
(4)Infeasibility0,不可行性0,表示此时有可行解,否则没有可行解;
(5)Iterations7,表示迭代了7步求得最优解;
(6)ExtendedSolverStatus,表示扩展的解的状况,主要用于整数规划和非线性规划;
(7)Variables,表示变量,Total16,表示总决策变量16个,非线性(Nonlinear)变量是0个和整数(Integer)变量是0个;
(8)Constraints,表示约束,Total9,表示包括目标函数一共9个约束,非线性(Nonlinear)约束0个;
(9)Nonzeros,表示非零系数,Total48,表示包括目标函数和约束条件中变量的非零系数48个,右端常数项不算
实验七:
图与网络分析
1.
(1)使用狄格斯屈拉算法求最短路
(2)请建立该问题的数学模型,并用LINGO软件求解(写出程序),并解释状态窗口的含义。
MODEL:
sets:
cities/1,2,3,4,5,6/;
roads(cities,cities)/1,21,32,32,43,43,54,54,65,6/:
w,x;
endsets
data:
w=791766276;
enddata
n=@size(cities);
min=@sum(roads:
w*x);
@for(cities(i)|i#ne#1#and#i#ne#n:
@sum(roads(i,j):
x(i,j))=@sum(roads(j,i):
x(j,i)));
@sum(roads(i,j)|i#eq#1:
x(i,j))=1;
END
关于上图的含义解释如下:
(1)Model(模型)LP(线性规划)Linearprogramming;
(2)State(状态)GlobalOpt(整体最优解)Globaloptimalsolution;
(3)Objective,目标函数值为20,由于处于最优解状态,所以这里表示最优值为20;
(4)Infeasibility0,不可行性0,表示此时有可行解,否则没有可行解;
(5)Iterations0,表示迭代了0步求得最优解;
(6)ExtendedSolverStatus,表示扩展的解的状况,主要用于整数规划和非线性规划;
(7)Variables,表示变量,Total9,表示总决策变量9个,非线性(Nonlinear)变量是0个和整数(Integer)变量是0个;
(8)Constraints,表示约束,Total6,表示包括目标函数一共6个约束,非线性(Nonlinear)约束0个;
(9)Nonzeros,表示非零系数,Total25,表示包括目标函数和约束条件中变量的非零系数25个,右端常数项不算;
2.需要将城市1的石油通过管道运送到城市6,中间有4个中转站2、3、4、5,城市与中转站的连接以及管道的容量如图所示,求从城市1到城市6的最大流。
编程如下:
MODEL:
sets:
nodes/1,2,3,4,5,6/;
arcs(nodes,nodes)/1,21,32,32,43,55,25,45,64,6/:
c,f;
endsets
data:
c=351421325;
enddata
n=@size(nodes);
max=flow;
@for(nodes(i)|i#ne#1#and#i#ne#n:
@sum(arcs(i,j):
f(i,j))=@sum(arcs(j,i):
f(j,i)));
@sum(arcs(i,j)|i#eq#1:
f(i,j))=flow;
@sum(arcs(i,j)|j#eq#n:
f(i,j))=flow;
@for(arcs:
@bnd(0,f,c));
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南农工 工管162 rambo运筹学实验报告1128Bai Di 农工 162 rambo 运筹学 实验 报告 1128 Bai
![提示](https://static.bdocx.com/images/bang_tan.gif)