当前位置:文档之家› 用lingo求解数学规划模型实例

用lingo求解数学规划模型实例


@file函数 该函数用从外部文件中输入数据,可以放在模型中任 何地方。 语法格式为@file(filename) 这里filename是文件名,可以采用相对路径和绝对路径 两种表示方式。 执行一次 @file输入 1个记录,记录之间的分隔符为 ~。 @table函数 该函数以表格形式输出数据,只能在数据段(DATA) 中使用。
单位运价表:
B1
A1 A2 A3 A4 A5 A6 6 4 5 7 2 5
B2
2 9 2 6 3 5 37
B3
6 5 1 7 9 2
B4
7 3 9 3 5 2
B5
4 8 7 9 7 8
B6 B7
2 5 4 2 2 1 5 8 3 7 6 4
B8
9 2 3 1 5 3
产 量
60 55 51 43 41 52
例2 (指派问题)九种不同型号的装备配给9个部队, 由于各部队的特点与条件不同,不同的装备在不同部队 中产生效能不同,问如何分配可保证每个部队各分得一 种装备,且使总效能最大(装备在不同部队的效能见下表)。
装备 部队 1 2 3 4 5 6 7 8 9
A
0.24 0.31 0.31 0.49 0.63 0.45 0.45 0.32 0.33
用lingo求解数学规划模型实例 一、lingo中的输入输出函数 @text函数 该函数被用在数据部分,用来将所需的数据输出至 文本文件中。 其语法为: @text(filename) 这里filename是文件名,可以采用相对路径和绝对 路径两种表示方式。如果忽略filename,那么数据就 被输出到标准输出设备(大多数情形都是屏幕)。 @text函数仅能出现在模型数据部分的一条语句的 左边。
例3 (合理设计海岛旅游线路问题) 某景区由5个海岛A,B,C,D,E组成。海岛之间及与大陆港口P的 距离由表1给出,每个海岛的游览时间为半天,C,D两个岛屿有 旅馆可供住宿。游览的过程为:游船早晨由港口P出发,每半 天游览一个景点。如果行程超过一天,则晚上选择岛屿C或D 住宿。游览结束后回到港口P。景点每次接待游客的能力由表2 给出,目前旅行社可选择大、小两种游船用于旅游。大型可载 乘客100人,小型可载乘客40人。大型游船的每公里客均费用 是小型游船的85%,但景点E只能停泊小型游船。客均旅行费 用正比于船的行程。针对问题一、二、三、四分别建立数学模 型,完成规划旅游线路的设计,要求在尽可能满足各景点最大 接待能力的条件下,使旅行社的成本尽可能低?
i 1 7
s.t .
xmod( ji 1,7)1 d j
i 1
5
j 1,2,,7
min xi ,
i 1
7
s .t .
xmod( j i 1,7 )1 d j,
i 1
5
j 1,2,,7
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(F:\数学软件\lingoli\li607.txt)=day '开始上班的人数为' x; Enddata
产地 总产量和:302 销地 总销量和:280 产大于销的模型。
销 量 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
1, 第i个部队分配第j种装备 设 xij 0, 第i个部队不分配第j种装备
目标函数: max aij xij
i 1 j1
9
9
xij 1 i 1 9 s .t . : x 1 ij j1 xij=0或1
( i, j=1,2,…,9)
表1:岛屿及港口之间距离(km)
A A B B 46 C 21 30 D 50 32 E 60 55 大陆港口P 70 115
C
D E
48
53
21
90
95 85
表2: 景点每半天可接待游客的人数
景点旅游(半天) 住宿(每晚) A B 240 470
C
D E
250
280 210
280
200
假设游船都是满载的。
9
sets: max aij xij army/ar1..ar9/; i 1 j1 equi/eq1..eq9/; 9 link(army,equi):a,x; xij 1 endsets i 1 [obj]max=@sum(link:a*x); 9 @for(equi(i):@sum(army(j):x(i,j))=1); xij 1 @for(army(j):@sum(equi(i): x(i,j))=1); j 1 @for(link: @bin(x)); xij=0或1 data: a=@file(F:\数学软件\lingoli\dali002.txt); ( i, j=1,2,…,9) @text(F:\数学软件 \lingoli\li002.txt )=@table(x); enddata
问题一:若该公司只经营一日游业务,只选择小型船,应如何 规划旅游线路? 尽可能满足景点最大接待能力:
表2: 景点每半天可接待游客的人数
景点旅游(半天) 住宿(每晚) A B C D E 240 470 250 280 210 280 200
各景点半天最多接待船数Si: A:S1=6 B:S2=11 C:S3=6 D:S4=7 E:S5=5

