用lingo编程解决运输问题大全 下载本文

内容发布更新时间 : 2024/12/26 17:15:38星期一 下面是文章的全部内容请认真阅读。

LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。

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

外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。

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

1

mins.t.2x1?3x2x1?x2?350x1?100

2x1?x2?600x1,x2?0在模型窗口中输入如下代码:

min=2*x1+3*x2; x1+x2>=350; x1>=100;

2*x1+x2<=600;

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

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

销地 产地 A1 A2 A3 A4 A5 A6 销量 B1 6 4 5 7 2 5 35 B2 2 9 2 6 3 5 37 B3 6 5 1 7 9 2 22 B4 7 3 9 3 5 2 32 B5 4 8 7 9 7 8 41 B6 2 5 4 2 2 1 32 B7 5 8 3 7 6 4 43 B8 9 2 3 1 5 3 38 产量 60 55 51 43 41 52

2

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

3