数学建模社区-数学中国
标题:
消防车调度问题 :用数学建模优化生产与服务运作中的管理问题
[打印本页]
作者:
浅夏110
时间:
2020-6-17 09:20
标题:
消防车调度问题 :用数学建模优化生产与服务运作中的管理问题
问题描述: 某市消防中心同时接到了三处火警电话。根据当前的火势,三处火警地点分 别需要 2 辆、2 辆和 3 辆消防车前往灭火。三处火警地点的损失将依赖于消防车到达的及时程度:记
为第 j 辆消防车到达火警地点i的时间,则三处火警地点的损失分别为
/ F: s/ q. T+ c9 l5 V8 e k
/ z {' P$ {6 w8 v- A) L! |
7 p" G" U1 k7 p+ [0 s7 ?
; 。目前可供消防中心调度的消防车正好有 7辆,分别属于三个消防站(可用消防车数量分别为 3 辆、2 辆、2 辆)。消防车从三个消 防站到三个火警地点所需要的时间如表 6 所示。应如何调度消防车,才能使总损失最 小?
4 T# W3 @3 F& Q$ n
) t% y" d9 Z" U4 j
% m" j7 S" z" {2 M2 |. T/ b% D
0 D% m) h) \$ N) l3 B' t
问题二:如果三处火警地点的损失分别为
;,调度方案是否需要改变?
% u& Q- ]- @- M# x: `
1 M v- m0 d y. ~1 }" v a7 A
/ {' T' Y! P4 b) ?' V
5 \/ E+ u- _' t) _. ~- Q
(1)问题分析
1 W% q0 X2 r' n0 M. ^
& m8 b# H7 i% L! e
本题考虑的是为每个火警地点分配消防车的问题,初步看来与线性规划中经典的运输问题有些类似。本题的问题可以看成是指派问题和运输问题的一种变形,我们下面首先把它变成一个运输问题建模求解。
- h# F. w5 o+ R, @) T/ ?) K
6 z1 |4 x" S5 U9 H/ p
(2)决策变量
& c* [1 c) v) F! v/ z( h
0 P5 k, G0 g' j
为了用运输问题建模求解,我们很自然地把 3 个消防站看成供应点。如果直接把 3 个火警地点看成需求点,我们却不能很方便地描述消防车到达的先后次序,因此难以确 定损失的大小。下面我们把 7 辆车的需求分别看成 7 个需求点(分别对应于到达时间
. 用
表示消防站i是否向第 j 个需求点派车(1 表示派车,0表示不派车),则共有 21 个 0−1 变量.
' K T' V$ b- H
3 a9 S7 b# r) \4 I
(3)模型建立
+ e# M1 P* {& D2 g' `( ]
0 M3 [! Y6 o1 Q* W+ o0 I2 p
题目中给出的损失函数都是消防车到达时间的线性函数,所以由所给数据进行简 单的计算可知,如果消防站 1 向第 6 个需求点派车(即消防站 1 向火警地点 3 派车但该 消防车是到达火警地点 3 的第二辆车),则由此引起的损失为 72 98 = × 。同理计算,可以得到损失矩阵如表 7 所示(元素分别记为
)。
* s. w( q: Q# _0 s
+ }+ \) b' c! B2 |# d7 A
- d' f* A, ]" y7 k- {$ x
' t2 g2 a4 v6 p
9 B6 e! H2 {4 H {5 w( K0 n# n
/ p' e1 {* N# x4 W% t
# v) d. ^1 N. T% Z( u) @
于是,使总损失最小的决策目标为
/ x0 W6 Q: V5 W% E9 l
1 O/ m W: d# g* L$ X
( 1 )
# U! G& d9 v1 [9 ?; y, i
+ `: K7 J* h3 v( D3 |: \
约束条件:
" W: d8 F+ N9 F1 x3 m5 r
- h' b$ a# F6 W" |. u/ q
约束条件有两类,一类是消防站拥有的消防车的数量限制,另一类是 各需求点对消防车的需求量限制。
/ T2 C, o$ ^( E) B
记
( i=1,2,3 )为第i个消防站拥有消防车的数量,则消防站拥有的消防车的数量限制可以表示为
/ h; F4 E4 J t! c9 X
( 2 )
; J3 N1 M, |. U6 Z
' Z- I6 j& O3 `7 v, a
各需求点对消防车的需求量限制可以表示为
; [7 n) t0 H: y3 i- ]0 q7 o
/ T, @; n. \* I
( 3 )
+ X) f7 z4 |* @6 L" Z
; J* d& y- f: M4 Q) m6 u) M9 C
(4)模型求解 的lingo代码
/ P3 Z7 _ p- p( p
0 ~9 R Z5 x- K. ]2 [3 L9 S
MODEL:
, v# Z2 A5 x( K. {3 f' c
TITLE 消防车问题;
' x0 C B1 {* X! H$ n
SETS:
( `; ^4 _# `9 m9 L; d8 ^
supply/1..3/:b;
; f- n' R7 ^5 }* I- b* D( r. N
need/1..7/;
2 i; b7 g. H$ h
links(supply,need):c,x;
5 `) Z% C% U& [" o5 Y4 K
ENDSETS
7 c o: l2 b( E
[OBJ]Min=@sum(links:c*x);
% ~3 u) |4 r6 |% _
@FOR(supply(i):@sum(need(j):x(i,j))=b(i));
+ c% e% t+ Z) ?' o
@FOR(need(j):@sum(supply(i):x(i,j))=1);
- b# A0 R0 F7 ^7 d- J0 W* c- Z. c2 t
DATA:
5 ?$ B; u% c; m
b=3,2,2;
; @* C* w0 n! M6 R5 Q7 o0 C
c=36,24,49,21,81,72,45
- V) @3 t: T% x' k7 o# ]8 Y
30,20,56,24,99,88,55
5 m3 d+ C5 x$ G1 [2 \0 I$ F; C
36,24,63,27,90,80,50;
3 y9 E0 E: K& s. c v
ENDDATA
; p' X6 O, ~6 C. C+ I: A
END
) T! y& X+ @3 Z7 j5 R- Q0 g
求得结果为,消防站 1 应向火警地点 2 派 1 辆车,向火警地点 3 派 2 辆车;消防站 2 应向火警地点 1 派 2 辆车;消防站 3 应向火警地点 2、3 各派 1 辆车。最小总损失 为 329。
" Z, i! d( H3 a: y" j
2 H# f. K( j& H# V, ^, O! M7 M
(5)讨论
3 m4 D) g; Y0 }, s" V
$ ?8 d$ X- i" a
1)这个问题本质上仍然和经典的运输问题类似,可以把每辆车到达火场看做需求点,消防站看做供应点。在上面模型中,我们虽然假设 为 0− 1变量,但求解时是采用线性规划求解的,也就是说没有加上 为 0− 1 变量或整数变量的限制条件,但求解得到的结果中 正好是 0−1 变量。这一结果不是偶然的,而是运输问题特有的一种性质.
* J0 s" h$ z2 l. l; C1 c
3 |; e1 a% t. O
2 )在上面模型中,没有考虑消防车到达各火警地点的先后次序约束,但得到的结果正好满足所有的先后次序约束,这一结果不是必然的,而只是巧合。如对例题后半部 分的情形,结果就不是这样了。显然,此时只需要修改损失矩阵如表 8 所示(所示(元素仍然分别记为
)
/ k/ ] p; m+ X) \
1 C$ ~, U+ z. x0 e
; m9 D! g; |2 E% I
+ z7 T6 d& n8 P' D9 k4 l
此时重新将式( 1 )-( 3 ) 构成的线性规划模型输入 LINGO 求解,可以得到新的最优解
: 其它变量为 0(最小总损失仍为 329)
& t: l0 {- Z! o
/ \9 ]8 C7 D0 K W. g
实际上,损失矩阵中只是 1、2 列交换了位置,3、4 列交换了位置,5、7 列 交换了位置,因此不用重新求解就可以直接看出以上新的最优解。
. x# m* q! k/ W2 p
E' K F0 y8 b8 m, V! c
但是,以上新的最优解却是不符合实际情况的。例如,
表明火警地点2 的第一辆消防车来自消防站 3,第二辆消防车来自消防站 1,但这是不合理的,因为 火警地点 2 与消费站 3 有 9min 的距离,大于与消防站 1 的 7min 的距离。分配给火警 地点 3 的消防车也有类似的不合理问题。为了解决这一问题,我们必须考虑消防车到达 各火警地点的先后次序约束,也就是说必须在简单的运输问题模型中增加一些新的约 束,以保证以上的不合理问题不再出现。
5 _9 V$ d- H# M
0 u3 ~9 j# q6 b" D
首先考虑火警地点 2。由于消防站 1 的消防车到达所需时间(7min)小于消防站 2 的消防车到达所需时间(8 分钟),并都小于消防站 3 的消防车到达所需时间(9 分钟), 因此火警地点 2 的第二辆消防车如果来自消防站 1,则火警地点 2 的第 1 辆消防车也一 定来自消防站 1;火警地点 2 的第 2 辆消防车如果来自消防站 2,则火警地点 2 的第 1 辆消防车一定来自消防站 1 或 2。因此,必须增加以下约束:
( 4 )
7 }4 r7 @: e! L! [+ [
$ {: S6 u+ u$ }# ~8 C3 Q
同理,对火警地点 1,必须增加以下约束:
( 5 )
: w; @: |, S( V" [' h$ O3 b
1 ~ H, `# x+ ^; G) ~
对火警地点 3,必须增加以下约束:
( 6 )
% [/ e/ \8 C0 k! S
- {3 @. N3 {3 ]
重新将式(1)~(6)构成的整数规划模型(
是 1 0− 变量)输入 LINGO 软件如下:
, a$ {2 c- ^- D. p0 X
* z" X$ ^+ P5 ~' _3 m
MODEL:
7 J! @* O! b* a
TITLE 消防车问题;
7 V) Y( C8 h5 _5 _
SETS:
" b4 G2 E4 U9 M9 m& d
supply/1..3/:b;
5 \6 W7 p( K( [* H' D2 r9 I
need/1..7/;
3 b( d% f$ w2 V9 p2 J
links(supply,need):c,x;
6 ~. p8 m1 y: d- Z2 u
ENDSETS
: ?5 V m) t2 S+ }$ p4 u: B) X
[OBJ]Min=@sum(links:c*x);
! ?6 G" k/ n; @0 c6 o( P3 F7 p
@FOR(supply(i):@sum(need(j):x(i,j))=b(i));
0 m' \$ ?& h8 N. R) o& i
@FOR(need(j):@sum(supply(i):x(i,j))=1);
1 p+ ]4 ?8 Y8 E
x(1,4)<x(1,3);
# l$ H7 ?6 b$ ?/ P$ \" v, `
x(2,4)<x(1,3)+x(2,3);
. u4 ^' q/ y6 F" ]( J
x(2,2)<x(2,1);
6 S! M9 ?3 d9 Z0 A
x(1,6)<x(1,5);
7 _2 ?1 P% N9 y) l) K& U
x(1,7)<x(1,6);
n$ d4 w; T. ?, n& N
x(3,6)<x(1,5)+x(3,5);
: F M5 Y& B$ O& z& X5 Q
2*x(3,7)<x(1,5)+x(1,6)+x(3,5)+x(3,6);
/ ~# G) ~1 B H
@for(links:@bin(x));
* j3 U3 Q! ~( u |
DATA:
0 e0 I' z$ y3 m1 I0 N4 B4 ^
b=3,2,2;
( \4 o; l# R9 s: S
c= 24 36 21 49 45 72 81
! `- @$ \* s0 ]: c- {% r
20 30 24 56 55 88 99
; ^5 M0 N( K3 r8 G& k) Z
24 36 27 63 50 80 90;
/ f3 S" a3 a$ s5 D
ENDDATA
9 t9 G- t) r3 s, k; K' W, m
END
4 J# ^! B E6 u$ ?/ b! Q
求解可以得到:
,其它变量为 0(最小总损失仍为 335)。也就是说,消防站 1 应向火警地点 2 派 2 辆车,向火警地点 3 派 1 辆车;消防站 2 应向火警地点 1 派 2 辆车;消防站 3 应向火警地点 3 派 2 辆车。经过检 验可以发现,此时的派车方案是合理的。
/ @6 y# D7 F( v+ D/ G! g1 l9 r
————————————————
: m5 N1 m Y3 W3 A6 i
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
0 w( I# S4 } {& X- y1 ]
原文链接:https://blog.csdn.net/qq_29831163/java/article/details/89388172
7 f: E" n# M6 x# a4 p# D0 j
) y. B, V% p4 {% S$ b
4 l4 s. L2 Y3 {6 C
! |: a9 y' C3 L( l' a9 u
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5