线性规划与lingo软件.docx
- 文档编号:10190869
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:17
- 大小:89.17KB
线性规划与lingo软件.docx
《线性规划与lingo软件.docx》由会员分享,可在线阅读,更多相关《线性规划与lingo软件.docx(17页珍藏版)》请在冰豆网上搜索。
线性规划与lingo软件
一、线性规划问题的基础知识
在生产和经营管理工作中,经常需要进行合理的计划或规划。
计划或规划的共同特点是:
在人力,财力和物力等资源有限的条件下,如何确定方案,使经济效益达到最大;或在规定的任务或指标的前提下,如何确定方案,使成本或消耗最小。
1、例、产品生产计划问题
某工厂计划用现有的铜、铅两种资源生产甲、乙两种电缆,已知甲、乙两种电缆的单位售价分别为6万元和4万元。
生产单位产品甲、乙电缆对铜、铅的消耗量计可利用的铜、铅数量如表所示:
甲电缆
乙电缆
资源量
铜(吨)
2
1
10
铅(吨)
1
1
8
价格(万元)
6
4
市场对乙电缆的最大需求量为7单位,而对甲电缆的需求量无限制。
问该工厂应如何安排生产才能使工厂的总收入最大?
解、设
,
分别代表甲、乙两种电缆的生产量,
为工厂的总收入,则得到如下模型:
Obj:
还有类似的模型,有一组决策变量,一个目标函数,一组约束方程包括非负约束,称为线性规划模型
2、线性规划模型的一般表示:
表示第
种产品的单位价格,
表示第
种资源的拥有量,
表示生产单位第
种产品对
种资源的消耗量。
3、线性规划的灵敏度分析
线性规划问题有三个参数,即价值系数,右端系数和技术系数,这些参数可能随外界条件的改变而发生改变,如产品的价格会随市场的变化而变化,资源供应量也随市场的变化而发生变化,技术消耗系数也可能随技术进步而发生变化。
我们关心的问题不仅是当前模型的解及其特性,同时关心当价值系数,右端系数和技术系数发生变化时,原有的最优解得结构是否会发生变化,或者最优解结构不变的价值系数,右端系数的最大变化范围是多少?
这一分析称为灵敏度分析。
4、Lingo模型的编程例题
某公司有6个仓库,库存货物总数分别为60、55、51、43、41、52,现有8个客户各要一批货,数量分别为35,37,22,32,41,32,43,38。
各供货仓库到8个客户处的单位货物运输价见表
V1
V2
V3
V4
V5
V6
V7
V8
W1
6
2
6
7
4
2
5
8
W2
4
9
5
3
8
5
8
2
W3
5
2
1
9
7
4
3
3
W4
7
6
7
3
9
2
7
1
W5
2
3
9
5
7
2
6
5
W6
5
5
2
2
8
1
4
3
试确定各仓库到各客户处的货物调运数量,使总的运输费用最小。
解:
设
表示从第
个仓库到第
个客户的货物运量。
表示从第
个仓库到第
个客户的单位货物运价,
表示第
个仓库的最大供货量,
表示第
个客户的订货量。
目标函数是使总运输费用最少,约束条件有三个:
1、各仓库运出的货物总量不超过其库存数2、各客户收到的货物总量等于其订货数量3、非负约束
数学模型为:
1、集合定义(集合名称,集合成员,集合属性)
Sets:
Wh/w1..w6/:
ai;
Vd/v1..v8/:
dj;
再定义运输关系的集合
Links(wh,vd):
c,x;(集合名称,初始集合,集合成员,集合属性)
Endsets
2、数据初始化
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
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
Globaloptimalsolutionfoundatiteration:
20
Objectivevalue:
664.0000
VariableValueReducedCost
AI(W1)60.000000.000000
AI(W2)55.000000.000000
AI(W3)51.000000.000000
AI(W4)43.000000.000000
AI(W5)41.000000.000000
AI(W6)52.000000.000000
DJ(V1)35.000000.000000
DJ(V2)37.000000.000000
DJ(V3)22.000000.000000
DJ(V4)32.000000.000000
DJ(V5)41.000000.000000
DJ(V6)32.000000.000000
DJ(V7)43.000000.000000
DJ(V8)38.000000.000000
C(W1,V1)6.0000000.000000
C(W1,V2)2.0000000.000000
C(W1,V3)6.0000000.000000
C(W1,V4)7.0000000.000000
C(W1,V5)4.0000000.000000
C(W1,V6)2.0000000.000000
C(W1,V7)5.0000000.000000
C(W1,V8)9.0000000.000000
C(W2,V1)4.0000000.000000
C(W2,V2)9.0000000.000000
C(W2,V3)5.0000000.000000
C(W2,V4)3.0000000.000000
C(W2,V5)8.0000000.000000
C(W2,V6)5.0000000.000000
C(W2,V7)8.0000000.000000
C(W2,V8)2.0000000.000000
C(W3,V1)5.0000000.000000
C(W3,V2)2.0000000.000000
C(W3,V3)1.0000000.000000
C(W3,V4)9.0000000.000000
C(W3,V5)7.0000000.000000
C(W3,V6)4.0000000.000000
C(W3,V7)3.0000000.000000
C(W3,V8)3.0000000.000000
C(W4,V1)7.0000000.000000
C(W4,V2)6.0000000.000000
C(W4,V3)7.0000000.000000
C(W4,V4)3.0000000.000000
C(W4,V5)9.0000000.000000
C(W4,V6)2.0000000.000000
C(W4,V7)7.0000000.000000
C(W4,V8)1.0000000.000000
C(W5,V1)2.0000000.000000
C(W5,V2)3.0000000.000000
C(W5,V3)9.0000000.000000
C(W5,V4)5.0000000.000000
C(W5,V5)7.0000000.000000
C(W5,V6)2.0000000.000000
C(W5,V7)6.0000000.000000
C(W5,V8)5.0000000.000000
C(W6,V1)5.0000000.000000
C(W6,V2)5.0000000.000000
C(W6,V3)2.0000000.000000
C(W6,V4)2.0000000.000000
C(W6,V5)8.0000000.000000
C(W6,V6)1.0000000.000000
C(W6,V7)4.0000000.000000
C(W6,V8)3.0000000.000000
X(W1,V1)0.0000005.000000
X(W1,V2)19.000000.000000
X(W1,V3)0.0000005.000000
X(W1,V4)0.0000007.000000
X(W1,V5)41.000000.000000
X(W1,V6)0.0000002.000000
X(W1,V7)0.0000002.000000
X(W1,V8)0.00000010.00000
X(W2,V1)1.0000000.000000
X(W2,V2)0.0000004.000000
X(W2,V3)0.0000001.000000
X(W2,V4)32.000000.000000
X(W2,V5)0.0000001.000000
X(W2,V6)0.0000002.000000
X(W2,V7)0.0000002.000000
X(W2,V8)0.0000000.000000
X(W3,V1)0.0000004.000000
X(W3,V2)11.000000.000000
X(W3,V3)0.0000000.000000
X(W3,V4)0.0000009.000000
X(W3,V5)0.0000003.000000
X(W3,V6)0.0000004.000000
X(W3,V7)40.000000.000000
X(W3,V8)0.0000004.000000
X(W4,V1)0.0000004.000000
X(W4,V2)0.0000002.000000
X(W4,V3)0.0000004.000000
X(W4,V4)0.0000001.000000
X(W4,V5)0.0000003.000000
X(W4,V6)5.0000000.000000
X(W4,V7)0.0000002.000000
X(W4,V8)38.000000.000000
X(W5,V1)34.000000.000000
X(W5,V2)7.0000000.000000
X(W5,V3)0.0000007.000000
X(W5,V4)0.0000004.000000
X(W5,V5)0.0000002.000000
X(W5,V6)0.0000001.000000
X(W5,V7)0.0000002.000000
X(W5,V8)0.0000005.000000
X(W6,V1)0.0000003.000000
X(W6,V2)0.0000002.000000
X(W6,V3)22.000000.000000
X(W6,V4)0.0000001.000000
X(W6,V5)0.0000003.000000
X(W6,V6)27.000000.000000
X(W6,V7)3.0000000.000000
X(W6,V8)0.0000003.000000
RowSlackorSurplusDualPrice
1664.0000-1.000000
20.0000003.000000
322.000000.000000
40.0000003.000000
50.0000001.000000
60.0000002.000000
70.0000002.000000
80.000000-4.000000
90.000000-5.000000
100.000000-4.000000
110.000000-3.000000
120.000000-7.000000
130.000000-3.000000
140.000000-6.000000
150.000000-2.000000
二、典型应用例题
1、配料问题又称调和问题,研究将若干种原材料按要求配成不同产品,在满足产品技术要求和数量的前提下使成本最小或使收益最大。
例:
某疗养院营养师要为某类病人拟定本周蔬菜类菜单,当前可供选择的蔬菜品种、价格和营养成分含量,以及病人所需的最低数量见表所示。
病人每周需14份蔬菜,为了口味的原因,规定一周内的卷心菜不多于2份,胡萝卜不多于3份,其他蔬菜不多于4份且至少一份。
在满足要求的前提下,制定费用最少的一周菜单方案。
表1、
养分
蔬菜
每份可供蔬菜养分含量
每份价格(元)
铁
磷
维生素A
维生素C
烟酸
A1
青豆
0.45
20
415
22
0.3
2.1
A2
胡萝卜
0.45
28
4065
5
0.35
1.0
A3
花菜
0.65
40
850
43
0.6
1.8
A4
卷心菜
0.4
25
75
27
0.2
1.2
A5
芹菜
0.5
26
76
48
0.4
2.0
A6
土豆
0.5
75
235
8
0.6
1.2
每周最低需求
6
125
125000
345
5
用
表示6种蔬菜的份数,
表示蔬菜单价,
表示每周最低营养需求,
表示第
种蔬菜的第
种养分含量,建立如下整数规划模型:
,
s.t.
lingo程序为:
model:
sets:
shc/a1…a6/:
ai,x;yf/b1…b5/:
bj;
jiage(shc,yf):
c;
endsets
data:
ai=2.1,1,1.8,1.2,2.0,1.2;
bj=6,125,12500,345,5;
c=0.45,20,415,22,0.3
0.65,40,85,43,0.6
0.4,25,75,27,0.2
0.5,26,76,48,0.4
0.5,75,235,8,0.6;
Enddata
Min=@sum(shc:
ai*x);
@for(shc(i):
@gin(x(i)));
@for(shc(i):
x(i)>=1);@sum(shc(i):
x(i))=14;
X
(2)<=3;x(4)<=2;
@for(shc(i)|I#ne#2#and#I#ne#4:
x(i)<=4);
@for(yf(j):
@sum(shc(i):
x(i)*c(I,j))>=bj(j));
End
Globaloptimalsolutionfoundatiteration:
5
Objectivevalue:
20.60000
VariableValueReducedCost
AI(A1)2.0000000.000000
AI(A2)1.0000000.000000
AI(A3)1.8000000.000000
AI(A4)1.2000000.000000
AI(A5)2.0000000.000000
AI(A6)1.2000000.000000
X(A1)1.0000002.000000
X(A2)3.0000001.000000
X(A3)2.0000001.800000
X(A4)2.0000001.200000
X(A5)3.0000002.000000
X(A6)3.0000001.200000
BJ(B1)6.0000000.000000
BJ(B2)125.00000.000000
BJ(B3)12500.000.000000
BJ(B4)345.00000.000000
BJ(B5)5.0000000.000000
C(A1,B1)0.45000000.000000
C(A1,B2)20.000000.000000
C(A1,B3)415.00000.000000
C(A1,B4)22.000000.000000
C(A1,B5)0.30000000.000000
C(A2,B1)0.45000000.000000
C(A2,B2)28.000000.000000
C(A2,B3)4065.0000.000000
C(A2,B4)5.0000000.000000
C(A2,B5)0.35000000.000000
C(A3,B1)0.65000000.000000
C(A3,B2)40.000000.000000
C(A3,B3)850.00000.000000
C(A3,B4)43.000000.000000
C(A3,B5)0.60000000.000000
C(A4,B1)0.40000000.000000
C(A4,B2)25.000000.000000
C(A4,B3)75.000000.000000
C(A4,B4)27.000000.000000
C(A4,B5)0.20000000.000000
C(A5,B1)0.50000000.000000
C(A5,B2)26.000000.000000
C(A5,B3)76.000000.000000
C(A5,B4)48.000000.000000
C(A5,B5)0.40000000.000000
C(A6,B1)0.50000000.000000
C(A6,B2)75.000000.000000
C(A6,B3)235.00000.000000
C(A6,B4)8.0000000.000000
C(A6,B5)0.60000000.000000
RowSlackorSurplusDualPrice
120.60000-1.000000
20.0000000.000000
32.0000000.000000
41.0000000.000000
51.0000000.000000
62.0000000.000000
72.0000000.000000
80.0000000.000000
90.0000000.000000
100.0000000.000000
113.0000000.000000
122.0000000.000000
131.0000000.000000
141.0000000.000000
150.90000000.000000
16412.00000.000000
172893.0000.000000
180.0000000.000000
190.95000000.000000
求得优化结果为:
每周青豆、胡萝卜、花菜、卷心菜、芹菜、土豆的份数分别为1、3、2、2、3、3,总费用为20.6元
2、装箱问题
装箱问题是一个有广泛应用的经典组合优化问题,例如,用集装箱装运货物,人们总希望用最少的集装箱把所有货物装完。
一般地,装箱问题可以描述为:
设有许多长为C的一维箱子及长为
(
〈C〉,i=1,2,..,n的n件物品,要把这些物品全部装入箱中,怎样装法才能使所用的箱子数尽可能少?
假设预先准备的箱子总数为n个,即使每件物品单独装一个箱子也够用,用决策变量
或0表示第j个箱子是用还是不用,用变量
或0表示第i件物品是否放入第j个箱子中,建立0-1规划模型如下:
s.t.
3、背包问题
某人打算外出旅游并登山,路程比较远,途中要做火车和飞机,考虑要带许多必要的旅游和生活用品,如照相机,摄像机,食品,衣服,雨具,书籍等,共n件物品,重量分别为
,而受航空公司行李重量限制,以及个人体力所限,能带的行李总重量为b,n件物品的总重量超过了b,需要裁减,该旅行者为了决策带哪些物品,对这些物品的重要性进行了量化,用
表示,试建立该问题的数学模型。
解、若引入0-1变量
,
=1表示物品
放入背包,否则不放,则背包问题等价于一个线性规划问题:
假设现有8件物品,重量分别为1,3,4,3,3,1,5,10(千克),价值分别为2,9,3,8,1,6,4,10(元),假设总重量不超过15千克,决策该带哪些物品,使所带物品的总价值最大。
编程:
Model:
Sets:
Wp/w1..w8/:
a,c,x;
Endsets
Data:
A=134331510;c=2938106410;
Enddata
Max=@sum(wp:
c*x);
@for(wp:
@bin(x));
@sum(wp:
a*x)<=15;
End
4、选课方案
问题与模型:
新学期选课时间,张明大三年级学生这个学期必须选修的课程只有一门(2个学分),但可以供他选修的限定选修课程(限选课)有8门,任意选修课程(任选课)有10门。
由于有些课程之间相互关联,所以可能在选修某门课程时必须同时选修其他某门课程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性规划 lingo 软件