运筹学上机实践报告.docx
《运筹学上机实践报告.docx》由会员分享,可在线阅读,更多相关《运筹学上机实践报告.docx(12页珍藏版)》请在冰豆网上搜索。
运筹学上机实践报告
运筹学
实验报告
姓名:
学号:
班级:
采矿1103
教师:
(1)实验目的
(1)学会安装并使用Lingo软件
(2)利用Lingo求解一般线性,运输,一般整数和分派问题
(2)实验设备
(1)计算机
(2)Lingo软件
(3)实验步骤
(1)打开已经安装Lingo软件的计算机,进入Lingo
(2)建立数学模型和Lingo语言
(3)输入完Lingo语言后运行得出求解结果LINGO是用来求解线性和非线性规化问题的简易工具。
LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。
当在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:
外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGOModel–LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面是以一般线性,运输,一般整数和分派问题为例进行实验的具体操作步骤:
A:
一般线性规划问题
数学模型(课本31页例11)
求解线性规划:
Minz=-3x1+x2+x3
x1-2x2+x3<=11
-4x1+x2+2x3>=3
-2x1+x3=1
x1,x2,x3>=0
打开lingo
输入min=-3*x1+x2+x3;
x1-2*x2+x3<=11;
-4*x1+x2+2*x3>=3;
-2*x1+x3=1;
End
如图所示:
然后按工具条的
按钮运行出现如下的界面,也即是运行的结果和所求的解:
结果分析:
由longo运行的结果界面可以得到最优解为xb=(x1,x2,x3)T=(4,1,9)T,最优目标函数z=-2.
到此运用lingo解决了一般线性规划问题
B:
运输问题
数学模型(课本80页例1)
例1某公司有三个生产同类产品的加工厂(产地),生产的产品由四个销售点(销地)出售,各加工厂的生产量,各销售点的销售量(假设单位均为吨)以及各个加工厂到各销售点的单位运价(元/吨)是如下表,问产品如何调运才能使总运费最小
产
销
B1
B2
B3
B4
产量
A1
4
12
4
11
8
A2
2
10
3
9
5
A3
8
5
11
6
11
销量
7
7
6
7
24
运用lingo软件,编制程序的程序解决3发点4收点的运输问题:
Model:
Sets:
Xiao/1..4/:
s;
Chan/1..3/:
h;
Link(chan,xiao):
x,y;
Endesets
Data:
Y=412411
21039
85116
H=8511;
S=4767;
Enddata
Min=@sum(link:
x*y);
@for(xiao(j):
@sum(chan(i):
x(i,j))=s(j);
@for(chan(i):
@sum(xiao(j):
x(i,j))=h(i);
此时lingo的框内如下所示:
然后按工具条的
按钮运行出现如下的界面,也即是运行的结果和所求的解:
结果:
由longo运行的结果界面可以得到该运输问题的最优运输方案为运6吨至B3;运2吨至B4,由A2运4吨至B1,运1吨至B4,由A3运吨7至B2,运4吨至B4,此时对应的的目标函数值为
Z=6X4+2X11+4X2+1X9+7X5+4X6+122(元)
到此lingo软件已经解决了运输问题。
C:
一般整数规划问题
数学模型(课本120页习题)
用lingo软件解决如下的整数规划问题:
Maxz=4x1+3x2
3x1+4x2<=12
4x1+2x2<=9
X1,x2>=0
X1,x2为整数
打开lingo,输入如下程序:
Model:
Max=4*x1+3*x2;
3*x1+4*x2<=12;
4*x1+2*x2<=9;
@gin(x1);
@gin(x2);
End
此时lingo的框内如下所示:
然后按工具条的
按钮运行出现如下的界面,也即是运行的结果和所求的解:
结果分析:
由longo运行的结果界面可以得到此整数规划的最优解x1=1,x2=2,此时的最优解:
Z=10
到此运用lingo软件已经解决了一般整数问题。
D:
分派问题
数学模型(课本114页例6)
例6有五个工人,要分派他们分别完成5项工作,每人做各项工作所消耗的时间如下表所示,问应分派哪个人去完成哪项工作,可以使总的消耗时间最小
工人
工作
A
B
C
D
E
甲
5
6
8
4
5
乙
3
4
6
6
1
丙
5
5
7
9
8
丁
6
7
5
7
6
戊
7
4
6
2
8
打开lingo,输入如下程序:
Model:
!
5个工人,5个工作的分配问题,设甲,乙,丙,丁,戊五个工人分别用1,2,3,4,5表示;
Sets:
workers/1..5/;
Jobs/A..E/;
Links(workers,job):
cost,volume;
Endsets
!
目标函数;
Min=@sum(links:
cost*volume);
!
每个工人只能有一份工作;
@for(job(j):
volume(i,j))=1;);
!
每份工作只能有一个工人;
@for(jobs(j):
@sum(workers(i):
volume(i,j));
Data:
Cost=56845
34661
55798
67576
74628;
Enddata
End
此时lingo的框内如下所示:
然后按工具条的
按钮运行出现如下的界面,也即是运行的结果和所求的解:
结果分析:
由longo运行的结果界面可以得到此分派问题的最优目标函数值为5+1+5+5+2=18;即让甲去干工作A,乙去工作E,丙去工作B,丁去工作C,戊去工作D.
到此运用lingo软件已经解决了分派问题。
(4)实验总结心得
通过上机实践,我运用lingo软件解决了一般线性规划问题、运输问题、一般整数规划问题、分派问题四种数学模型,基本上学会使用软件求解运筹学中常见的数学模型,同时通过对这四种上机实践所学的知识也能解决许多其它的模型,如0—1规划问题。
在使用Lingo的同时也学习到了lingo软件以下的几个重要点,尽可能减少程序的出错,如LINGO中不区分大小写字母;变量和行名可以超过8个字符,但不能超过32个字符,且必须以字母开头。
用LINGO解优化模型时已假定所有变量非负(除非用限定变量取值范围的函数@free或@bnd另行说明)。
变量可以放在约束条件的右端(同时数字也可放在约束条件的左端)。
但为了提高LINGO求解时的效率,应尽可能采用线性表达式定义目标和约束。
语句是组成LINGO模型的基本单位,每个语句都以分号结尾,编写程序时应注意模型的可读性等等。
通过对具体方法与模型的学习,认识到了运筹学在经营管理中作为提高决策水平的方法和工具的作用,怎样通过规划安排最优的方案,比如说运输问题,怎样安排可以使企业效益达到最大化,在实际的生产生活中有重要的用途,而且了解了运筹学在分析与解决实际问题过程中的基本思想和基本思路,学会独立建模能力并用模型解决相关现实问题,进一步加强对现实问题的认识。
提高独立运用理论知识解决现实问题的能力把所学的运筹学理论知识与实践相结合从而强化相关理论知识。
了解、熟悉计算机Lingo软件在运筹学模型求解中的作用,激发学习兴趣。
提高学习效果,增强自身的动手能力,提高实际应用能力。