Lingo与线性规划.docx

上传人:b****9 文档编号:26032889 上传时间:2023-06-17 格式:DOCX 页数:40 大小:195.07KB
下载 相关 举报
Lingo与线性规划.docx_第1页
第1页 / 共40页
Lingo与线性规划.docx_第2页
第2页 / 共40页
Lingo与线性规划.docx_第3页
第3页 / 共40页
Lingo与线性规划.docx_第4页
第4页 / 共40页
Lingo与线性规划.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

Lingo与线性规划.docx

《Lingo与线性规划.docx》由会员分享,可在线阅读,更多相关《Lingo与线性规划.docx(40页珍藏版)》请在冰豆网上搜索。

Lingo与线性规划.docx

Lingo与线性规划

 

Lingo

与线性规划

线性规划的标准形式是

Min

z

c1x1

cnxn

a11x1

a1nxn

b1

s..t

am1x1

amnxn

(1)

bm

xi0,i

1,2,

n

其中zc1x1

cnxn称为目标函数,自变量xi称为决策变量,不等式组

(1)称为约

束条件.

满足不等式组

(1)的所有(x1,

xn)的集合称为可行域,在可行域里面使得z

取最小值的(x1*,

xn*)称为最优解,最优解对应的函数值称为最优值。

求解优化模型的主要软件有

Lingo、Matlab、Excel等。

其中Lingo是一款专

业求解优化模型的软件,有其他软件不可替代的方便功能。

本文将简要介绍其在线性规划领域的应用。

 

一、基本规定

1、目标函数输入格式

max=函数解析式;或者min=函数解析式;

2、约束条件输入格式

利用:

>、<、>=、<=等符号。

但是>与>=没有区别。

Lingo软件默认所以自变量都大于等于0.

3、运算

加(+),减(-),乘(*),除(/),乘方(x^a),要注意乘号(*)不能省略。

4、变量名

不区分大小写字母,不超过32个字符,必须以字母开头。

5、标点符号

每个语句以分号“;”结束,感叹号“!

”开始的是说明语句(说明语句也需要以分号“;”结束)。

但是,model,sets,data以“:

”结尾。

endsets,enddata,end尾部不加任何符号。

6、命令不考虑先后次序

7、MODEL语句

一般程序必须先输入MODEL:

表示开始输入模型,以“END”结束。

对简单的模型,这两个语句也可以省略。

8、改变变量的取值范围

@bin(变量名);

@bnd(a,变量名,b);

@free(变量名);

@gin(变量名);

例1求目标函数z2x1

 

限制该变量为0或1.

限制该变量介于a,b之间.

允许该变量为负数.

限制该变量为整数.

3x2的最小值,约束条件为

 

s..tx1

x2

350

x1

100

2x1

2x2

600

x1,x2

0

输入Lingo程序:

min=2*x1+3*x2;

x1+x2>=350;

x1>=100;

2*x1+x2<=600;

有两种运行方式:

1、点击工具条上的按钮即可。

2、点击菜单:

LINGO→Solve

运行结果如下:

 

下面对其各个部分进行说明:

Globaloptimalsolutionfound:

表示已找到全局最优解。

Objectivevalue:

表示最优值的大小。

可见本题函数最小值zmin800。

Infeasibilities:

矛盾约束的数目。

Totalsolveriterations:

迭代次数。

Variable:

变量。

本题有两个变量。

Value:

变量对应的最优解,即x1250,x2100。

ReducedCost:

变量xi在最优解的基础上增加一个单位,目标函数值的改变量。

例如,一个变量的ReducedCost值为8,那么当该变量增加一个单位,在最大化(最小化)问题中目标函数值将减少(增大)8个单位。

SlackorSurplus:

表示接近等于的程度,即约束离相等还差多少。

在约束条件是<=中,表示松弛程度,在约束条件是>=中,不是过剩程度。

如果约束条件是=,则SlackorSurplus为0,该约束是个紧约束(或有效约束)。

如果一个约束是矛盾的,即模型无可行解则Slackorsurplus的值是负数。

知道SlackorSurplus的值,可以帮助我们发现优化模型中错误的约束条件。

在上例中第2和第4行松弛变量均为0,说明对于最优解来讲,两个约束(第2和4行)均取等号,即都是紧约束,第3行为150,即最优解使得第3行过剩150.

DualPrice:

对偶价格的值,它表示约束条件中的常数,每增加一个单位,目标函数值改变的数量(在最大化问题中目标函数值是增加,在最小化问题中目

 

标函数值是减少)。

