Python小白的数学建模课---选址问题1 g$ H5 Y/ g) ]2 A! n' }' Q$ y
选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。 $ }# h( i6 p, E+ k+ E
1. 选址问题! t5 R8 C, C4 r6 }. G) j6 _
选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。& b4 o' V. c8 @! R$ r- ?/ y
) W s8 `" b0 O# G! c例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。
# x3 O( a/ _: g3 B8 A3 @$ M; I
* @$ _) f4 { S4 j7 [$ b选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。2 @8 V9 v: ^0 p$ q4 E9 B
2 T6 z) J& M9 Q' v6 M% f# n, k9 i7 r
选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。
7 Y6 e4 W4 n- P x" ~
: j* `& n: q- G6 R+ \) y8 I) D选址问题有四个基本要素:设施、区域、距离和优化目标。
8 V( X3 O$ m, M$ ]9 V6 w1.1 设施
+ S n% m5 m' p选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。
; t5 n' o$ F/ M: z
! l- x( g) b8 A- I" I* q1.2 区域
( [7 E0 s9 L# Z/ n) S$ w0 G* U选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。
! s* l8 e! N& ] h2 z( {9 d& k* p按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。
% z* H' R$ @9 o) ` F* {
: v0 e) b. p* B/ x$ Q3 W% {: a8 J1.3 距离0 J9 m' i: O) x. G0 E
选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。
$ j. d5 }7 p4 ?* U- h当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。
* d) s# q: C9 i- W/ u3 f
; R+ X1 P0 [, e1.4 优化目标
) z% ~% t; Z" J4 f- [- w选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。
1 e" G8 [) e. w, y1 @" v, ~按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。. M. q- H r* c( I
( q$ U3 M3 Q6 U- z6 s; i; U1 H: ^* V7 i% c) u+ o0 @. C
4 _8 [1 M+ P2 D0 E0 _) A6 j2. 常见选址问题及建模
, y. x7 }0 J' k2 W6 I5 d; S2.1 P-中位问题(P-median problem)
( Y e* c/ i/ d% K3 ]+ ^' @( uP-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。
! P& Q7 m; C& C: _' ^
# o( v" n! a1 c' w3 V4 r这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:
7 M% ]9 ?0 o$ y! s0 I0 Y5 J4 qx j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中 , _2 I d W0 d5 v+ r0 ^
yij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务
" V3 ^; E5 o, M1 w可以建立数学模型如下:
4 E1 K! i/ y' S2 `( m5 S+ Y* P6 iminDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}
& G( x) O6 O/ h: L/ N* n% V( M7 ?# r; [5 d3 l+ h) a$ {
, k' H B3 j! n* h. M' y" `9 o
8 v' o9 z% x% l* q! B/ O其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。
% z$ S9 |4 ?# m: H4 |. A: _. K' O# k0 ] ^/ Z4 w0 o
5 z; B# a4 V4 `# G. c
, }! X {8 g' q7 ?- Z
S6 n2 A9 q4 e- q3 }1 ^
# v( N* S/ @) U/ F4 M3 I3 a5 h |