优化模型讲解 附LINGO程序

优化模型讲解  附LINGO程序
优化模型讲解  附LINGO程序

数学建模培训讲义

——优化模型与LINGO软件

二○一一年七

目录

1 静态优化模型 (1)

1.1 最优生产计划问题 (1)

1.2 存贮模型 (2)

2 线性规划模型 (2)

2.1 LINGO简介 (2)

2.2 配料问题 (3)

2.3 练习:运输问题 (4)

3 整数规划模型 (4)

3.1 电影院广告问题 (4)

3.2 练习:生产计划问题 (5)

4 0-1规划 (5)

4.1 背包问题 (5)

4.2 矿井选址问题 (6)

4.3 练习:混合泳接力队的选拔问题 (7)

5 LINGO应用 (8)

5.1 变量定界函数 (8)

5.2 集合 (8)

5.3 帆船生产问题 (9)

5.4 派生集合 (11)

5.5 通过电子表格(Excel)文件传递数据 (12)

5.6 旅游问题 (13)

优化模型与LINGO 软件

优化问题是计划管理工作中经常要碰到的问题,比如,出门旅行就要考虑选择什么样的路线和交通工具,才能使旅行费用最省或使所花费的时间最少。在工厂技术、经济管理和科学研究等领域中,最优化问题就更多,一个工厂要怎样安排产品的生产,才能获得最大利润?一个设计部门要考虑在满足结构强度的要求下怎样使得所用的材料的总重量最轻?

比较有效的求解优化问题的一个方法使数学规划,它包括:线性规划、非线性规划、整数规划、动态规划和多目标规划等等。

用数学建模的方法来处理一个优化问题的时候,首先要确定优化的目标是什么,寻求的决策是什么,决策受到哪些条件的限制(如果有限制的话),然后用数学工具(变量、函数等)表示它们。

1 静态优化模型

静态优化模型,归结为微积分中的函数极值问题,可以直接用微分法求解。 1.1 最优生产计划问题

一计算机公司引进A 、B 两种类型的芯片技术,总耗资400000元,准备生产这两种类型的芯片出售。生产一片A 芯片的成本为1950元,而市场售价为3390元,生产一片B 芯片的成本为2250元,而市场售价3990元。由于市场存在竞争,每售出一片A 芯片,A 芯片就会降价0.1元,并且令B 芯片降低0.04元,每售出一片B 芯片,B 芯片就会降价0.1元,并且令A 芯片降价0.03元。假设生产的芯片都能卖出,求一生产计划,以获得最大利润。 模型分析:

假设A 、B 两种芯片的数量分别是1x 和2x ,市场价格分别是1p 和2p ,用R 表示出售芯片的总收入,用C 表示生存芯片的总费用,用P 表示总利润。

根据题意,上述变量有如下关系:

11233900.10.03p x x =-- 21239900.040.1p x x =--

1122R p x p x =+

1240000019502250C x x =++ P R C

=-

模型建立:

根据上述分析,可得优化模型

22

112212m ax 14400.117400.10.07400000

P x x x x x x =-+---

.s t

1,x 20x ≥且为整数

模型求解:

用微分法求解

121

122

14400.20.0717400.070.2P

x x x P x x x ??=--????

??=--??? 最优解是

14735x =,27043x =

此时

m ax 9136410

P =

1.2 存贮模型

详见“静态优化模型”PDF 文档。

2 线性规划模型

如果约束条件和目标函数都是线性的,称之为线性规划模型。 例如: 12m ax 25f x x =+

121

212

4

3

.28,0x x s t x x x x ≤??

≤??+≤??≥?

解法一:两个变量的线性规划模型的图解法 解法二:消元法(迭代法) 解法三:单纯形法(迭代法演化) 解法四:LINGO 软件求解

max=2*x1+5*x2; x1<=4; x2<=3; x1+2*x2<=8; 2.1 LINGO 简介

LINGO 是英文“Linear Interactive And General Optimizer ”字首的缩写形式,即“交互式线性和通用优化求解器”,其语法特点是:

(1)语句的顺序不重要,因为LINGO 总是根据“max =”或“m in =”语句寻找目标函数,而其他语句都是约束条件,也可以没有约束条件。

(2)LINGO 不区分大小写,但变量必须以字母开头。 (3)LINGO 默认所有变量非负。

(4)LINGO 模型是由一系列语句组成,每个语句都是以“;”结尾,编写程序时应注意保持模型的可读性,同时保持语法的严谨性。

