admin管理员组

文章数量:1567246

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

Lingo使用教程

LINGO使用教程

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

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

果。

§1 LINGO快速入门

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

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

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

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

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

min2x

1

3x

2

x

1

x

2

350

x100

s.t.

1

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个收点的最小费用运输问题。产销单位运价如

下表。

第1页(共59页)

Lingo使用教程

A

1

A

2

A

3

A

4

A

5

A

6

销量

B

1

B

2

B

3

B

4

B

5

B

6

B

7

B

8

产量

6

4

5

7

2

5

35

2

9

2

6

3

5

37

6

5

1

7

9

2

22

7

3

9

3

5

2

32

4

8

7

9

7

8

41

2

5

4

2

2

1

32

5

8

3

7

6

4

43

9

2

3

1

5

3

38

60

55

51

43

41

52

使用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的学习吧。

§2 LINGO中的集

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

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

第2页(共59页)

本文标签: 问题使用求解模型对象