9
9


EQ1 EQ2 EQ3 EQ4 EQ5 EQ6 EQ7 EQ8 EQ9 AR1 0 0 0 0 0 0 0 0 1 AR2 0 0 0 1 0 0 0 0 0 AR3 0 0 0 0 0 1 0 0 0 AR4 0 0 0 0 1 0 0 0 0 AR5 1 0 0 0 0 0 0 0 0 AR6 0 0 0 0 0 0 1 0 0 AR7 0 0 0 0 0 0 0 1 0 AR8 0 0 1 0 0 0 0 0 0 AR9 0 1 0 0 0 0 0 0 0 装备 部队 1 2 3 4 5 6 7 8 9 A 0.24 0.31 0.31 0.49 0.63 0.45 0.45 0.32 0.33 B 0.42 0.04 0.24 0.06 0.15 0.02 0.07 0.24 0.56 C 0.15 0.60 0.08 0.28 0.31 0.37 0.26 0.58 0.41 D 0.46 0.69 0.14 0.13 0.60 0.14 0.15 0.64 0.13 E 0.34 0.11 0.54 0.65 0.06 0.69 0.18 0.43 0.65 F 0.69 0.24 0.61 0.41 0.41 0.29 0.43 0.45 0.07 G 0.03 0.45 0.37 0.55 0.47 0.61 0.55 0.09 0.22 H 0.57 0.35 0.48 0.25 0.19 0.18 0.66 0.05 0.46 I 0.69 0.27 0.34 0.36 0.31 0.46 0.08 0.20 0.11
F
0.69 0.24 0.61 0.41 0.41 0.29 0.43 0.45 0.07
G
0.03 0.45 0.37 0.55 0.47 0.61 0.55 0.09 0.22
H
0.57 0.35 0.48 0.25 0.19 0.18 0.66 0.05 0.46
I
0.69 0.27 0.34 0.36 0.31 0.46 0.08 0.20 0.11
B
0.42 0.04 0.24 0.06 0.15 0.02 0.07 0..28 0.31 0.37 0.26 0.58 0.41
D
0.46 0.69 0.14 0.13 0.60 0.14 0.15 0.64 0.13
E
0.34 0.11 0.54 0.65 0.06 0.69 0.18 0.43 0.65
如在例6.7 (职员时序安排模型) 一项工作一周7天 都需要有人(比如护士工作),每天(周一至周日) 所需的最少职员数为20、16、13、16、19、14和12, 并要求每个职员一周连续工作5天, 试求每周所需最少职员数,并给出安排。 注意这里我们考虑稳定后的情况。 决策变量:xi第i周天开始上班的人数; 目标函数: min xi
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
二、线性规划模型
特点:目标函数与约束条件均为一次的。 线性规划的一般模型
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)
例1(运输规划模型) 某产品有6个产地Ai 和8个销售地 Bj (i=1,2,…,6, j=1,2,…,8) ,产地到销地的单位运价见下表, 问如何安排运输可使运输总费用最小。
Objective value: V1 V2 V3 V4 V5 V6 W1 W2 W3 0 19 1 0 0 0 41 0 0 0 0 0
相关主题