比如,在上一个Min模型中第四行的1,表示2*x1+x2<=600增加一个单位到2*x1+x2<=601,可以使目标值增加-1(因为第一行是目标函数

的DualPrice是-1),即Objectivevalue=799;如果增加-1个单位到599会使目标值增加到801。

例2求目标函数z4x12x222x3212的最小值,约束条件为

st..3x12x2x39

x1x2x31

x1,x2,x3R

输入Lingo程序:

min=4*x1^2-x2^2+2*x3^2+12;

3*x1+2*x2+x3=9;

x1+x2+x3=-1;

@free(x1);@free(x2);@free(x3);

运行结果:

 

即当x11,x28,x310时,zmin152。

 

二、灵敏度分析

灵敏度分析是指:

找出模型变量系数的一个变化范围,使得最优基(即最优

解)保持不变。

一般只对线性规划模型做灵敏度分析。

1、灵敏度分析操作步骤

第一步:

菜单lingo-->options-->generalsolver-->dual

computations:

prices&ranges-->ok.

第二步:

菜单lingo-->range

2、灵敏度报告中常见的词汇

Currentcoefficient

Allowableincrease

Allowabledecrease

当前目标函数系数

允许增加量

允许减少量

CurrentRHS:

当前右边常数项

INFINITY:

表示正无穷。

例1求解下列模型:

max=72*x1+64*x2;

x1+x2<=50;

 

12*x1+8*x2<=480;

3*x1<=100;

并做灵敏度分析。

求解报告:

 

灵敏度分析报告:

 

灵敏度分析报告的解读:

x1的系数变化范围是(72-8,72+24)=(64,96);x2的系数变化范围是

(64-16,64+8)=(48,72)。

注意:

x1系数的允许范围需要x2系数64不变,反之亦然。

由于目标函数的费用系数变化并不影响约束条件,因此此时最优基不变可以保证最优解也不变,但最优值变化。

右边常数项中,第2行原来为50,当它在[50-6.67,50+10]=[43.33,60]

范围变化时,最优基保持不变。

第3行可以类似解释。

对第4行,原来为100,当它在[100-40,100+∞]=[60,+∞]范围变化时,最优基保持不变。

不过由于此时约束发生变化,最优基即使不变,最优解、最优值也会发生变化。

 

三、数据输入

对于大型的优化问题,即自变量比较多的时候,还像上两节那样输入目标函数和约束条件就比较麻烦了。

一般输入数据的方法有两种:

一、建立向量、矩阵输入;二、调用外部数据。

这里仅介绍第一种方法。

 

1、建立向量

命令格式:

集合名称/集合维数/:

向量名称

例如:

 

sets:

set1/1..9/:

x;

set2/1..5/:

a,b;

endsets

表示建立了两类集合。

第一类集合set1,维数为9,x和y是向量名。

向量x=

(x

(1),,,x(9)),其中x(i)是x的元素。

第二类集合set2,维数为5,a和b都是向量名。

向量a=(a

(1),,,a(5)),其中a(i)是a的元素。

向量b=(b

(1),,,b(5)),其中b(i)是b的元素。

 

2、建立矩阵

命令格式:

集合名称(集合1,集合2)/:

矩阵名称例如:

sets:

set1/1..3/:

x;

set2/1..4/:

a;

link(set1,set2):

A;

endsets

表示建立了一个矩阵类link,其矩阵的阶数为34,A是具体的矩阵名。

有两个命令是比较常见的:

求和语句:

@sum(集合名(i):

含集合名(i)的语句);

循环语句:

@for(集合名(i):

循环的语句);

例3:

求目标函数z11x115x2的最小值,约束条件为

s..t20x1

30x2

360

30x1

25x2

2000

30x1

35x2

300

x1,x2

0

输入Lingo程序:

model:

sets:

set1/1..2/:

c,x;

set2/1..3/:

b;

link(set2,set1):

A;

endsets

max=@sum(set1(i):

c(i)*x(i));

@for(set2(i):

@sum(link(i,j):

A(i,j)*x(j))<=b(i));

data:

c=1115;

A=2030

3025

3025;

b=3602000300;

 

enddata

end

运行结果报告:

 

例4、某地区有三个蔬菜生产基地,估计每年可供应本地区的蔬菜量表为:

生产基地ABC

蔬菜生产量(吨)783

有四个地市需要该类蔬菜,需求表为:

地区甲乙丙

蔬菜生产量(吨)663