(5)LINGO 中以感叹号“!”开始的是说明语句(说明语句也必须以“:”结束)。 LINGO 软件的具体用法在模型中介绍。

表1 各版本信息

2.2 配料问题

某养鸡场饲养一批小鸡,对小鸡健康成长的基本营养元素有三种,简单地称为A 、B 、C 。这批小鸡每日对这三种营养的最低需要量是:元素A 为12单位,元素B 为36单位,元素C 为恰好为24单位,C 元素不够或过量都是有害的。

现市场供应的饲料有甲、乙两种,甲饲料每千克5元,所含的营养元素A 为2单位,B 为2单位,C 为2单位;乙饲料每千克4元,所含的营养元素A 为1单位,B 为9单位,C 为3单位。

养鸡场负责人希望得到甲乙两种饲料的混合饲料最优配比,既能满足小鸡健康成长的需要,又能降低饲料的费用。 模型建立:

假设甲饲料每天需求1x 千克,乙饲料每天需求2x 千克,每天饲料总费用为f 。

12min 54f x x =+

12121

212

212

2936.2324,0x x x x s t x x x x +≥??

+≥??+=??≥?

LINGO 程序:

min=5*x1+4*x2;

2*x1+x2>=12; 2*x1+9*x2>=36; 2*x1+3*x2=24; 2.3 练习:运输问题

设有两个煤厂甲和乙,每月进煤数量分别为60和100吨,联合供应三个居民区A 、B 、C ,三个居民区每月对煤的需求量依次为50吨、70吨和40吨。

煤厂到各个居民区的运输费用如图所示,如何分配供煤量使得总费用最少?

3 整数规划模型

部分变量或全部变量要求取整数,称为整数规划模型。

LINGO 程序中通过“@gin(变量)”命令限制变量为整数,例如:

12m ax 43f x x =+

121212

410.238,0x x s t x x x x +≤??

+≤??≥?且为整数 LINGO 程序:max=4*x1+3*x2; 4*x1+x2<=10; 2*x1+3*x2<=8; @gin(x1); @gin(x2); 3.1 电影院广告问题

某小型工厂计划每周花71元在两个小型电影院加映广告片,推销该厂的产品,为了获得更多的观众,要合理的在两个电影院里分配经费。已知甲电影院加映广告片的时间为4分钟,每放映一次要付12元,预计每次有200人观看,该电影院每周仅能为该厂提供13分钟广告时间;乙电影院广告片的时间为2分钟,每次收费16元,预计每次300人观看,该电影院仅能为该厂提供7分钟广告时间。若观众人数以百人计,试建立数学模型解答。

12

8

4

6510甲C B A

假设每周在甲电影院放映广告1x 次,在乙电影院放映2x 次,观看的观众总数为f 。

12m ax 23f x x =+

1212

12

121671413.27,0x x x s t x x x +≤??

≤??≤??≥?且为整数

LINGO 程序:

max=2*x1+3*x2; 12*x1+16*x2<=71; 4*x1<=13; 2*x2<=7; @gin(x1); @gin(x2);

3.2 练习:生产计划问题

某工厂拥有A 、B 、C 三种类型的设备,生产甲、乙两种产品,每件产品在生产中需要占用的设备时数、每件产品可以获得的利润以及三种设备可利用的时数如表所示。

问题:工厂应如何安排生产可获得最大的利润?

4 0-1规划

0-1规划是整数规划中的一种特殊情形,当决策变量i x 只能取0或1时,这样的整数规划称之为0-1规划。

约束条件可以写成“01,i x ≤≤且为整数”,LINGO 中通过“@bin(变量)”命令实现。 4.1 背包问题

一旅行者的背包最多只能装6kg 的物品,待装的物品有4件,它们的重量和价值依次为:2kg ,1元;3kg ,1.2元;3kg ,0.9元;4kg ,1.1元。那么他的背包中携带哪些物品可使价值最大?

设备设备能力产品乙产品甲2500

1500利润(元/件)

75

30设备C

4012设备B 6523A

/h

用i x 表示第i 种物品是否被携带,令

1,0,i i x i ?=?

?携带第种物品

不携带第种物品

携带物品的总价值记为f 。

1234m ax 1.20.9 1.1f x x x x =+++

123423346.01,1,2,3,4)i i x x x x s t x x i +++≤??≤≤=?

