Python小白的数学建模课---选址问题
0 J- L4 Q. }# N+ T& y5 I& x) {$ y选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。 1 N+ [1 I5 M' F% e$ z8 `
1. 选址问题8 J6 f7 x7 D8 U1 F5 T
选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。" w1 J% c+ R8 L6 e
( W4 E' O5 N( o1 s' t) i1 b例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。2 r" Z6 ]9 K6 E
# f. _6 `* H m+ [
选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。2 w. c0 A$ [; J. N( s6 m
, Q! }- ?" _ B( }1 d }, ~) v1 K
选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。8 @+ m, ~9 \7 O7 S5 G
" m4 I! [) O/ Z% A" Q3 x2 g选址问题有四个基本要素:设施、区域、距离和优化目标。
2 X- D" @0 R" w$ b0 [) _1.1 设施) q% l( B! F$ Q
选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。1 A+ G1 t4 L0 T( j: O }) |
' U. ~; |# i5 `* j7 P( w
1.2 区域" b2 @5 `5 `" z$ d. N3 A* U
选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。
, Q4 Z' z0 ]. F5 `8 l. r. W按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。% {7 u- d& w: R& k ^$ v6 w. y
a! c5 U! F% Y+ ~. i/ S! Z
1.3 距离- @6 e" k# _& q9 k7 K" ]; M
选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。
5 t# i5 I. o. X2 t当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。& j; o, O0 Q/ |, N- }* T3 W
: N; t- J5 P2 m1 ^) U7 ?! \
1.4 优化目标
. _) q" O9 h; a$ c, {9 H0 [选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。
3 h2 l S$ |1 G5 `+ ^按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。3 q$ V3 G3 O6 }$ I/ s
8 g+ Y6 M* S5 ]1 t' c
4 k( N" X: ]2 t# Y
7 y' E" j' [1 n. w! L1 C
2. 常见选址问题及建模
0 ~1 ~* u7 w! H% _! l2.1 P-中位问题(P-median problem)
' S% Y. S. j; mP-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。
2 `1 ]- ^% A+ `. T6 ?3 z8 Y
) | y. J4 n D! W4 V" d! O! ?( @6 S这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:
) M$ v5 O1 [: k. W( e) fx j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中
" i/ U# y4 C$ Byij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务1 A4 C' D3 W" \3 ~
可以建立数学模型如下:- l9 B9 J C, e2 L! y8 E! K# Y
minDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}
/ X* L$ K" [" P3 c9 s
: m# S, z$ u8 C+ K& ^/ G# I+ ?( o* J7 s0 c
\: j; E$ U5 O# n5 W! U. ]/ ?2 S1 {其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。
2 @$ J2 I# L% D% s# a& I% Y
8 ?/ U1 o$ Q9 J& C/ C: A5 V- o( V. I) V' k3 ~5 t
9 I5 I# O& F* B$ T9 m+ @
u7 V# ~! x3 Q* O; B
7 k7 V7 \ W. T v |