第六章 数学规划模型实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
k 1
(销地的运入量等于需求量)
y
j 1
4
jk
bk k 1, 2 ,3 , 4
xij , y jk 为非负整数
min z cij xij d jk y jk
2
3
3
4
x
j 1
2 ij i 1
4
3
i 1 j 1
j 1 k 1
ij
ai ,i 1, 2
二、线性规划模型
特点:目标函数与约束条件均为一次的。 线性规划的一般模型
min z ci xi s . t . i 1 l x h i i i aij xi ( , )bi
n i 1
n
( j 1,2,, m)
( i 1,2,, n)
(一) 运输问题 例6.2(运输规划模型) 某产品有6个产地Ai 和8个销售 地Bj (i=1,2,…,6, j=1,2,…,8) ,产地到销地的单位运价见下 表,问如何安排运输可使运输总费用最小。
例6.1(职员时序安排模型) 一项工作一周7天都需 要有人(比如护士工作),每天(周一至周日)所需 的最少职员数为20、16、13、16、19、14和12,并要 求每个职员一周连续工作5天, 试求每周所需最少职员数,并给出安排。 注意这里我们考虑稳定后的情况。 决策变量:xi第周i天开始上班的人数; 目标函数: min xi
4
x y
k 1
jk
j 1, 2 ,3
y
j 1
jk
bk k 1,2 ,3 ,4
xij , y jk 为非负整数
sets: chdi/A1,A2/:a; zhon/C1,C2,C3/; xdi/B1..B4/:b; link1(chdi,zhon):c,x; link2(zhon,xdi):d,y; endsets min=@sum(link1:c*x)+@sum (link2:d*y); @for(chdi(i):@sum(zhon(j):x( i,j))<=a(i)); @for(zhon(j):@sum(chdi(i):x( i,j))=@sum(xdi(k):y(j,k))); @for(xdi(k):@sum(zhon(j):y(j ,k))=b(k));
i 1 j 1 6 8 j 1 8
目标函数: min cij xij
i 1 j 1
6
8
产地 Ai : 目标函数: min cij xij 总产量 ai i 1 j 1 6 销地 Bi : 运往Bj的总运量: xij b j 总销量 bi i 1 产地Ai到销地Bj : 8 单位运价 cij 从Aj运出的总量: xij ai 运输量 xij j 1 i=1,2,…,6; j=1,2,…,8 对变量xij的限制: xij 0 产地总产量和:302 销地总销量和:280 为产大于销的模型。
6
8
min cij xij
i 1 j 1
6
6
8
s.t: xij b j
xij ai
j 1
i 1 8
xij 0
i=1,2,…,6; j=1,2,…,8
sets: chdi/w1..w6/:a; xdi/v1..v8/:b; link(chdi,xdi):c,x; endsets [obj]min=@sum(link:c*x); @for(xdi(j):@sum(chdi(i):x(i,j))=b(j)); @for(chdi(i):@sum(xdi(j):x(i,j))<=a(i)); data:
i 1 7
3
周一至周日所需的最少人数:20,16,13,16,19,14,12 目标函数: min xi
s.t .
7 i 1
x1 x7 x6 x5 x4 20 x2 x1 x7 x6 x5 16 x3 x2 x1 x7 x6 13 x4 x3 x2 x1 x7 16 x5 x4 x3 x2 x1 19 x6 x5 x4 x3 x2 14 x7 x6 x5 x4 x3 12 xi为整数
单位运价表: B1 A1 A2 A3 6 4 5 B2 2 9 2 B3 6 5 1 B4 7 3 9 B5 4 8 7 B6 B7 2 5 4 5 8 3 B8 9 2 3 产 量 60 55 51
A4
A5 A6
7
2 5
6
3 5 37
7
9 2
3
5 2
9
7 8
2
2 1
7
6 4
1
5 3
43
41 52
产地 总产量和:302 销地 总销量和:280 产大于销的模型。
Objective value: C1 C2 C3 A1 6 3 0 A2 0 3 5 B1 B2 B3 B4 C1 3 3 0 0 C2 0 2 4 0 C3 0 0 0 5
121.0000
(二)指派问题 例6.3 将九种不同型号的装备配给9个部队,由于各部 队的特点与条件不同,不同的装备在不同部队中产生效 能不同,问如何分配可保证每个部队各分得一种装备, 且使总效能最大(装备在不同部队的效能见下表)。
Objective value: V1 V2 V3 V4 V5 V6 W1 W2 W3 0 19 1 0 0 0 41 0 0 0 0 0
664.0000 V7 0 0 40 V8 0 0 0
0 32 0 0
0 11
W4
0
0
7
0
0
0
0 0
0
0 0
5
0 27
0
0 3
38
0 0
W5 34 W6 0
0 22
例2(转运问题)某产品有两个生产地 A1 , A2 ,产量分别为9,8个 单位,四个销售地 B1 , B2 , B3 , B4 需求量分别为3,5,4,5个单位, 该产品从产地需经过中转站C1 , C 2 , C 3 中的一个中转后,再运往 销售地,其中产地到中转站、中转站到销地的运费单价见表, 试求总费用最小的运输方案。
jk
bk k 1,2 ,3 ,4
xij , y jk 为非负整数
@for(link2:@gin(y)); data: a=9,8; b=3,5,4,5; c=1,2,500,3,1,2; d=5,7,500,500,9,6,7,500, 500,6,7,4; @text()=@table(x); @text()=@table(y); enddata
0.46 0.69 0.14 0.13 0.60 0.14 0.15 0.64 0.13
0.34 0.11 0.54 0.65 0.06 0.69 0.18 0.43 0.65
0.69 0.24 0.61 0.41 0.41 0.29 0.43 0.45 0.07
0.03 0.45 0.37 0.55 0.47 0.61 0.55 0.09 0.22
MON 开始上班的人数为 TUE 开始上班的人数为 WED 开始上班的人数为 THU 开始上班的人数为 FRI 开始上班的人数为
8.0000000 2.0000000 0.0000000 6.0000000 3.0000000
SAT 开始上班的人数为
SUN 开始上班的人数为
3.0000000
0.0000000
销 量 35
22 32 41 32 43 38
产地 Ai : 总产量 ai 销地 Bi : 总销量 bi 产地Ai到销地Bj : 单位运价 cij 运输量 xij i=1,2,…,6; j=1,2,…,8
决策变量:产地Ai到销地Bj的 运输量 xij
从产地Ai到销地Bj的运费 cij xij 从Ai到各销地的运费 cij xij 总运费 cij xij
装备
部队
1 2 3 4 5 6 7 8 9
A
B
C
D
E
F
G
H
I
0.24 0.31 0.31 0.49 0.63 0.45 0.45 0.32 0.33
0.42 0.04 0.24 0.06 0.15 0.02 0.07 0.24 0.56
0.15 0.60 0.08 0.28 0.31 0.37 0.26 0.58 0.41
y jk 第j个中转站到第k个销地的运量,
目标函数:min z
c
i 1 j 1
2
3
ij
xij d jk y jk
j 1 k 1
3
4
约束:(产地的运出量不大于生产量)
2
x
j 1
4 k 1
3
ij
ai ,i 1, 2
(中转站的运入量等于运出量) xij y jk j 1, 2 ,3
@file函数 该函数用从外部文件中输入数据,可以放在模型中任 何地方。 语法格式为@file(filename) 这里filename是文件名,可以采用相对路径和绝对路径 两种表示方式。 执行一次 @file输入 1个记录,记录之间的分隔符为 ~。 @table函数 该函数以表格形式输出数据,只能在数据段(DATA) 中使用。
i 1 j1
9
9
xij 1 i 1 9 s .t . : x 1 ij j1 xij=0或1
i 1
目标函数:min z
c
i 1 j 1
2
3
ij
xij d jk y jk
j 1 k 1
3
4
(产地的运出量不大于生产量)பைடு நூலகம்
x
j 1
2 i 1
3
ij
ai ,i 1, 2
4
(中转站的运入量等于运出量) xij y jk j 1, 2 ,3
中转站 C1
C2 C3
产地 A1 A2 B1 B2
销地 B3 B4
1
2 —
3
1 2
5
9 —
7
6 6