且为整数(

LINGO 程序:

max=x1+1.2*x2+0.9*x3+1.1*x4; 2*x1+3*x2+3*x3+4*x4<=6; @bin(x1); @bin(x2); @bin(x3); @bin(x4); 4.2 矿井选址问题

某煤矿准备在5个矿井挖煤,现在有10个矿井可供选择,设10个矿井的代号为A1、 A2、…、A10,相应的开采费用分别为8、9、3、10、4、7、5、14、11、8,对矿井的选择要满足以下限制条件: (1)或选A1和A7,或选A8;

(2)在A4、A5、A6、A7中最多只能选两个; (3)选择A3或A4,就不能选择A5,反之亦然。

如何选择,才能使开采总费用最小? 模型建立:

用i x 表示第i 个矿井是否被选择,令

1,0,i i x i ?=??

选择第个矿井

不选择第个矿井

开采总费用记为f 。

12345678910max 8931047514118f x x x x x x x x x x =+++++++++

10

1

187845673545511

.211

01,1,2,,10)

i i i i x x x x x s t x x x x x x x x x x i =?=??+=??

+=??

+++≤?

?+≤?

+≤??≤≤=?

∑ 且为整数( LINGO 程序:

max=8x1+9*x2+3*x3+10*x4+4*x5+7*x6+5*x7+14*x8+11*x9+8*x10; x1+x2+x3+x4+x5+x6+x7+x8+x9+x10=5; x1+x8=1; x7+x8=1; x4+x5+x6+x7<=2; x3+x5<=1; x4+x5<=1; @bin(x1); @bin(x2); @bin(x3); @bin(x4); @bin(x5); @bin(x6); @bin(x7); @bin(x8); @bin(x9); @bin(x10);

4.3 练习:混合泳接力队的选拔问题

某学校准备从5名游泳队员中选拔4人组成接力队,参加学校的4×100m 混合泳接力赛。5名队员4种泳姿的百米平均成绩如表所示,问如何选拔队员组成接力队?

1分02秒4

57秒2

59秒4

53秒

58秒6

自由泳

1分23秒81分09秒61分24秒61分06秒41分27秒蛙泳1分11秒1分14秒21分07秒81分06秒1分15秒6仰泳1分07秒41分10秒1分18秒57秒21分06秒8蝶泳戊

5 LINGO 应用

5.1 变量定界函数

变量定界函数对变量的取值范围附加限制,共有以下四种函数: @bnd(a,x,b):限制a x b ≤≤。 @bin(x):限制x 为0或1。

@free(x):取消对x 的符号限制,即可取负数、0或正数。 @gin(x):限制x 为整数。 5.2 集合

理解LINGO 建模语言最重要的是理解集合及其属性的概念。一段完整的LINGO 程序以“model:”开始,以“end ”结束,中间的程序语句由三部分构成:

(1)集合定义部分:以“sets:”开始,以“endsets ”结束,用来定义集合及其属性。 程序格式:“集合名称/集合元素/:集合属性”。

(2)数据输入部分:以“data:”开始,以“enddata ”结束,用以对属性赋值。 程序格式:“集合属性=常量值”。

(3)其他部分:给出目标函数及约束条件。 例如,4.1背包问题。 模型建立:

用i c 表示第i 种物品的价值,i d 表示第i 种物品的重量,i x 表示第i 种物品是否被携带,则

1,0,i i x i ?=??

携带第种物品

不携带第种物品

携带物品的总价值记为f 。

4

1

m ax i i

i f c x ==

4

1

6

.01,1,2,3,4)

i i i i i d x s t x x i =?≤???≤≤=?

