Python小白的数学建模课---选址问题
" v0 \3 y0 d H, v" z- D- ]选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。 . M5 q. K% r8 u% a4 t* C5 b
1. 选址问题
* }: M6 ^( d7 Y- U. v. U) ~选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。
: c( k4 a6 A# y
* ?1 }' H6 N8 u) i4 A例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。
" d& G* E; f; D+ t
* j+ A1 k% v! ~选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。! S) ]+ Z1 S5 `5 z& V
5 B* W% J* m! A/ m/ b1 z
选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。7 K! W' D9 g3 J; Q1 c
$ b2 `* I% W& c# u3 Q& X4 L: S- q
选址问题有四个基本要素:设施、区域、距离和优化目标。
% K _" {9 E0 l$ o! {" Z1.1 设施) m1 J$ m/ D( }2 O8 A: s
选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。+ R0 r! ~8 d, l
+ \+ n M7 v( n0 ~( Y1 i1.2 区域. E* f6 r0 |$ B; i ^
选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。* N# E) j0 p5 s9 h9 m& H
按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。
6 K- F$ w/ L) |' z7 @3 o# j* P1 ]# D8 k
1.3 距离
; j. N% u0 D: ~- y" Z/ r' ^2 n选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。. J* o; S0 O* l, v! n! f
当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。
( e0 D5 N8 }/ X; Q2 k% M/ C1 U( Q% g% J. w; R( g
1.4 优化目标
' B/ r% D4 j6 R选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。& G- `! i A# M) o: E2 }
按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。
& {$ ?- ? k) }, I$ J4 H( M: f; O: A* f+ l, a2 S1 I& ]( ]
9 W' z; m& s0 X- }1 ?4 B! O9 O' M: r1 Z3 N( u9 a2 | v
2. 常见选址问题及建模
) |$ o2 B' B$ m' l2.1 P-中位问题(P-median problem)
6 m. O+ t/ X8 _' M D: kP-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。0 O/ [1 S$ r4 m. x3 J% U( a
" n* ^) |1 m- e) f( B0 X* X这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:1 m2 A4 L5 s0 A5 i6 I7 u
x j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中
; G5 }/ Y- h: i; k; z5 {1 _yij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务" i# l6 n" q f+ C" s0 j" c
可以建立数学模型如下:
: b/ b3 u9 N' y( g' LminDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}
7 M4 N9 D5 Y. X7 v
: s3 c6 e) ?* V$ u; a% f3 [* M3 s8 \# w, n2 V1 D4 J
2 }2 d* b# s" s# ~5 _4 ^+ C
其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。1 `+ X7 K) z( D$ A% m
( j/ ^8 _9 l: [/ ^* |9 D
0 P: h/ ~0 j0 @) C8 p
3 i- @ i% Y" Q% R* ?5 s3 U: k& i7 d+ a& s
1 v1 {' l+ _* I9 {! d- g
|