admin管理员组

文章数量:1567262

2024年5月15日发(作者:)

LINGO教程

LINGO使用教程

LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型

的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。

§1 LINGO快速入门

当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:

外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。

在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型

都都要在该窗口内编码实现。下面举两个例子。

例1.1 如何在LINGO中求解如下的LP问题:

min

s.t.

2x

1

3x

2

x

1

x

2

350

x

1

100

2x

1

x

2

600

x

1

,x

2

0

在模型窗口中输入如下代码:

min=2*x1+3*x2;

x1+x2>=350;

x1>=100;

2*x1+x2<=600;

然后点击工具条上的按钮 即可。

例1.2 使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如

下表。

位 销地

产地

B

1

B

2

B

3

B

4

B

5

B

6

B

B

产量

78

共53页 1

LINGO教程

2 5 9 60

A

4

9 5 3 8 5

8

2 55

A

5

2

1

9

7 4

3 3 51

A7 6 7 3

9 2 7 1 43

A2 3 9 5

7

2 6

5 41

A5 5 2 2

8 1 4

3

52

销量 35

37 22 32 41 32 43 38

A

1

2

6 2 6 7 4

3

4

5

6

使用LINGO软件,编制程序如下:

model:

!6发点8收点运输问题;

sets:

warehouses/wh1..wh6/: capacity;

vendors/v1..v8/: 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=60 55 51 43 41 52;

demand=35 37 22 32 41 32 43 38;

cost=6 2 6 7 4 2 9 5

4 9 5 3 8 5 8 2

5 2 1 9 7 4 3 3

7 6 7 3 9 2 7 1

2 3 9 5 7 2 6 5

5 5 2 2 8 1 4 3;

enddata

end

然后点击工具条上的按钮 即可。

为了能够使用LINGO的强大功能,接着第二节的学习吧。

§2 LINGO中的集

对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通

工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,

就可以利用集来最大限度的发挥LINGO建模语言的优势。

现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建

模技术的集如何引入模型会有一个基本的理解。

共53页 2

本文标签: 问题模型使用求解建立