∑且为整数( LINGO 程序:

model: sets:

wupin/1,2,3,4/:c,d,x; endsets

data:

c=1,1.2,0.9,1.1; d=2,3,3,4; enddata

max=@sum(wupin(i):c(i)*x(i)); @sum(wupin(i):d(i)*x(i))<=6; @for(wupin(i):@bin(x(i))); end

说明:(1)调用系统函数,函数命令前缀为“@”。

(2)命令“@sum ”等价于求和符号“∑”,其程序格式是

@sum(集合(下标):关于集合属性的表达式)

(3)命令“@for ”是循环函数,其程序格式是

@for(集合(下标):关于集合属性的表达式)

5.3 帆船生产问题

SAILCO 公司需要决定下四个季度的帆船生产量。下四个季度帆船的需求量分别是40条,60条,75条,25条,这些需求必须按时满足,每个季度正常的生产能力是40条帆船,每条船的生产费用为400美元。如果加班生产,每条船的生产费用为450美元。每个季度末,每条帆船的库存费用为20美元。假定初始库存为10条帆船,如何安排生产,使总费用最小? 模型建立:

设i z (1,2,3,4i =)表示第i 个季度的正常产量,i j 表示第i 个季度的加班产量,i k 表示第i 个季度的库存量,i x 表示第i 个季度的需求量,0k 表示初始库存量,总费用记为f ,于是

4

00m in (40045020)

40

.10

,,0i

i i i i i i i i i i i

f z

j k z k k z j x s t k z j k =

=

++≤??

=++-??

=??≥?∑且为整数

Lingo 程序(一):一般解放!

min=400*z1+450*j1+20*k1 +400*z2+450*j2+20*k2 +400*z3+450*j3+20*k3 +400*z4+450*j4+20*k4;

z1<=40;

z2<=40;

z3<=40;

z4<=40;

k0=10;

k1=k0+z1+j1-40;

k2=k1+z2+j2-60;

k3=k2+z3+j3-75;

k4=k3+z4+j4-25;

@gin(z1);

@gin(z2);

@gin(z3);

@gin(z4);

@gin(j1);

@gin(j2);

@gin(j3);

@gin(j4);

@gin(k1);

@gin(k2);

@gin(k3);

@gin(k4);

LINGO程序(二):集合解法!

model:

sets:

jd/1,2,3,4/:z,j,k,x;

endsets

data:

x=40,60,75,25;

enddata

min=@sum(jd(i):400*z(i)+450*j(i)+20*k(i));

@for(jd(i):z(i)<=40);

k(1)=10+z(1)+j(1)-x(1);

@for(jd(i)|i#gt#1:k(i)=k(i-1)+z(i)+j(i)-x(i));

@for(jd(i):@gin(z(i)));

@for(jd(i):@gin(j(i)));

@for(jd(i):@gin(k(i))); end

说明:(1)“#gt#”是逻辑运算符,意思是“大于”;逻辑关系式“i#gt#1”的意思就是

(2)当1i =时0k 不包含在集合属性中,故在程序中必须将1i =时的约束条件单独写出,即“k(1)=10+z(1)+j(1)-x(1);”。

而对2,3,4i =的循环情况,需要增加逻辑关系式“i#gt#1”,这个限制条件与

集合之间用竖线“|”分开,称为过滤条件,即“@for(jd(i)|i#gt#1:k(i)=k(i-1)+z(i)+j(i)-x(i));”,意思就是“i>1(即2,3,4i =)时成立”。 5.4 派生集合

根据上述集合知识,集合的属性相当于以集合的元素为下标的数组。例如,“i x ”表示属性x 的一维数组;那么,“ij x ”应该表示属性x 的二维数组,它的两个下标应该来自于两个集合的元素,即两个集合派生出来的二维集合,这种表示方式与矩阵的表示非常相似,因此LINGO 建模语言也称为矩阵生成器。

直接把元素列举出来的集合,称为基本集合。基于基本集合而派生出来的二维或多维集合称为派生集合。

派生集合程序格式:“派生集合名称(基本集合1,基本集合2):派生集合属性”。 例如,2.3运输问题。 模型建立:

假设(1,2)i k i =表示第i 个煤厂的进煤量,(1,2,3)j q j =表示第j 个小区的需求量,ij

c 表示第i 个煤厂到第j 个小区的运输费用,ij x 表示第i 个煤厂到第j 个小区的供煤量,总费用记作f 。

2

3

1

1

3

12

1

m in (1,2).(1,2,3)0(1,2;1,2,3)ij

ij

i j ij i j ij i i ij f c

x x k i s t x q j x i j =====

?==???==???≥==??

∑∑∑∑ LINGO 程序:

model: sets: mc/jia,yi/:kc; jm/a,b,c/:xq; links(mc,jm):c,x; endsets data: kc=60,100; xq=50,70,40; c=10,5,6 4,8,12; enddata

min=@sum(links(i,j):c(i,j)*x(i,j)); @for(mc(i):@sum(jm(j):x(i,j))=kc(i)); @for(jm(j):@sum(mc(i):x(i,j))=xq(j)); end

5.5 通过电子表格(Excel )文件传递数据

实际应用中,可能有大量数据是存放在Excel 电子表格中,LINGO 通过“@ole ”函数实现与Excel 文件进行数据传递,只能用在模型的集合段和数据段,其三种调用格式是:

(1)集合名/@ole(‘文件名.xls ’,’单元名’/:引用指定Excel 文件中的指定单元数据作为集合的元素。

(2)属性=@ole(‘文件名.xls ’,’单元名’):数据输入格式,将指定Excel 文件中的指定单元数据赋值给属性。

(3)@ole(‘文件名.xls ’,’单元名’) =属性:数据输出格式,将属性的值赋给指定Excel 文件中的指定单元。

备注:调用时,务必保证Excel 文件与LINGO 程序文件在同一个文件夹下。 例如,4.3混合泳接力队的选拔问题。 模型建立:

假设用(1,2,3,4,5;1,2,3,4)ij t i j ==表示第i 名队员的第j 种泳姿的成绩,ij x 表示第i 名队员的第j 种泳姿是否被选择,则

1,0,ij i j x i j ?=??

第名队员的第种泳姿被选择

第名队员的第种泳姿未被选择

接力队总成绩记为f 。

5

4

1

1

5

14

1

m in 1(1,2,3,4).1(1,2,3,4,5)01(1,2,3,4;1,2,3,4,5)ij

ij

i j ij j ij i ij f t

x x i s t x j x i j =====

?==???≤=???≤≤==??

∑∑∑∑且为整数

LINGO 程序:

model: sets:

dy/@ole('游泳接力队的选拔问题.xls','duiyuan')/; yz/@ole('游泳接力队的选拔问题.xls','yongzi')/; xb(dy ,yz):t,x; endsets data:

t=@ole('游泳接力队的选拔问题.xls','chengji'); enddata

min=@sum(xb(i,j):t(i,j)*x(i,j)); @for(dy(i):@sum(yz(j):x(i,j))<=1); @for(yz(j):@sum(dy(i):x(i,j))=1); @for(xb(i,j):@bin(x(i,j))); end 5.6 旅游问题

从北京乘飞机到东京、纽约、墨西哥城、伦敦、巴黎五个城市做旅游,每个城市去且仅去一次,再回到东京,如何安排旅游线路使总旅程最短。城市间航线距离如下:

优化模型讲解 附LINGO程序

数学建模培训讲义 ——优化模型与LINGO软件 二○一一年七 目录 1 静态优化模型 (1) 1.1 最优生产计划问题 (1) 1.2 存贮模型 (2) 2 线性规划模型 (2) 2.1 LINGO简介 (2) 2.2 配料问题 (3) 2.3 练习:运输问题 (4) 3 整数规划模型 (4) 3.1 电影院广告问题 (4) 3.2 练习:生产计划问题 (5) 4 0-1规划 (5) 4.1 背包问题 (5) 4.2 矿井选址问题 (6) 4.3 练习:混合泳接力队的选拔问题 (7) 5 LINGO应用 (8) 5.1 变量定界函数 (8) 5.2 集合 (8) 5.3 帆船生产问题 (9)

5.4 派生集合 (11) 5.5 通过电子表格(Excel)文件传递数据 (12) 5.6 旅游问题 (13)

优化模型与LINGO 软件 优化问题是计划管理工作中经常要碰到的问题,比如,出门旅行就要考虑选择什么样的路线和交通工具,才能使旅行费用最省或使所花费的时间最少。在工厂技术、经济管理和科学研究等领域中,最优化问题就更多,一个工厂要怎样安排产品的生产,才能获得最大利润?一个设计部门要考虑在满足结构强度的要求下怎样使得所用的材料的总重量最轻? 比较有效的求解优化问题的一个方法使数学规划,它包括:线性规划、非线性规划、整数规划、动态规划和多目标规划等等。 用数学建模的方法来处理一个优化问题的时候,首先要确定优化的目标是什么,寻求的决策是什么,决策受到哪些条件的限制(如果有限制的话),然后用数学工具(变量、函数等)表示它们。 1 静态优化模型 静态优化模型,归结为微积分中的函数极值问题,可以直接用微分法求解。 1.1 最优生产计划问题 一计算机公司引进A 、B 两种类型的芯片技术,总耗资400000元,准备生产这两种类型的芯片出售。生产一片A 芯片的成本为1950元,而市场售价为3390元,生产一片B 芯片的成本为2250元,而市场售价3990元。由于市场存在竞争,每售出一片A 芯片,A 芯片就会降价0.1元,并且令B 芯片降低0.04元,每售出一片B 芯片,B 芯片就会降价0.1元,并且令A 芯片降价0.03元。假设生产的芯片都能卖出,求一生产计划,以获得最大利润。 模型分析: 假设A 、B 两种芯片的数量分别是1x 和2x ,市场价格分别是1p 和2p ,用R 表示出售芯片的总收入,用C 表示生存芯片的总费用,用P 表示总利润。 根据题意,上述变量有如下关系: 11233900.10.03p x x =-- 21239900.040.1p x x =-- 1122R p x p x =+ 1240000019502250C x x =++ P R C =- 模型建立: 根据上述分析,可得优化模型

优化建模与lingo软件

问题一:LP 问题在lindo 和lingo 中不同的输入形式 (1)将目标函数的表示方式从“MAX ”变成了“MAX=” (2)“ST ”在LINGO 模型中不再需要,所以被删除了 (3)每个系数与变量间增加了运算符“*”(即乘号不能省略) (4)每行(目标、约束和说明语句)后面均增加了一个分号“;”(英文状态下) (5)模型结束标志“END ”也被删除了(LINGO 中只有当模型以“MODEL :”开始时才能以“END ”结束)。 (6)英文状态下!后面的文字为说明文字,不参与模型的求解。 问题二:状态窗口的参数解释 variable adj 异变的,变量的 n 变量

问题三优化建模的实例: 1. 线性规划模型 2. 二次规划模型 3. 非线性规划模型 目标函数:()()∑∑--==+= 2161 22min j i bi yi ai xi cij f 约束条件:6,5,4,3,2,1,21 ∑===j i di cij ∑==<=6 1 2,1,i j ej cij 4. 整数规划模型(线性0-1规划模型是特殊的线性整数规划) 1) 目标函数:7654321min x x x x x x x z ++++++= 2) 约束条件: ???????????>=++++>=++++>=++++>=++++>=++++>=++++>=++++. 5076543,5065432,5054321,5074321,5076321,5076521,5076541x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x )7,,2,1(0 =>=i xi

运用LINGO进行优化模型求解,并与EXCEL进行连接

实验报告(二) 课程名称数学实验 实验项目运用LINGO进行优化模型求解,并与EXCEL进行连接实验环境PC机、LINGO 班级/学号/姓名 指导教师 实验日期2013-11-5 成绩

一、实验名称:运用LINGO 进行优化模型求解,并与EXCEL 进行连接 二、实验目的: 1、掌握Lingo 求解线性规划模型的方法及回看求解结果报告; 2、掌握Lingo 进行灵敏度分析的方法; 3、掌握Lingo 求解整数规划和0-1规划的方法; 4、掌握Lingo 中集合的定义方法; 5、掌握Lingo 与Excel 之间的链接方法; 三、实验内容: 习题四: 1.用LINGO 求解下列线性规划问题 (1)?????? ?=≥≤++≤++≤++++=. 4,...,1,0x 103x x 2x -4x 258x 2x 3x -3x 204x -4x -6x 5x ..8x 10x 2x 6x z max i 4321432143214 321i t s 程序: model : max =6*x1+2*x2+10*x3+8*x4; 5*x1+6*x2-4*x3-4*x4<=20; 3*x1-3*x2+2*x3+8*x4<=25; 4*x1-2*x2+x3+3*x4<=10; end 结果:

(2) ??? ??≥≤++≤++++=0,,x 9010x 4x 12x 20 3x x x -s.t.13x 5x -5x z max 3 213213213 21x x 程序: model : max =-5*x1+5*x2+13*x3; -1*x1+x2+3*x3<=20; 12*x1+4*x2+10*x3<=90; end 结果: (3)?? ???>=++<=+<=+=010y 4x 011-7y x 0 23-5y -7x ..y 2x z min t s 程序: model : min =2*x+y; 7*x-5*y-23<=0; x+7*y-11<=0; 4*x+y+10>=0; @free (x); @free (y); end 结果:

用lingo编程解决运输问题大全

LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model –LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例如何在LINGO中求解如下的LP问题:

,6002100 350. .32min 21211 2121≥≤+≥≥++x x x x x x x t s x x 在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。 例 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。 销地 产地 B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 产量 A 1 6 2 6 7 4 2 5 9 60 A 2 4 9 5 3 8 5 8 2 55 A 3 5 2 1 9 7 4 3 3 51 A 4 7 6 7 3 9 2 7 1 43 A 5 2 3 9 5 7 2 6 5 41 A 6 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

相关文档
最新文档