当前位置:文档之家› 对应各章的习题及Lingo求解

对应各章的习题及Lingo求解

对应各章的习题及Lingo求解
对应各章的习题及Lingo求解

Lingo 精选题目及答案

答题要求:将Lingo 程序复制到Word 文档中,并且附上最终结果。 1、简单线性规划求解

(目标函数)2134max

x x z += s.t.(约束条件)???????≥≤≤+≤+0

,781022122

121x x x x x x x

2、整数规划求解

219040Max x x z +=

???

??≥≤+≤+0,7020756

792

12121x x x x x x 3、0-1规划求解

Max 4322

15.18.04.0x x x x f +++=

10106234321≤+++x x x x

10,,,4321或=x x x x

4、非线性规划求解

||4||3||2||min 4321x x x x z +++=

s.t. ???

?

???

-

=+--=-+-=+--2132130432143214321x x x x x x x x x x x x

5、集合综合应用

产生一个集合5052

--=x x y ,(10,...,2,1=x ),

求y 前6个数的和S 1,后6个数的和S 2,第2~8个数中的最小值S 3,最大值S 4。 6、综合题

要求列出具体的目标函数和约束条件,然后附上Lingo 程序和最终结果。 6.1 指派问题

有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表:

问指派哪个人去完成哪项工作,可使总的消耗时间为最小?

6.2 分配问题

某两个煤厂A1,A2每月进煤数量分别为60t和100t,联合供应3个居民区B1,B2,B3。3个居民区每月对煤的需求量依次分别为50t,70t,40t,煤厂A1离3个居民区B1,B2,B3的距离依次分别为10km,5km,6km,煤厂A2离3个居民区B1,B2,B3的距离分别为4km,8km,12km。问如何分配供煤量使得运输量(即t·km)达到最小?

1、

model:

max=4*x1+3*x2;

2*x1+x2<10;

x1+x2<8;

x2<7;

end

2、

model:

max=40*x1+90*x2;

9*x1+7*x2<56;

7*x1+20*x2<70;

@gin(x1);@gin(x2);

end

3、

model:

max=x1^2+0.4*x2+0.8*x3+1.5*x4;

3*x1+2*x2+6*x3+10*x4<10;

@bin(x1); @bin(x2);

@bin(x3); @bin(x4);

end

4、

model:

max=@abs(x1)+2*@abs(x2)+3*@abs(x3)+4*@abs(x4);

x1-x2-x3+x4=0;

x1-x2+x3-3*x4=1;

x1-x2-2*x3+3*x4=-1/2;

end

5、

model:

sets:

jihe/1..10/:y;

ss/1..4/:S;

endsets

!由于y和s中部分有负数,所以要先去掉这个约束;

@for(jihe:@free(y));

@for(ss(i):@free(S));

!产生元素;

