Python小白的数学建模课---选址问题- K: O2 g0 t/ K, |, r
选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。 ! }4 J/ M0 g3 K# v' N
1. 选址问题! D* b* {5 N! Z$ t( H1 y
选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。" s, V! `) V+ X9 G2 j g7 ?+ P! s
3 ^$ S+ U" I1 w8 s' P
例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。
& N5 c7 x: d) m- q6 t4 u5 o4 x
1 m( L8 W( f! c2 ~选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。" D! w% ?- w1 ~. F+ x
% Z; z+ g) [0 p' x# a% G% @选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。
: q) E7 k; K y, a( H
( m0 z. a) n, ~4 @/ A& A选址问题有四个基本要素:设施、区域、距离和优化目标。
' W+ c1 X U$ M8 X% I1.1 设施
8 g* k$ H, J/ h! l& J( V* y选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。
3 y- T: N Y% Y7 K
% K( c4 O+ s9 L1 V3 i1.2 区域
/ K7 d9 n& P4 `3 H9 ^5 P选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。
4 a. z! p [1 p/ h' y% q, h7 {4 u按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。: B8 L8 c# B3 P$ }/ t) U
6 `+ r4 u2 [8 m0 Z4 `
1.3 距离
; o1 f. i$ g* r9 @选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。 k8 S9 L% E9 _8 m' n* H5 o
当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。
. s1 l2 A' d0 E8 C$ L8 }% Q/ f4 P0 T3 B: [' Y3 W& v* K1 f* f
1.4 优化目标; `) |& f) _" k6 b2 F
选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。; E& y: |7 ]: o0 h! e! n* F
按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。( ~+ O A% Z2 L( M/ r
# _7 ?0 ^4 ~$ u! S
. C& R3 f7 v/ D$ S3 b8 y7 w& O. i
8 O0 Z& { W( W- R2. 常见选址问题及建模
* u6 X* @+ ]7 ^( Q4 J2.1 P-中位问题(P-median problem)
! b7 @6 H" Y3 o5 H0 e. RP-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。0 z6 t+ j: U+ r% { K/ d4 q
4 z! A2 f: F9 u6 R这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:
# ]; V2 w4 p! n7 Q# i5 [x j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中 , U9 X5 p4 x# a' f5 v
yij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务
4 c6 G, v a; A可以建立数学模型如下:$ v0 @2 M( d r) _, d
minDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}' r' [& x! j5 {7 E$ [
1 {1 Y+ u. Q ]( k& T* _0 U: s; x$ b0 D* z! H/ V+ v6 l
$ Y; H/ u% \+ G z
其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。( y$ _0 e3 x1 k" ~+ t/ _
% ]4 s+ N" O7 ^# b
* N: O, Y% t: j" x' }5 u' f6 p: k4 }+ B. M% X0 k
6 z5 R& z& o( E+ }
1 }" I3 S u) J, p" q3 j |