嗨,新朋友,很高兴认识你,欢迎来到我的博客。

使用LINGO软件计算6个发点8个收点的最小费用运输问题

使用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

 

使用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求解线性规划问题

例如:求解如下线性规划问题:

image

在LINGO的MODEL窗口内输入如下模型:

model:

max=2*x1+3*x2;

x1+2*x2<=8;

4*x1<=16;

4*x2<=12;

End

选菜单Lingo|Solve(或按Ctrl+S),或用鼠标点击“求解”按纽,如果模型有语法错误,则弹出一个标题为“LINGO Error Message”(错误信息)的窗口,指出在哪一行有怎样的错误,每一种错误都有一个编号(具体含义可查阅相关文献或LINGO的Help)。改正错误以后再求解,如果语法通过, LINGO用内部所带的求解程序求出模型的解, 然后弹出一个标题为“LINGO Solver Status”(求解状态)的窗口, 其内容为变量个数、约束条件个数、优化状态、耗费内存、所花时间等信息, 点击Close关闭窗口, 屏幕上出现标题为“Solution Report”(解的报告)的信息窗口, 显示优化计算(线性规划中换基迭代)的步数、优化后的目标函数值、列出各变量的计算结果。

本例具体内容如下(软件版本不同可能结果稍有不同,如迭代次数等)

Global optimal solution found at iteration: 5

Objective value: 14.00000

Variable Value Reduced Cost

X1 4.000000 0.000000

X2 2.000000 0.000000

Row Slack or Surplus Dual Price

1 14.00000 1.000000

2 0.000000 1.500000

3 0.000000 0.1250000

4 4.000000 0.000000