@for (jihe(x):y(x)=x^2-5*x-50); S(1)=@sum (jihe(i)|i#le#6:y(i)); S(2)=@sum (jihe(i)|i#ge#5:y(i));

S(3)=@min (jihe(i)|i#ge#2 #and# i#le#8:y(i)); S(4)=@max (jihe(i)|i#ge#2 #and# i#le#8:y(i)); end

6.1、

设:第i 个工人做第j 项工作用时ij t ,标志变量ij f 定义如下:

??

?=其他

件工作个工人去做第指派第0

1j i f ij

min

∑∑==?4

14

1i j ij ij

t f

s.t. 14

1=∑=i ij

f

()4,3,2,1=j 每份工作都有一人做

∑==4

1

1j ij

f

()4,3,2,1=i 每人都只做一项工作

model : sets :

work/A B C D/;

worker/jia yi bing ding/; time(worker,work):t,f; endsets

!目标函数可以用[obj]标志出,也可以省略;

[obj] min =@sum (time(i,j):t(i,j)*f(i,j)); data :

!可以直接复制表格,但是在最后要有分号; t=

; e !每份工作都有一人做;

@for (work(j):@sum (time(i,j):f(i,j))=1); !每人都只做一项工作;

@for (worker(i):@sum (time(i,j):f(i,j))=1); !让f 取0-1值,此条件可以省略;

!@for(time(i,j):@bin(f(i,j))); end

6.2

设:煤厂进煤量i s ,居民区需求量为i d ,煤厂i 距居民区j 的距离为ij L ,煤厂i 供给

居民区j 的煤量为ij g

那么可以列出如下优化方程式

∑∑==?=312

1

min j i ij ij L g

s.t ()3,2,12

1==∑=j d g

i j

ij

()2,13

1

=≤∑=i s g

j i

ij

model : sets :

supply/1,2/:s; demand/1,2,3/:d;

link(supply,demand):road,sd; endsets data :

road=10 5 6 4 8 12; d=50 70 40; s=60 100; enddata

[obj] min =@sum (link(i,j):road(i,j)*sd(i,j)); @for (demand(i):@sum (supply(j):sd(j,i))=d(i)); @for (supply(i):@sum (demand(j):sd(i,j))

end

1.线性规划模型。某战略轰炸机群奉命摧毁敌人军事目标。已知该目标有四个要害部位,只要摧毁其中之一即可达到目的。为完成此项任务的汽油消耗量限制为48000升、重型炸弹48枚、轻型炸弹32枚。飞机携带重型炸弹时每升汽油可飞行2千米,带轻型炸弹时每升汽油可飞行3千米。又知每架飞机每次只能装载一枚炸弹,每出发轰炸一次除来回路程汽油消耗(空载时每升汽油可飞行4千米)外,起飞和降落每次各消耗100升。

表1 相关数据

2、资源配置模型。某工厂有原料钢管:每根19米,用户需求4米50根,6米20根,8米15根。如何下料钢管剩余总余量最小? 由于采用不同切割模式太多,会增加生产和管理成本,规定切割模式不能超过3种。

表1 不同切割的模式

模式4米钢管根数6米钢管根数8米钢管根数余料(米)

1 4 0 0 3

2 3 1 0 1

3 2 0 1 3

4 1 2 0 3

5 1 1 1 1

6 0 3 0 1

3、图论模型(动态规划)。求出下图所示的最小费用和最大流量,以及在最小费用下的最大流量。其中(x,y)中x表示容量,y表示费用。

图1 网络图

题目解答

1.线性规划模型。

解:设用了x 枚重型炸弹,用了y 枚轻型炸弹,攻击的是第i 个部位,再设一标志变量f 定义如下:

??

?=个部位

不攻击第个部位攻击第i i f i 0

1

目标函数为: ()[]∑=??+?=

4

1

max i i li i

h f p y p

x

()()480002004/3/2004/2/≤++?+++?i i i i d d y d d x

48≤x ,32≤y

14

1

=∑=i i

f

model : sets :

pd/1..4/:Ph,Pl,d,f; endsets data :

d=450,480,540,600; Ph=0.1,0.2,0.15,0.25; Pl=0.08,0.16,0.12,0.2; enddata

max =@sum (pd(i):(x*Ph(i)+y*Pl(i))*f(i));

@for (pd(i):x*(d(i)/2+d(i)/4+200)+y*(d(i)/3+d(i)/4)+200<48000); x<48;y<32;

@for (pd(i):@bin (f(i))); @sum (pd(i):f(i))=1;

!验证用油量;

!l=x*(d(4)/2+d(4)/4+200)+y*(d(4)/3+d(4)/4)+200; end

2、资源配置模型。某工厂有原料钢管:每根19米,用户需求4米50根,6米20根,8米15根。 如何下料钢管剩余总余量最小? 由于采用不同切割模式太多,会增加生产和管理成本,规定切割模式不能超过3种。

表1 不同切割的模式

模式 4米钢管根数

6米钢管根数

8米钢管根数

余料(米)

1 4 0 0 3

2

3 1 0 1 3 2 0 1 3

4 1 2 0 3

5 1 1 1 1

6 0 3 0 1 设:模式i 的供应量为i m ,对于第i 种模式,切割的4米钢管根数,6米钢管根数,8米钢

管根数,分别为ij t ,余料为i s ,每种钢管的需求量分别为i d ,再设一标志变量f 定义如下:

??

?=种模式

不采用第种模式采用第i i f i 0

1

目标函数:min

∑=??7

1

i i i i

m s f

j j i ij i

d m t f

=??∑=7

1 i =1,2,…,7

∑==7

1

3i i

f

model : sets :

mode/1..7/:m,s,f; demand/1..3/:d; md(mode,demand):t; endsets data :

s=3 1 3 3 1 1 3; d=50 20 15; t=

4 0 0 3 1 0 2 0 1 1 2 0 1 1 1 0 3 0 0

0 2

; enddata

[obj] min =@sum (mode(i):f(i)*s(i)*m(i));

@for (demand(j):@sum (mode(i):f(i)*m(i)*t(i,j))=d(j)); @for (mode(i):@bin (f(i))); @sum (mode(i):f(i))<3; end

3、图论模型(动态规划)。求出下图所示的最小费用和最大流量,以及在最小费用下的最大流量和最大流量下的最小费用。其中(x ,y )中x 表示容量,y 表示费用。

图1 网络图

1)求最小费用,解法一:稀疏矩阵0-1规划法

假设图中有n 个原点,现需要求从定点1到n 的最短路。设决策变量为ij f ,当1=ij f ,说明弧(i ,j )位于定点1至定点n 的路上;否则0=ij f ,其数学规划表达式为

min

∑∑==n i n

j ij

ij f w

11

约束条件,源点只有一条路指出去,终点只有一条路指进来,其余各点指进去的和指出去的相等,表达式如下,

??

???≠=-==-∑

∑==n

i n i i f f n

j ji n j ij ,10,1

,111

1

model : sets :

node/1..6/;

road(node,node)/1 2,1 3,2 4,2 5, 3 4,3 5,4 6,5 6/:w,f; endsets data :

w=2 1 5 3 4 3 0 0; enddata

n=@size (node);

[obj] min =@sum (road(i,j):w(i,j)*f(i,j)); @for (node(i)|i#ne#1 #and# i#ne#n:

@sum (road(i,j):f(i,j))=@sum (road(j,i):f(j,i))); @sum (road(i,j)|i#eq#1:f(i,j))=1;

!下面这个条件可以省略,这个条件包含在上面的条件了, 因为如果满足上面所以的条件指向终点的路只有且只有一条; @sum (road(j,i)|i#eq#n:f(j,i))=1; end

解法二:求源点到任意点的最小费用,动态规划法。

求1→6的最小费用,只要求1→4 + 4→6和1→5 + 5→6中的最小费用,以同样的方法向上推,求1→4的最小费用只要求出1→2 + 2→4 和1→3 + 3→4中的最小费用即可。可以归纳出如下的表达式:

()01=L

()()()()i j c j L i L i

j ,min +=≠ , 1≠i

model : sets :

node/1..6/:L;

road(node,node)/1 2,1 3,2 4,2 5,3 4,3 5,4 6,5 6/:c; endsets data :

c=2 1 5 3 4 3 0 0; enddata L(1)=0;

!求一点到任意点的最小费用;

@for (node(i)|i#gt#1:L(i)=@min (road(j,i)|j#ne#i:(L(j)+c(j,i)))); end

解法三:邻接矩阵法。

如果()

E v v j i ∈,,则称j v 与i v 邻接,具有n 个顶点的图的邻接矩阵是一个n ×n 阶矩阵

()n n ij a A ?=,其分量为

()?

??∈=其他,0,,1E v v a j i ij

n 个顶点的赋权图的赋权矩阵是一个n ×n 阶矩阵()

n

n ij

w W ?=,其分量为

()()??

?∞∈=其他

,

,,,E

v v v v w w j

i

j i ij

只需将动态规划的条件该一下即可

()01=L

()()()()()j i w j i a j L i L i

j ,,min ?+=≠ , 1≠i ,()0,≠j i a

model : sets :

node/1..6/:L;

road(node,node):a,w; endsets data :

0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0; w=9 2 1 9 9 9 9 9 9 5 3 9 9 9 9 4 3 9 9 9 9 9 9 0 9 9 9 9 9 0 9 9 9 9 9 9; enddata L(1)=0;

!求一点到任意点的最小费用;

@for (node(i)|i#gt#1:L(i)=@min (road(j,i)|

j#ne#i #and# a(j,i)#ne#0:(L(j)+w(j,i)))); end

2)求最大流量: max f v ∑==

n

j j

f f

v 2

1

???

??-=-∑

∑==0

1

1

f f n

j ji n j ij v v f f n i n i i ,11≠==

同样也可以用三种方法解,这里只给出邻接矩阵的解法,因为邻接矩阵最容易扩展到

多个点,且邻接矩阵用其他的软件非常容易得到。

model : sets :

node/1..6/;

road(node,node):w,a,f; endsets data :

a=0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0; w=0 1 4 0 0 0 0 0 0 6 4 0 0 0 0 5 3 0

0 0 0 0 0 3 0 0 0 0 0 0; enddata max =vf;

@sum (road(i,j)|i#eq#1:f(i,j))=vf; !用下面的表达也可以;

!@sum(node(i):f(1,i))=vf;

@for (node(i)|i#gt#1 #and# i#ne#@size (node):

@sum (node(j):f(i,j)*a(i,j))=@sum (node(j):f(j,i)*a(j,i))); @for (road(i,j):f(i,j)

!@for(road:@bnd(0,f,w)); end

3)最大流量下的最小费用

用上面的方法得到的最大流量的走法只是其中的一种,而不是所有的走法,所以需要找出最优解,其中最小费用或者最短路径是最常见的两类。

这里求最大流量下的最小费用,先要求出最大流量,然后流量就是已知条件,再求出最小费用就可以了。最大流量用前面的方法已经求出来了,约束条件和上面的一样,这里用

ij f 表示现流量,ij x 表示最大流量,即容量。

目标函数,min

∑∑==n i n

j ij

ij f w

11

约束条件,源点流出去的流量是最大流量,终点流进的也是最大流量,其余各点指进去的和指出去的相等,表达式如下,

??

???≠=-==-∑

∑==n

i n i vf

i vf f f n

j ji n j ij ,10,,11

1

对应的流量要小于容量

ij ij x f ≤

这里可以由上一问求出vf =5,

model : sets :

node/1..6/;

road(node,node)/1 2,1 3,2 4,2 5, 3 4,3 5,4 6,5 6/:w,x,f; endsets data :

w=2 1 5 3 4 3 0 0; x=3 4 6 4 5 3 7 3;

enddata

n=@size(node);

[obj] min=@sum(road(i,j):w(i,j)*f(i,j));

@for(node(i)|i#ne#1 #and# i#ne#n:

@sum(road(i,j):f(i,j))=@sum(road(j,i):f(j,i)));

@sum(road(i,j)|i#eq#1:f(i,j))=5;

@sum(road(j,i)|i#eq#n:f(j,i))=5;

@for(road(i,j):f(i,j)

end

lingo灵敏度分析实例

一个实例理解Lingo的灵敏性分析 线性规划问题的三个重要概念: 最优解就是反应取得最优值的决策变量所对应的向量。 最优基就是最优单纯形表的基本变量所对应的系数矩阵如果其行列式是非奇异的,则该系数矩阵为最优基。 最优值就是最优的目标函数值。 Lingo的灵敏性分析是研究当目标函数的系数和约束右端项在什么范围(此时假定其它系数不变)时,最优基保持不变。灵敏性分析给出的只是最优基保持不变的充分条件,而不一定是必要条件。下面是一道典型的例题。 一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1,或者在乙车间用8小时加工成4公斤A2。根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每公斤A2获利16元。现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤A1,乙车间的加工能力没有限制。试为该厂制订一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题: 1)若用35元可以买到1桶牛奶,应否作这项投资?若投资,每天最多购买多少桶牛奶?2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元? 3)由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划? 模型代码: max=72*x1+64*x2; x1+x2<=50; 12*x1+8*x2<=480; 3*x1<=100; 运行求解结果: Objective value: 3360.000 Variable Value Reduced Cost X1 20.00000 0.000000 X2 30.00000 0.000000 Row Slack or Surplus Dual Price 1 3360.000 1.000000 2 0.000000 48.00000 3 0.000000 2.000000 4 40.00000 0.000000 这个线性规划的最优解为x1=20,x2=30,最优值为z=3360,即用20桶牛奶生产A1, 30桶牛奶生产A2,可获最大利润3360元。输出中除了告诉我们问题的最优解和最优值以外,还有许多对分析结果有用的信息。 其中,“Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。其中基变量的reduced cost值应为0,对于非基变量Xj, 相应的reduced cost值表示当某个变量Xj 增加一个单位时目标函数减少的量( max型问题)。本例中X1,X2均为基变量。 “Slack or Surplus”给出松驰变量的值,模型第一行表示目标函数,所以第二行对应第一个约束。3个约束条件的右端不妨看作3种“资源”:原料、劳动时间、车间甲的加工能力。输出中Slack or Surplus给出这3种资源在最优解下是否有剩余:原料、劳动时间的剩余均为

运筹学实例分析及lingo求解

运筹学实例分析及lingo 求解 一、线性规划 某公司有6个仓库,库存货物总数分别为60、55、51、43、41、52,现有8个客户各要一批货,数量分别为35,37,22,32,41,32,43,38。各供货仓库到8个客户处的单位货物运输价见表 试确定各仓库到各客户处的货物调运数量,使总的运输费用最小。 解:设 ij x 表示从第i 个仓库到第j 个客户的货物运量。ij c 表示从第i 个仓库到第 j 个客户的单位货物运价,i a 表示第i 个仓库的最大供货量,j d 表示第j 个客户的订货量。 目标函数是使总运输费用最少,约束条件有三个:1、各仓库运出的货物总量不超过其库存数2、各客户收到的货物总量等于其订货数量3、非负约束 数学模型为: ∑∑===6 18 1)(min i j ij ij x c x f ????? ??????≥===≤∑∑==08,,2,1,6,2,1,,. .6 1 8 1ij j i ij i j ij x j d x i a x t s 编程如下: model : Sets : Wh/w1..w6/:ai;

Vd/v1..v8/:dj; links(wh,vd):c,x; endsets Data: ai=60,55,51,43,41,52; dj=35,37,22,32,41,32,43,38; c=6,2,6,7,4,2,5,9 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 Min=@sum(links(i,j):c(i,j)*x(i,j)); @for(wh(i):@sum(vd(j):x(i,j))<=ai(i)); @for(vd(j):@sum(wh(i):x(i,j))=dj(j)); end Global optimal solution found. Objective value: Total solver iterations: 0 Variable Value Reduced Cost AI( W1) AI( W2) AI( W3) AI( W4) AI( W5) AI( W6) DJ( V1) DJ( V2) DJ( V3) DJ( V4) DJ( V5) DJ( V6) DJ( V7) DJ( V8) C( W1, V1) C( W1, V2) C( W1, V3) C( W1, V4) C( W1, V5) C( W1, V6)

lingo程序与结果

程序: min=1.1*x+1.2*y+1.3*z+1.4*k; 290*a1+315*b1+350*c1+455*d1<=1850; 290*a1+315*b1+350*c1+455*d1>=1750; 290*a2+315*b2+350*c2+455*d2<=1850; 290*a2+315*b2+350*c2+455*d2>=1750; 290*a3+315*b3+350*c3+455*d3<=1850; 290*a3+315*b3+350*c3+455*d3>=1750; 290*a4+315*b4+350*c4+455*d4<=1850; 290*a4+315*b4+350*c4+455*d4>=1750; a1+b1+c1+d1<=5; a1+b1+c1+d1>=4; a2+b2+c2+d2<=5; a2+b2+c2+d2>=4; a3+b3+c3+d3<=5; a3+b3+c3+d3>=4; a4+b4+c4+d4<=5; a4+b4+c4+d4>=4; a1*x+a2*y+a3*z+a4*k>=15; b1*x+b2*y+b3*z+b4*k>=28; c1*x+c2*y+c3*z+c4*k>=21; d1*x+d2*y+d3*z+d4*k>=30; x>=y; y>=z; z>=k; @gin(x);@gin(y);@gin(z);@gin(k); @gin(a1);@gin(a2);@gin(a3);@gin(a4); @gin(b1);@gin(b2);@gin(b3);@gin(b4); @gin(c1);@gin(c2);@gin(c3);@gin(c4); @gin(d1);@gin(d2);@gin(d3);@gin(d4); 结果: Local optimal solution found. Objective value: 21.50000 Objective bound: 21.50000 Infeasibilities: 0.000000 Extended solver steps: 250 Total solver iterations: 14034 Variable Value Reduced Cost X 14.00000 1.100000 Y 4.000000 1.200000 Z 1.000000 1.300000 K 0.000000 1.400000 A1 1.000000 0.000000 B1 2.000000 0.000000 C1 0.000000 0.000000 D1 2.000000 0.000000 A2 0.000000 0.000000 B2 0.000000 0.000000 C2 5.000000 0.000000 D2 0.000000 0.000000 A3 2.000000 0.000000

LINGO大规模规划求解

lingo 大规模规划求解 首先,让我们先看看一个非常简单的规划例子在LINGO软件中实现过程: 目标函数: 约束条件: 求解上面目标函数的最小值,我们在lingo中可编写如下代码:model: MIN=2*X1+X2-3*X3+5; X1+X2-3*X3<=10; X1-2*X2>=5 @GIN(X1);!整数约束; @GIN(X2); @GIN(X3); END 可以看出,LINGO语言和数学专业语言很接近,很容易表示约束条件和目标函数。可是对于规模很大的约束条件,难道我们也必须这样一条一条的输入吗,显然这样做是一件非常困难和繁琐的事,lingo语言又是如何表示约束条件规模巨大的规划问题呢,带着这样的疑问,让我们一步一步得看下面的内容: 一、集合域 在数学中集合的定义如下: 集合:具有某种相同属性的对象放在一起,就形成了一个集合, 集合中的每一个对象称作该集合的元素。 在大规模的优化问题中,集合是必然存在的,比如在平板车建模中,各种规格集装箱就可以看成一个集合,在货物配送问题中154个城市可以看成一个集合。在lingo语言中,将某些对象看成一个集合便可以很方便地对集合中的每一个元素进行统一处理。 集合域必须在模型的约束引用集合之前定义。

集合域用关键字“sets”开始,“endsets”结束。 集合分类: 基本集合定义统一语法格式: setname[/member-list/][:attribute-list]; 集合名/对象名1 对象名2 …对象名n/:对象属性; 集合定义的几种方法: sets row/1..20/:d1,d2,…dn; !集合名/对象名/:对象属性; end sets 派生集合定义方法: sets row/1..20/; col/1..100/; page/1..50/; link(row.col):k1,k2…kn; trd/(,t2,…tn; end sets K1可以表示某个省的某个城市的人口。 t1可以表示某个省的某个城市某个人的收入。 二、数据域: 数据域是优化问题中已知得对象的属性值,例如:人的身高,体重;车辆的载重,行驶速度。 数据域以关键字“data”开头,“enddata”结束。 数据域可以出现在模型中的任何地方。 data: d1=…; k1=…; t1=…; enddata 数据域的未知数值 有时只想为一个集的部分成员的某个属性指定值,而让其余成员的该属性保持未知,以便让LINGO去求出它们的最优值。在数据声明中输入两个相连的逗号表示该位置对应的集成员的属性值未知。两个逗号间可以有空格。 例3.8 sets:

matlab、lingo程序代码23-线性规划问题及灵敏度分析

线性规划问题及灵敏度分析在LINGO软件中的实现 (龙少波李东阳罗添元) 一、问题的提出: 某公司饲养实验用的动物以出售给动物研究所,已知这些动物的生长对饲 料中3种营养成分(蛋白质、矿物质和维生素)特别敏感,每个动物每周至少需 要蛋白质60g,矿物质3g,维生素8mg,该公司能买到5种不同的饲料,每种饲 料1kg所含各种营养成分和成本如下表所示,如果每个小动物每周食用饲料不超 过52kg,才能满足动物生长需要。 A1 A2 A3 A4 A5 营养最 低 要求蛋白质(g) 0.3 2 1 0.6 1.8 60 矿物质(g) 0.1 0.05 0.02 0.2 0.05 3 维生素(mg) 0.05 0.1 0.02 0.2 0.08 8 成本(元/ kg)0.2 0.7 0.4 0.3 0.5 问题: 1.求使得总成本最低的饲料配方? 2.如果另一个动物研究对蛋白质的营养要求变为59单位, 但是要求动物的价格比现在的价格便宜0.3元,问该养殖所 值不值得接受? 3.由于市场因素的影响,X2的价格降为0.6元每千克, 问是否要改变饲料配方? 二、建立线性规划数学模型 解答: (1)设需要饲料A1, A2, A3, A4分别为X1, X2, X3, X4kg,则建立线 性规划数学模型如下: 目标函数:MinS=0.2X1+0.7X2+0.4X3+0.3X4+0.5X5 约束条件:0.3X1+2X2+X3+0.6X4+1.8X5>=60 0.1X1+0.05X2+0.02X3+0.2X4+0.05X5>=3 005X1+0.1X2+0.02X3+0.2X4+0.08X5>=8

数学中的灵敏度分析

假设条件成为了建模过程中一个影响模型好坏的影响因素,灵敏度分析就是在模型建立后,对假设条件变化,检验模型的优劣性 一般来说Lingo做出来的灵敏度分析能够达到一个比较理想的程度,不过还是要根据模型本身来研究,建议你在开始之前先学习一下《数值分析》,对建模的灵敏度分析很有用哈,再根据《数值分析》的方法,对M-C(蒙特卡罗)方法进行灵敏度分析,你会很快掌握~~~ 随着现代工业的迅速发展,对工业设备的精度提出了更高的要求。但是,由于制造误差、轴承间隙、弹性变形等因素的影响,不可避免地会对设备的精度产生一定的影响。因此我们就有必要建立起一个数学模型并且应用恰当的分析方法来研究上述的各种误差对精度的影响关系,找出影响最大的因素,作为我们在实际的制造和装配过程中进行误差分配,降低生产成本,提高传动精度的理论依据。这里就可以采用灵敏度分析的方法。它主要包括局部灵敏度分析方法和全局灵敏度分析方法。 一、局部灵敏度分析方法 局部法主要分析因素对模型的局部影响(如某点)。局部法可以得到参数对输出的梯度,这一数值是许多领域研究中所需要的重要数据。局部法主要应用于数学表达式比较简单,灵敏度微分方程较易推出,不确定因素较少的系统模型中。主要包括直接求导法、有限差分法、格林函数法。 1.直接求导法 对于输入因素个数少、结构不复杂、灵敏度微分方程较易推导的系统或模型,直接法是一种简单快速的灵敏度分析方法。时变(非静止)系统可以用微分或微分-代数方程进行描述。假设要考虑的初值问题是 ,(1) 同样,代表n维输出变量,代表m维输入因素。代表初值数组。 式(1)对输入因素微分得到下述的灵敏度微分方程

(2) 或以矩阵形式表示为(3) 式中,是系统代数-微分方程右边对系统输出变量的导数(可称为雅可比矩阵),是对输入因素的导数,也可称为参数雅可比。微分方程(2)的初始条件为零向量。 上述的直接法建立在微分方程(2)的基础上,要得到其灵敏度矩阵S的解,需要先求得矩阵J和F的值。而矩阵的值又是由系统变量的真实值确定,因此,需同时或预先求得(1)方程的解。 对于非时变(静止)系统,将其代数方程,式中,Y是n维输出变量,X是m维输入因素。令表示隐性代数方程式的解。对输入因素求导数,得到下面的灵敏度公式: (4) 式中,称为静态灵敏度矩阵,和由静态点的变量值计算。对于变量少、结构不复杂、灵敏度微分方程较易推出的系统,直接法是一个简单快速的灵敏度分析方法。 2.有限差分法 局部灵敏度最简单的计算方法是有限差分法,其基本做法是使设计变量有一个微小的摄动,用差分格式来计算输出对设计变量的近似导数。其中比较简单的是采用向前差分格式 (5) 式中,截断误差与同阶。有时采用更为精确的中心差分公式 (6) 而,

Lingo与线性规划

Lingo 与线性规划 线性规划的标准形式是 Min z c 1 x 1 c n x n a 11 x 1 a 1n x n b 1 s..t a m1 x 1 a mn x n (1) b m x i 0, i 1,2, , n 其中 z c 1 x 1 c n x n 称为目标函数, 自变量 x i 称为决策变量 ,不等式组 (1)称为约 束条件 . 满足不等式组 (1)的所有 ( x 1, , x n ) 的集合称为可行域,在可行域里面使得z 取最小值的 ( x 1* , , x n * ) 称为最优解,最优解对应的函数值称为最优值。 求解优化模型的主要软件有 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 求目标函数 z 2x 1 限制该变量为 0 或 1. 限制该变量介于 a,b 之间 . 允许该变量为负数 . 限制该变量为整数 . 3x 2 的最小值,约束条件为

Lingo超经典案例大全

Lingo超经典案例大全 LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”。Lingo超强的优化计算能力在很多方面(线性规划、非线性规划、线性整数规划、非线性整数规划、非线性混合规划、二次规划等)比matlab、maple等强得多,Lingo编程简洁明了,数学模型不用做大的改动(或者不用改动)便可以直接采用Lingo语言编程,十分直观。 Lingo模型由4个段构成: (1)集合段(sets endsets);(2)数据段(data enddata); (3)初始段(init endinit);(4)目标与约束段。 Lingo的五大优点: 1. 对大规模数学规划,LINGO语言所建模型较简洁,语句不多; 2. 模型易于扩展,因为@FOR、@SUM等语句并没有指定循环或求和的上下限,如果在集合定义部分增加集合成员的个数,则循环或求和自然扩展,不需要改动目标函数和约束条件; 3. 数据初始化部分与其它部分语句分开,对同一模型用不同数据来计算时,只需改动数据部分即可,其它语句不变; 4. “集合”是LINGO有特色的概念,它把实际问题中的事物与数学变量及常量联系起来,是实际问题到数学量的抽象,它比C语言中的数组用途更为广泛。 5. 使用了集合以及@FOR、@SUM等集合操作函数以后可以用简洁的语句表达出常见的规划模型中的目标函数和约束条件,即使模型有大量决策变量和大量数据,组成模型的语句并不随之增加. 一、求解线性整数规划、非线性整数规划问题: 1.线性整数规划: model: max=x1+x2; x1+9/14*x2<=51/14; -2*x1+x2<=1/3; @gin(x1);@gin(x2); end

最优化方法(线性规划)——用Lingo对线性规划进行灵敏度分析

lingo 软件求解线性规划及灵敏度分析 注:以目标函数最大化为例进行讨论,对求最小的问题,有类似的分析方法!所有程序运行环境为lingo10。 一、用lingo 软件求解线性规划 例1: m a x 23..4310 3512,0 z x y s t x y x y x y =++≤+≤≥ 在模型窗口输入: model: max=2*x+3*y; 4*x+3*y<=10; 3*x+5*y<12; ! the optimal value is :7.454545 ; End 如图所示: 运行结果如下(点击 工具栏上的‘solve ’或点击菜单‘lingo ’下的‘solve ’即可): Global optimal solution found. Objective value: 7.454545(最优解函数值) Infeasibilities: 0.000000 Total solver iterations: 2(迭代次数)

Variable (最优解) Value Reduced Cost X 1.272727 0.000000 Y 1.636364 0.000000 Row Slack or Surplus Dual Price 1 7.454545 1.000000 2 0.000000 0.9090909E-01 3 0.000000 0.5454545 例2: 12123124125m a x 54.. 390280450 z x x s t x x x x x x x x x x =+++=++=++=≥ 在模型窗口输入: model: max=5*x1+4*x2; x1+3*x2+x3=90; 2*x1+x2+x4=80; x1+x2+x5=45; end 运行(solve )结果如下: Global optimal solution found. Objective value: 215.0000 Infeasibilities: 0.000000 Total solver iterations: 3 Variable Value Reduced Cost X1 35.00000 0.000000 X2 10.00000 0.000000 X3 25.00000 0.000000 X4 0.000000 1.000000 X5 0.000000 3.000000 Row Slack or Surplus Dual Price 1 215.0000 1.000000 2 0.000000 0.000000 3 0.000000 1.000000 4 0.000000 3.000000 例3

数学建模:运用Lindolingo软件求解线性规划

数学建模:运用Lindolingo软件求解线性规划 1、实验内容: 对下面是实际问题建立相应的数学模型,并用数学软件包Lindo/lingo对模型进行求解。 某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.名今工厂共有原料60千克,工人150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论: 1)若投资0.8万元可增加原料1千克,问应否作这项投资. 2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划. 数学建模论文 运用lindo/lingo软件求解线性规划 运用lindo/lingo软件求解线性规划 一、摘要 本文要解决的问题是如何安排生产计划,即两种饮料各生产多少使获利最大。 首先,对问题进行重述明确题目的中心思想,做出合理的假设,对符号做简要的说明。 然后,对问题进行分析,根据题目的要求,建立合适的数学模型。 最后,运用lindo/lingo软件求出题目的解。 【关键词】最优解 lindo/lingo软件 第二、问题的重述 某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.今工厂共有原

料60千克,工人150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论: 1)若投资0.8万元可增加原料1千克,问应否作这项投资。 2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划。 第三、模型的基本假设 1、每一箱饮料消耗的人力、物力相同。 2、每个人的能力相等。 3、生产设备对生产没有影响。 第四、符号说明 1、x.....甲饮料 2、y.....乙饮料 3、z.....增加的原材料 第五、问题分析 根据题目要求:如何安排生产计划,即两种饮料各生产多少使获利最大,可知本题所求的是利润的最大值。我们可以先建立数学模型,然后用lindo/lingo软件包求解模型的最大值。 第六、模型的建立及求解根据题目建立如下3个模型: 模型1: max=0.1*x+0.09*y; 0.06*x+0.05*y<=60; 0.1*x+0.2*y<=150; x+y<=800; 结果:x=800;y=0;max=80 模型2:

【2017年整理】lingo灵敏度分析实例

【2017年整理】lingo灵敏度分析实例一个实例理解Lingo的灵敏性分析 线性规划问题的三个重要概念: 最优解就是反应取得最优值的决策变量所对应的向量。 最优基就是最优单纯形表的基本变量所对应的系数矩阵如果其行列式是非奇异的,则该系数矩阵为最优基。 最优值就是最优的目标函数值。 Lingo的灵敏性分析是研究当目标函数的系数和约束右端项在什么范围(此时假定其它系数不变)时,最优基保持不变。灵敏性分析给出的只是最优基保持不变的充分条件,而不一定是必要条件。下面是一道典型的例题。 一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1,或者在乙车间用8小时加工成4公斤A2。根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每公斤A2获利16元。现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤A1,乙车间的加工能力没有限制。试为该厂制订一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题: 1) 若用35元可以买到1桶牛奶,应否作这项投资,若投资,每天最多购买多少桶牛奶, 2) 若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元, 3) 由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划, 模型代码: max=72*x1+64*x2; x1+x2<=50; 12*x1+8*x2<=480;

3*x1<=100; 运行求解结果: Objective value: 3360.000 Variable Value Reduced Cost X1 20.00000 0.000000 X2 30.00000 0.000000 Row Slack or Surplus Dual Price 1 3360.000 1.000000 2 0.000000 48.00000 3 0.000000 2.000000 4 40.00000 0.000000 这个线性规划的最优解为x1=20,x2=30,最优值为z=3360,即用20桶牛奶生产A1, 30桶牛奶生产A2,可获最大利润3360元。输出中除了告诉我们问题的最优解和最优值以外,还有许多对分析结果有用的信息。 其中,“Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。其中基变量的reduced cost值应为0,对于非基变量 Xj, 相应的 reduced cost值表示当某个变量Xj 增加一个单位时目标函数减少的量( max型问题)。本例中X1,X2均为基变量。 “Slack or Surplus”给出松驰变量的值,模型第一行表示目标函数,所以第二行对应第一个约束。3个约束条件的右端不妨看作3种“资源”:原料、劳动时间、车间甲的加工能力。输出中Slack or Surplus给出这3种资源在最优解下是否有剩余:原料、劳动时间的剩余均为 零,车间甲尚余40(公斤)加工能力。

灵敏性分析

LINGO灵敏性分析(Range,Ctrl+R) 用该命令产生当前模型的灵敏性分析报告:研究当目标函数的费用系数和约束右端项在 什么范围(此时假定其它系数不变)时,最优基保持不变。灵敏性分析是在求解模型时作出的,因此在求解模型时灵敏性分析是激活状态,但是默认是不激活的。为了激活灵敏性分析,运行 LINGO|Options…,选择 General Solver Tab,在 Dual Computations 列表框中,选择 Prices and Ranges 选项。灵敏性分析耗费相当多的求解时间,因此当速度很关键时,就没有必要激活它。 下面我们看一个简单的具体例子。 例 5.1某家具公司制造书桌、餐桌和椅子,所用的资源有三种:木料、木工和漆工。生产数据如下表所示: 若要求桌子的生产量不超过 5 件,如何安排三种产品的生产可使利润最大? 用 DESKS、TABLES 和 CHAIRS 分别表示三种产品的生产量,建立 LP 模型。 max=60*desks+30*tables+20*chairs; 8*desks+6*tables+chairs<=48; 4*desks+2*tables+1.5*chairs<=20; 2*desks+1.5*tables+.5*chairs<=8; tables<=5; 求解这个模型,并激活灵敏性分析。这时,查看报告窗口(Reports Window),可以看 到如下结果。

“Global optimal solution found at iteration: 3”表示 3 次迭代后得到全局最优解。“Objective value:280.0000”表示最优目标值为 280。“Value”给出最优解中各变量的值:造 2 个书桌(desks), 0 个餐桌(tables), 8 个椅子(chairs)。所以 desks、chairs 是基变量(非 0), tables 是非基变量(0)。 “Slack or Surplus”给出松驰变量的值: 第 1 行松驰变量 =280(模型第一行表示目标函数,所以第二行对应第一个约束) 第 2 行松驰变量 =24 第 3 行松驰变量 =0 第 4 行松驰变量 =0 第 5 行松驰变量 =5 “Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。其中基变量的 reduced cost 值应为 0,对于非基变量 Xj, 相应的 reduced cost 值表示当某个变量 Xj 增加一个单位时目标函数减少的量( max 型问题)。本例中:变量 tables 对应的 reduced cost 值为 5,表示当非基变量 tables 的值从 0变为 1 时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值 = 280 - 5 = 275。 “DUAL PRICE”(对偶价格)表示当对应约束有微小变动时, 目标函数的变化率。输 出结果中对应于每一个约束有一个对偶价格。若其数值为 p,表示对应约束中不等式右端项若增加 1 个单位,目标函数将增加 p 个单位(max 型问题)。显然,如果在最优解处约束正好取等号(也就是“紧约束”,也称为有效约束或起作用约束),对偶价格值才可能不是0。本例中:第 3、4 行是紧约束,对应的对偶价格值为 10,表示当紧约束 3) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 20 变为 3) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 21 时,目标函数值 = 280 +10 = 290。对第 4 行也类似。 对于非紧约束(如本例中第 2、5 行是非紧约束),DUAL PRICE 的值为 0, 表示对应约束中不等式右端项的微小扰动不影响目标函数。有时, 通过分析 DUAL PRICE, 也可对产生不可行问题的原因有所了解。 灵敏度分析的结果是 目标函数中 DESKS 变量原来的费用系数为 60,允许增加(Allowable Increase)=4、允许减少(Allowable Decrease)=2,说明当它在[60-4,60+20] = [56,80]范围变化时,

Lingo与线性规划

Lingo 与线性规划 线性规划的标准形式是 1111111..0,1,2,,n n m mn n m i a x a x b s t a x a x b x i n +≤??? ? +≤??≥=?L M L L (1) 其中11n n z c x c x =++L 称为目标函数,自变量i x 称为决策变量,不等式组(1)称为约束条件. 满足不等式组(1)的所有1(,,)n x x L 的集合称为可行域,在可行域里面使得z 取最小值的** 1(,,)n x x L 称为最优解,最优解对应的函数值称为最优值。 求解优化模型的主要软件有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(变量名); 限制该变量为0或1. @bnd(a,变量名,b ); 限制该变量介于a,b 之间. @free(变量名); 允许该变量为负数. @gin(变量名); 限制该变量为整数. 例1 求目标函数1223z x x =+的最小值,约束条件为 输入Lingo 程序: min = 2*x1 + 3*x2; x1 + x2 >= 350; x1 >= 100; 2*x1 + x2 <= 600; 有两种运行方式: 1、点击工具条上的按钮 即可。 2、点击菜单:LINGO →Solve 运行结果如下: 下面对其各个部分进行说明: Global optimal solution found :表示已找到全局最优解。 Objective value :表示最优值的大小。可见本题函数最小值min z =800。 Infeasibilities :矛盾约束的数目。 Total solver iterations:迭代次数。 Variable :变量。本题有两个变量。

lingo结果分析及灵敏性分析

lingo结果分析及灵敏性分析 问题描述 程序代码: max = 60*desks + 30*tables + 20*chairs; 8*desks + 6*tables + chairs <= 48; 2*desks + 1.5*tables + 0.5*chairs <= 8; 4*desks + 2*tables + 1.5*chairs <= 20; tables<= 5; 部分结果一: Variable Value Reduced Cost DESKS 2.000000 0.000000 TABLES 0.000000 5.000000 CHAIRS 8.000000 0.000000 ⑴Value:给出最优解中各变量的值,Value=0(非基变量),反之为基变量。

⑵Reduced Cost:表示当非基变量有微小变动时, 目标函数的变化率。本例中: 变量tables 对应的reduced cost 值为5,表示当非基变量tables 的值从0 变为1 时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值= 280 - 5 = 275。 部分结果二: Row Slack or Surplus Dual Price 1 280.0000 1.000000 2 24.00000 0.000000 3 0.000000 10.00000 4 0.000000 10.00000 5 5.000000 0.000000 ⑴“Slack or Surplus”――松驰变量。 ⑵“Dual Price”――对偶价格表示当对应约束有微小变动时, 目标函数的变化 率。若其数值为p,表示对应约束中不等式右端项若增加1个单位,目标函数将增加p个单位(max 型问题)。 ⑶如果在最优解处约束正好取等号(紧约束,也称为有效约束或起作用约束), 对偶价格值才可能不是0。本例中:第3、4 行是紧约束,对应的对偶价格值为10,表示当紧约束4) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 20 变为4) 4 DESKS + 2 TABLES + 1. 5 CHAIRS <= 21 时,目标函数值= 280 +10 = 290。

