1. 研究背景及意义
考虑一个若干层的舰船,各房间的空间位置已知,房间之间有若干距离、拥挤程度不同的通道,各位置处人群密度随时间变化,相应的通过速度、所需通过时间也会不同。需要设计一个算法,对于船上的任意一点均可找出通往指定位置所需时间最短的路径。
舰船是一个人群密度相对较大、人群流动频繁的场所。移动路线的选择很大程度上影响了人的行动效率。优化的路线设计不仅可以提高船舶人流、物流的效率,而且非常有助于对舰船上管网电网布置、逃生消防等诸多方面的设计。可以说,这样的一个路线优化算法具有较高的应用价值。
2. 建模方法
建立一个边带权图 G = ( V , E , g ) G=(V,E,g) G=(V,E,g),其中: V V V是所有房间和通道交叉点的集合, E E E是所有通道的集合, g : E → R g:E→R g:E→R, ∀ e ∈ E ∀e∈E ∀e∈E, g ( e ) g(e) g(e)表示边e的长度。任一边上的人群密度函数为 ρ ( e , t ) , e ∈ E ρ(e,t),e∈E ρ(e,t),e∈E, t t t表示时间,假设人行走速度 υ υ υ受人群密度 ρ ρ ρ影响,且 υ υ υ与 ρ ρ ρ满足函数关系 υ = υ ( ρ ) υ=υ(ρ) υ=υ(ρ)。这样一来,根据边的权值与当前时刻人的行走速度可以计算出人通过某一条边的时间。问题转化为,对 ∀ u , v ∈ V ∀u,v∈V ∀u,v∈V,需找到一条从 u u u到 v v v的路使所需时间最短。
3. 可能遇到问题及解决方案
3.1 人群密度的变化问题
普通的最短路径问题边的权值是固定不变的,但在这个工程问题中,人群密度是在随时间不断变化的,这就给求解带来了很大的挑战。由于人群密度的不断变化,每到一个顶点,都需要重新规划最短路径,但仍不能保证随着时间的推移,这条路径仍是最短的。
在我看来,如果在每一点都求解那一时刻的最短路径,计算量是很大的,并且仍不能保证最优解。不如直接放弃寻找最优解,尝试寻找次优解。可以采用贪心算法,对当前节点
w
w
w,只考虑与它相关的若干条边的人群密度,且通过该边到达
w
′
w'
w′后,
d
(
w
,
v
)
>
d
(
w
′
,
v
)
d(w,v)>d(w',v)
d(w,v)>d(w′,v)。在符合条件的若干边中选择所需时间最短的。
或者,统计一段较长时间内任一边人群的平均密度
ρ
′
(
e
)
,
e
∈
E
ρ'(e),e∈E
ρ′(e),e∈E,定义边的权值
g
′
(
e
)
=
g
(
e
)
/
(
υ
(
ρ
′
)
)
,
e
∈
E
g' (e)=g(e)/(υ(ρ')),e∈E
g′(e)=g(e)/(υ(ρ′)),e∈E,进而转化为普通的最短路径问题进行求解,这样仍不能保证最优解,但与最优解已相当接近。
3.2对通道的通行状况刻画不到位问题
通道的通行不仅与距离、人群密度有关,还和通道的地面平整程度、光线明暗度等多方面因素相关,并且这些因素一定程度上也与时间有关,这样一来,问题将会变得更复杂。
如果把这些因素都看成时间的函数,问题无疑会变得复杂很多。在我看来,这些因素相比于人群密度而言变化幅度很小,可以把它们当作是边的权值的一部分,通过一些换算关系调整原先边的权值,使讨论更精确。