Python小白的数学建模课---选址问题; n% h1 a: B5 K. U5 S
选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。 $ S t5 T; ]0 `( c+ q7 K
1. 选址问题
+ L( ]6 Y7 s2 D0 c选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。
5 L! V3 F0 r9 |" Y' z
* s2 h, c5 F8 Z3 X例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。" p7 @" J( O5 |" }# V
' [% O4 [+ u* B4 y) K选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。* U" S2 T) @( U5 n
; G- O1 K. y2 v1 X2 ~8 m, I. C g
选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。
2 H; P5 W+ `2 i# ^1 g% t R7 J# n; D" G8 a
选址问题有四个基本要素:设施、区域、距离和优化目标。
: y% s& S1 x5 ?0 k O' Z1.1 设施( A' O) X* |1 k; n. a
选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。
% {& {. C [9 \0 K. X
5 n% ?# u( c+ h7 X/ ~1.2 区域
6 x$ f% A2 ] d, ?& p% x" [选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。& f0 J9 n& [0 ]
按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。
) A; A8 e: _& S ]1 I+ R7 b4 k$ u* s/ P7 G
1.3 距离
: ~* H; I% l; P3 [# L6 C选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。" H9 [0 u4 ]7 O- i* L
当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。1 ^8 Z9 F, w8 }4 B$ m+ S
7 q1 \+ A8 @9 v$ l7 \1.4 优化目标9 f7 p j1 d& \$ f! \; C
选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。
* l- O& m* w4 U. ^" z% S* W4 c- }按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。6 O( t% J" n7 `( w
" _ Y5 L7 N. c: x" Y" N8 X, V& B. s: D% }3 o! h0 N6 Z
4 X: w7 L; ^/ ?: i) H }
2. 常见选址问题及建模
+ ]! n) ^* h Q2.1 P-中位问题(P-median problem)) f. J0 l5 J5 _/ l! x) c
P-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。# o* _+ s; z/ ~; j' [% J+ W. s; ^
# D) _0 k% V/ H$ Q, j4 M) v W
这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:/ A" B. l3 K0 o) i9 u0 V/ I$ Q
x j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中
% U: A% A% E- u" pyij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务" D" h6 G h) m2 M4 U- }9 c0 B* d H
可以建立数学模型如下:
0 m0 x7 _# i$ ]% l. \minDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}
3 I) u$ I2 W9 K3 F( ^4 ~( S4 S$ r8 ^5 D# x8 ~
$ P' K" q% |7 {- W3 n( P- i4 r' l; J- ^) e
其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。
! y! M6 `8 m# `- R3 E
) P* U2 a, [. Q3 b( n0 D4 h s& o6 T' d i. I! F7 `
3 m F0 e4 P: x8 C& f# @3 S2 S/ m9 U0 h* e( F
7 N1 |# o$ S. O, b \% ? |