Python小白的数学建模课---选址问题" b0 f4 w! k6 {6 N
选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。
9 e+ x6 z' r/ V2 U1. 选址问题, `$ ~6 c3 Z! k% m9 n7 A, L; T
选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。
! @# i5 x( l" I! k. H2 y: k/ J- C
. l* R9 D! A/ y7 a" H+ q例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。
# f. f4 [8 t9 h- F4 |. V2 w0 q( T8 L4 x; |
选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。
$ n' f4 a0 P+ X0 a& {' n7 X& X( r3 Y
选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。
8 _; e( P6 f1 @% ^. C6 E/ Y+ h1 M, E7 Q# F. B5 D
选址问题有四个基本要素:设施、区域、距离和优化目标。1 m% Y) N( G, P
1.1 设施7 p2 ^" _, f$ v0 w! D% G5 {
选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。# N( I9 w+ f+ Q9 m9 y8 A' L1 D
' r( d0 o% F* \& m5 J q; c
1.2 区域: i$ a3 ?' e$ h0 i1 u
选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。
0 N F1 W+ r! H2 ~. N; Z' k) J# V按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。2 @! Y- l7 }7 n" {: G
1 A9 Q/ G: V4 j7 Y* E- @) V8 D
1.3 距离3 U, [6 e1 Y+ A4 U4 l' {1 @0 @% ^) m
选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。0 |7 W3 r" _) }% l# N6 T) c, M
当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。3 h+ i8 P- F* h& t6 ?/ O8 R
5 I7 D0 v; N4 w) ~( A0 d& Z2 Q2 z
1.4 优化目标
' @+ ]; v) n* \9 I选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。
9 I. B: c3 I# ]& W2 U$ a3 B按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。) _) l3 h. ^+ {0 W' K
) x: |; p; U* y: X, o( _" A/ u+ X3 X: y8 F) P6 z( i" n: @, |
- @2 E& d- Y2 N% L$ D2. 常见选址问题及建模
$ @4 v' `- t0 U' h2.1 P-中位问题(P-median problem)
F V. f1 H" I, q# a8 ]P-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。
, A/ v1 V6 d [7 ~7 V' g, w& b( s3 F0 X( R
这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:8 g# w: x3 f7 E \4 j
x j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中 1 P7 W3 V% T8 C1 U3 f6 ~+ u1 L; j/ @
yij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务
3 k+ r. r% E! A, u! p# ?可以建立数学模型如下:
4 n' c9 \' ^$ } xminDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}
! g1 ?8 u; R6 ~6 Y2 H) y* N6 s1 V7 X* v7 U
0 G0 {0 A+ S7 c9 X; ]+ U% Z
' O7 S3 J1 _. g/ X i1 L+ F
其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。
* p( [) o7 J) ~' i4 W @5 h0 x3 }4 i6 \7 S" d
2 o; y+ I" h. i2 H; p. c
# Y2 x( g$ q7 z! {; a+ y. Z/ W( [% B! p, j3 ~, ^
- v% d1 o, }) B w/ U- Y+ w |