lingo解决线性规划问题的程序

Lingo12软件培训教案 Lingo 主要用于求解线性规划,整数规划,非线性规划,V10以上版本可编程。 例1 一个简单的线性规划问题 0 , 600 2 100 350 st. 3 2max >=<=+=<<=++=y x y x x y x y x z ! 源程序 max = 2*x+3*y; [st_1] x+y<350; [st_2] x<100; 2*x+y<600; !决策变量黙认为非负; <相当于<=; 大小写不区分 当规划问题的规模很大时,需要定义数组(或称为矩阵),以及下标集(set) 下面定义下标集和对应数组的三种方法,效果相同::r1 = r2 = r3, a = b = c. sets : r1/1..3/:a; r2 : b; r3 : c; link2(r1,r2): x; link3(r1,r2,r3): y; endsets data : ALPHA = ; a=11 12 13 ; r2 = 1..3; b = 11 12 13; c = 11 12 13; enddata

例2 运输问题 解: 设决策变量ij x = 第i 个发点到第j 个售点的运货量,i =1,2,…m; j =1,2,…n; 记为ij c =第i 个发点到第j 个售点的运输单价,i =1,2,…m; j =1,2,…n 记i s =第i 个发点的产量, i =1,2,…m; 记j d =第j 个售点的需求量, j =1,2,…n. 其中,m = 6; n = 8. 设目标函数为总成本,约束条件为(1)产量约束;(2)需求约束。 于是形成如下规划问题: n j m i x n j d x m i s x x c ij j n i ij i m j ij m i n j ij ij ,...,2,1,,...,2,1,0 ,...,2,1, ,...,2,1, st. z min 11 11==>=<==<==∑∑∑∑==== 把上述程序翻译成LINGO 语言,编制程序如下: ! 源程序