7 7

— 4
ai 第i个产地的产量, b j 第j个销地的销量,
c ij 第i个产地到第j个中转站的运费单价, d jk 第j个中转站到第k个销地的运费单价,
决策变量: xij 第i个产地到第j个中转站的运量,
4
s.t .
xmod( j i 2,7 ) d j i 1
5
j 1,2,,7
目标函数:min xi ,
7
s .t .
xmod( j i 1,7 )1 d j,j 1,2,,7
i 1
5
i 1
sets: day/mon..sun/:x,d; endsets [obj]min=@sum(day:x); @for(day(j):@sum(day(i)|i#le#5:x(@wrap(j+i+2,7)))>=d); @for(day:@gin(x)); data: d=20,16,13,16,19,14,12; @text()=day '开始上班的人数为' x; Enddata
数学规划模型实例 一、lingo中的输入输出函数 @text函数 该函数被用在数据部分,用来将所需的数据输出至 文本文件中。 其语法为: @text(filename) 这里filename是文件名,可以采用相对路径和绝对 路径两种表示方式。如果忽略filename,那么数据就 被输出到标准输出设备(大多数情形都是屏幕)。 @text函数仅能出现在模型数据部分的一条语句的 左边。
0.57 0.35 0.48 0.25 0.19 0.18 0.66 0.05 0.46
0.69 0.27 0.34 0.36 0.31 0.46 0.08 0.20 0.11
1, 第i个部队分配第j种装备 设 xij 0, 第i个部队不分配第j种装备
目标函数: max aij xij
min z cij xij d jk y jk @for(link1:@gin(x));
2
3
3
4
x
j 1
2 ij i 1
4
3
i 1 j 1
j 1 k 1
ij
ai ,i 1, 2
4
x y
k 1
jk
j 1, 2 ,3
y
j 1
a=60,55,51,43,41,52; b=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;
@text()=@table(x); enddata
相关文档
最新文档