运筹学上机实践报告

  • 格式:doc
  • 大小:113.50 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运筹学

实验报告

姓名:

学号:

班级:采矿1103

教师:

(一)实验目的

(1)学会安装并使用Lingo软件

(2)利用Lingo求解一般线性,运输,一般整数和分派问题

(二)实验设备

(1)计算机

(2)Lingo软件

(三)实验步骤

(1)打开已经安装Lingo软件的计算机,进入Lingo

(2)建立数学模型和Lingo语言

(3)输入完Lingo语言后运行得出求解结果LINGO是用来求解线性和非线性规化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。当在windows 下开始运行LINGO系统时,会得到类似下面的一个窗口:

外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model–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=4 12 4 11

2 10

3 9

8 5 11 6

H=8 5 11;

S=4 7 6 7;

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页习题4.2)

用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=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;

Enddata