Python小白的数学建模课---选址问题
* ^ c) z2 k. l" ]; Y4 I选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。 % [+ V& n8 {3 L( p t
1. 选址问题8 B) T9 T: X9 J2 M' e
选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。
8 w0 {8 M- ?" K
2 \1 K! b5 J9 A0 \( l7 \例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。6 j/ T. x- t3 t. Q. c- v; H
% n! |5 x6 j2 Z' | B0 _
选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。& ]5 M# j$ ]% o: L8 T7 u1 w2 `
2 y7 d; y0 L! f' p选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。6 w0 [: g1 y9 U( C: X
# N# z0 L7 V9 n+ A选址问题有四个基本要素:设施、区域、距离和优化目标。1 L0 @+ C. v. `. ~% S' c
1.1 设施
4 w" \1 N/ k% U& _选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。1 @' |6 O) I, J) H. p: @6 Q* h! }; u
! h7 g1 r K. O6 U
1.2 区域
& j4 w; \; G( f& D1 g7 o- s选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。% I9 }: P1 \( f1 a- U
按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。
/ S. @0 t/ r3 e2 z+ K2 v$ v! x) t0 b6 Y6 k) a# p! ~
1.3 距离
6 t, D6 I+ Y2 j选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。! [$ F. p0 p' I2 {: ?+ d0 {
当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。( Y& O5 i7 S1 M( E1 o$ x$ [
9 Z+ F/ L/ b Q6 |
1.4 优化目标
! s' B: \/ O" t$ b选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。: `& {' a! _; U9 y. V1 P5 w
按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。
9 v" B& P& E) } |2 Z6 g1 O
' F+ G; x. S0 u% }7 b
# ^+ ], ]* a5 Z3 B' j: L
7 l# T' k# Z0 \8 L; K2. 常见选址问题及建模1 Z i& N# r- ^, L' ]9 x
2.1 P-中位问题(P-median problem): N, d8 S) B- B* z$ _& j
P-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。
: g8 x `* I: H' U- j
/ ~ x/ h8 S: M; Y7 i& P: W这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:
) _+ F/ Z b% M/ R! I, g( {0 f9 Sx j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中 / v# ~8 N% O7 h2 m
yij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务
# ?! U9 }8 s# Y可以建立数学模型如下:
+ V% s" u( d; P( l. ]4 KminDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}
# @4 t$ Y3 n! i0 Z' t% t* a- f7 t Z e2 ~9 t8 d, a
) Z1 Q; S1 C! S( D* P
' T# F( ?2 q7 @& Q
其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。
! [0 M5 l% | k! H" O: N2 R
: r0 g1 n0 B' H; u* ^- Q' t( R6 Q* c8 O6 c7 s- _
; I: g v5 j4 _: i( P. ^1 k" W5 f1 ~
. m+ j: E0 q0 }+ B6 k6 |/ D. h% q
5 ?8 `) L# G! W3 `% E |