熟悉LINGO软件的灵敏度分析功能

熟悉LINGO软件的灵敏度分析功能

2012——2013学年第一学期 合肥学院数理系 实验报告 课程名称:运筹学 实验项目:熟悉LINGO软件的灵敏度分析功能实验类别:综合性□设计性□√验证性□专业班级: 姓名:学号: 实验地点: 实验时间: 2012年11月22日 指导教师:管梅成绩:

一.实验目的 1、学会使用LINGO 软件求解线性规划问题的灵敏度分析。 2、学会分析LINGO 软件求解的结果。 二.实验内容 1、求解线性规划: 12 1212max 2251228Z x x x x x x =++≥?? +≤? 并对价值系数、右端常量进行灵敏度分析。 2、已知某工厂计划生产I ,II ,III 三种产品,各产品需要在A 、B 、C 设备上加 I II III 设备有效台时 (每月) A 8 2 10 300 B 10 5 8 400 C 2 13 10 420 单位产品利润 (千元) 3 2 2.9 (1)如何发挥生产能力,使生产盈利最大? (2)若为了增加产量,可租用别工厂设备B ,每月可租用60台时,租金1.8万元,租用B 设备是否合算? (3)若另有二种新产品IV 、V ,其中新产品IV 需用设备A 为12台时、B 为5台时、C 为10台时,单位产品盈利2.1千元;新产品V 需用设备A 为4台时、B 为4台时、C 为12台时,单位产品盈利1.87千元。如A 、B 、C 的设备台时不增加,这两种新产品投产在经济上是否划算? (3)对产品工艺重新进行设计,改进结构。改进后生产每件产品I 需用设备A 为9台时、设备B 为12台时、设备C 为4台时,单位产品盈利4.5千元,这时对原计划有何影响? 三. 模型建立 1、模型略