如果从各蔬菜生产基地到各地市的每吨蔬菜的运价表

地市甲乙丙

 

3

(单位:

万元

 

/吨)为:

生产基地

A

5

8

7

9

 

B

4

9

10

7

 

C

8

4

2

9

 

为了降低运输费,需要合理调拨资源.

(1)根据以上资料表制订一个使总的运费为最少的蔬菜调拨方案.

(2)如果有机会增加生产基地的产量1吨,问应当优先增加那个基地的产

量?

(3)如果将A到乙市的运价减少为5万元/吨,问这会影响最优的调拨方案

吗?

设A

i

个蔬菜生产基地,

i1,2,3,分别对应生产基地

,,;

i

ABC

Bi:

第i

个蔬菜需求地,i

1,2,3,4,分别对应蔬菜需求地市甲、乙、丙、

丁;

Q:

总运输费用;

 

xij:

表示的是从第i个生产基地向第j个地市运输的蔬菜数量;cij:

表示的是从第i个生产基地向第j个地市运输蔬菜的运价;bi:

第i个蔬菜生产基地的蔬菜产量;

qi:

第j个地市的蔬菜需求量;

那么有优化模型:

3

4

minQ

cijxij

i1

j1

x11

x12

x13

x14

b1

x21

x22

x23

x24

b2

x31

x32

x33

x34

b3

x11

x21

x31

q1

st..

x22

x32

q2

x12

x13

x23

x33

q3

x14

x24

x34

q4

xij0,i1,2,3;j1,2,3,4

输入Lingo程序求解模型:

model:

sets:

set1/1..3/:

b;

set2/1..4/:

q;

link(set1,set2):

c,x;

endsets

min=@sum(link(i,j):

c(i,j)*x(i,j));

@for(set1(i):

@sum(link(i,j):

x(i,j))<=b(i));

@for(set2(j):

@sum(link(i,j):

x(i,j))=q(j));

data:

c=5,8,7,9

4,9,10,7

8,4,2,9;

b=7,8,3;

q=6,6,3,3;

enddata

end

运行结果如下:

Globaloptimalsolutionfound.

Objectivevalue:

100.0000

Infeasibilities:

0.000000

Totalsolveriterations:

6

 

Variable

Value

ReducedCost

B

(1)

7.000000

0.000000

B

(2)

8.000000

0.000000

 

B(3)

3.000000

0.000000

Q

(1)

6.000000

0.000000

Q

(2)

6.000000

0.000000

Q(3)

3.000000

0.000000

Q(4)

3.000000

0.000000

C(1,1)

5.000000

0.000000

C(1,2)

8.000000

0.000000

C(1,3)

7.000000

0.000000

C(1,4)

9.000000

0.000000

C(2,1)

4.000000

0.000000

C(2,2)

9.000000

0.000000

C(2,3)

10.00000

0.000000

C(2,4)

7.000000

0.000000

C(3,1)

8.000000

0.000000

C(3,2)

4.000000

0.000000

C(3,3)

2.000000

0.000000

C(3,4)

9.000000

0.000000

X(1,1)

1.000000

0.000000

X(1,2)

6.000000

0.000000

X(1,3)

0.000000

1.000000

X(1,4)

0.000000

1.000000

X(2,1)

5.000000

0.000000

X(2,2)

0.000000

2.000000

X(2,3)

0.000000

5.000000

X(2,4)

3.000000

0.000000

X(3,1)

0.000000

7.000000

X(3,2)

0.000000

0.000000

X(3,3)

3.000000

0.000000

X(3,4)

0.000000

5.000000

Row

SlackorSurplus

DualPrice

1

100.0000

-1.000000

2

0.000000

0.000000

3

0.000000

1.000000

4

0.000000

4.000000

5

0.000000

-5.000000

6

0.000000

-8.000000

7

0.000000

-6.000000

8

0.000000

-8.000000

从该报告可以得到:

1、最优的调拨方案为:

 

地市甲乙丙丁

生产基地

A

1

6

0

0

 

B

5

0

0

3

 

C

0

0

3

0

 

2、从DualPrice

来看

生产基地A的供应量增加

1个单位,费用不变;

 

生产基地B的供应量增加1个单位,费用减少1;

生产基地C的供应量增加1个单位,费用减少4;

城市甲的需求量增加1个单位,费用减少-5,即增加5;城市乙的需求量增加1个单位,费用减少-8,即增加8;城市丙的需求量增加1个单位,费用减少-6,即增加6;城市丁的需求量增加1个单位,费用减少-8,即增加8;

