Python小白的数学建模课---选址问题' [9 S4 R/ n; `& m& Y. H' z
选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。
2 R$ e6 U: T* A- s6 r1. 选址问题5 j5 E4 D* a* J, \1 ]1 Y) x) Y
选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。
" R- q: B0 c. y; q( S: Y- q# G9 s, g
例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。
. E, |. W* k" s; v3 R% k# v1 o% M
r; a9 k) G) U: v% u选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。9 }) X: Y, @& c( v
0 s4 B; k, j6 d+ ~选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。
8 \' A, c1 X. _6 r( N" G& c3 K" E% c( G6 V# H
选址问题有四个基本要素:设施、区域、距离和优化目标。# L. q, f. p' g& n6 r5 g
1.1 设施0 A0 k! [( B. m# y( k& Y
选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。& K- }7 o, Y/ F1 Z% a$ b" X# T2 f
0 w# o! r% p6 _ Y
1.2 区域6 r. W6 O& g# r8 Z+ U0 {& L
选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。
, Q3 L8 c7 p6 C* X, t1 [0 I3 l' _按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。& g7 |7 Z$ F2 G& F. }4 D
0 Z8 p: t9 v1 v" }7 r9 R! F$ U+ n. S
1.3 距离
* j, T; o# S) @* ]) h$ a选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。. x5 f% q! c5 i' _4 e# V1 t
当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。
$ a: x, O; ^) x$ E! K$ ~# i3 y. E. R* `. P9 Y) _' S7 r( ~2 z
1.4 优化目标8 ]0 D$ s# _ g" V1 i: A
选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。: W; P! ?' ~3 v# K1 g
按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。! @9 _$ ?8 c: J0 ^
9 t; P7 J6 L K8 U' z+ |9 R
+ h0 G, X2 f1 O5 ^! [; }& z+ o" d7 e1 f( Y1 M
2. 常见选址问题及建模
7 p. J1 \4 q) x2 ?/ W2.1 P-中位问题(P-median problem)
' I2 [+ N# s3 S1 HP-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。
( x) {' F3 J z# n
' V% M9 Y& l1 n' k3 L这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:
% r; ]4 y, g$ @x j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中 ]0 p5 X* X( y
yij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务
8 _: ~! t6 _! }3 z6 {( ]可以建立数学模型如下:
6 ~! `$ Q1 F, [: `: XminDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}
6 N' P3 Y. m. u" A3 u$ j7 r3 R% Q4 g# ~6 [) D) ?
8 R, r4 P6 q3 x8 |, u
) F$ g; Q$ ?/ F$ z, N" G. \其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。
* g1 _+ i0 i+ X# R/ n8 U4 f w( V, L) M) Y2 g; D& p( V
" c- @( v8 B! c+ }$ ^' m/ w2 r/ C" t! r
( J& b3 e1 |. P. n+ B: J( ]- G% q3 C, N9 ?0 V4 O7 L* Z$ F6 x
4 f# b# D+ p% j! u0 s6 c6 D$ X
|