线性规划lingo实现示例

加工奶制品的生产计划 问题 品加工厂用牛奶生产1A ,2A 两种奶制品,1桶牛奶可以在设备甲用12小时加工成3公斤1A ,或者在设备乙上用8小时加工成4公斤2A 。根据市场需求,生产的1A ,2A 全部能售出,且每公斤1A 获利24元,每公斤2A 获利16元。现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间魏480小时,并且设备甲每天至多能加工100公斤1A ,设备乙的加工能力没有限制。试为该厂制订一个生产计划,使每天获利最大,并进一步讨论以下三个附加问题: 1) 若用35元可以买到1桶牛奶,应否作这项投资? 若投资,每天最多购买多少桶 牛奶? 2) 若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元? 3) 由于市场需求变化,每公斤1A 的获利增加到30元,应否改变生产计划? 问题分析 这个优化问题的目标是使每天的获利最大,要作的决策是生产计划,即每天用多少桶牛奶生产1A ,用多少桶牛奶生产2A ,决策受到3个条件的限制:原料(牛奶)供应、劳动时间、设备甲的工作能力。按照题目所给,将决策变量、目标函数和约束条件用数学符号及式子表示出来,就得到下面的模型。 基本模型 决策变量:设每天用1x 桶牛奶生产1A ,用2x 桶牛奶生产2A 。 目标函数:设每天获利Z 元。1x 桶牛奶可生产31x 公斤1A ,获利1324x ?,2x 桶牛奶可生产42x 公斤2A ,获利2416x ?,故Z=216472x x +. 约束条件 原料供应:生产1A ,2A 的原料(牛奶)总量不得超过每天的供应,即1x +2x ≤50桶; 劳动时间:生产1A ,2A 的总加工时间不得超过每天正式工人总的劳动时间,即121x +82x ≤480小时; 设备能力:1A 的产量不得超过设备甲每天的加工能力,即31x ≤100; 非负:1x ,2x 均不能为负值,即1x ≥0,2x ≥0。 综上可得 Max Z=216472x x + (1) s.t. 1x +2x ≤50 (2)

相关主题
文本预览
相关文档 最新文档