3、从SlackorSurplus来看,所有的约束都是紧约束。

可见每个生产基地的蔬菜都全部运完。

然后做灵敏度分析:

Rangesinwhichthebasisisunchanged:

 

ObjectiveCoefficientRanges

Current

Allowable

Allowable

Variable

Coefficient

Increase

Decrease

X(1,1)

5.000000

1.000000

1.000000

X(1,2)

8.000000

1.000000

4.000000

X(1,3)

7.000000

INFINITY

1.000000

X(1,4)

9.000000

INFINITY

1.000000

X(2,1)

4.000000

1.000000

1.000000

X(2,2)

9.000000

INFINITY

2.000000

X(2,3)

10.00000

INFINITY

5.000000

X(2,4)

7.000000

1.000000

INFINITY

X(3,1)

8.000000

INFINITY

7.000000

X(3,2)

4.000000

4.000000

1.000000

X(3,3)

2.000000

1.000000

INFINITY

X(3,4)

9.000000

INFINITY

5.000000

RighthandSideRanges

Row

Current

Allowable

Allowable

RHS

Increase

Decrease

2

7.000000

INFINITY

0.0

3

8.000000

1.000000

0.0

4

3.000000

6.000000

0.0

5

6.000000

0.0

1.000000

6

6.000000

0.0

6.000000

7

3.000000

0.0

3.000000

8

3.000000

0.0

1.000000

可以得到以下信息:

1、运价在下面的范围内最优的调拨方案不变

:

地市甲乙

生产基地

A

[4,6]

[4,9]

[6,

+∞]

[8,

+∞]

 

B

[3,5]

[7,+∞][5,+∞]

[0,8]

 

C

[1,+∞][3,8]

[0,3]

[4,+∞]

 

2、生产基地的产量在下面的范围内最优基不变:

 

生产基地

 

A

 

B

 

C

蔬菜生产量

(吨)

[7,

+∞]

[8,9]

[6,9]

 

3、四个地市的需求量在下面的范围内最优基不变:

 

地区甲乙丙丁

蔬菜生产量(吨)[5,6][0,6][0,3][2,3]

 

四、收集的一些问题

1、福特在L.A.

和Detroit

生产汽车,在Atlanta

有一仓库,供应点为

Houston和Tampa;城市间每辆汽车运输费用见下表

.L.A.的生产能力为1100辆,

Detroit的生产能力为

2900辆.Houston

汽车需求量为

2400辆,Tampa汽车需

求量为1500辆,

L.A

DETROIT

ATLANTA

HOUSTON

TAMPA

L.A.

0

140

100

90

225

DETROIT

145

0

111

110

119

ATLANTA

105

115

0

113

78

HOUSTON

89

109

121

0

-

TAMPA

210

117

82

-

0

如何确定运输和生产方案,才能满足Houston和Tempa的需求且费用最低.

 

2、设有三个化肥厂供应四个地区的农用化肥.假定等量的化肥在这些地区使用效果相同.各化肥厂年产量,各地区年需要量及从各化肥厂到各地区运送单位化肥的运价(万元/万吨)如下表所示.试求出总的运费最省的化肥调拨方案.

 

需求地区

I

II

III

IV

化肥厂

(万吨)

A

16

13

22

17

50

B

14

13

19

15

60

C

19

20

23

禁止

50

最低需求(万吨)

30

70

0

10

最高需求(万吨)

50

70

30

不限

 

3、某航运公司承担

6个港口城市A,B,C,D,E,F

的四条固定航线的物资运输

任务.已知各条航线的起点,终点城市及每天航班数见下表:

航线

起点城市

终点城市

每天航班数

1

E

D

3

2

B

C

2

3

A

F

1

4

D

B

1

假定各条航线使用相同型号的船只,由各城市间的航程天数见下表:

 

到ABCDEF

 

A

0

1

2

14

7

7

B

1

0

3

13

8

8

C

2

3

0

15

5

5

D

14

13

15

0

17

20

E

7

8

5

17

0

3

F

7

8

5

20

3

0

又知每条船只每次装卸货物的时间各需1天,则该航运公司至少应配备多少条船,才能满足所有航线的运货要求.

 

4、如下图所示,节点间的线段表示某小区的弄堂,线段旁的数字表示弄堂的长度。

邮局在其中某个节点,请设计邮递员投递路线。

 

4

1

2

8

7

 

5

3

3

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 艺术创意

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1