服务运营 |论文解读: 住院病人“溢出”:一种近似动态规划方法

在这里插入图片描述

摘要

在住院床位管理中,医院通常会将住院病人分配到相对应的专科病房,但随着病人的入院和出院,可能会出现病人所需的专科病房满员,而其他病房却有空余床位的情况。于是就有了 "溢出 "策略,即当病人等候时间较长的情况下,考虑将病人分配到非首选病房。在实际应用中,因为有很多不确定因素,实时决策何时使用 "溢出 "策略是非常有挑战性的一个问题。 本文将住院的病人流建模为一个并行多类别多池的排队网络(Multi-class, multi-pool queueing system),并将溢出决策问题表述为一个离散时间无限时域的平均成本马尔可夫决策过程(Markov decision process, MDP)。为了解决 MDP 的维度诅咒,本文采用了近似动态规划(Approximate Dynamic Programming, ADP)方法,其关键在于选择合适的基函数来近似相对值函数。

1. 介绍

在住院床位管理中,医院管理人员需要做的决策主要有两个方面: (a) 是否将候诊病人分配到非首选病房,以及 (b) 如果多个非首选病房都有空余床位,优先使用哪个病房。

在决策过程中,主要需要考虑的是这两方面成本: (a) 病人持有成本,该成本和等待中的病人数量有关,以及 (b) 溢出成本,该成本与把病人分配到非首选病房有关。

本文就介绍了这么一种辅助医院管理人员做出溢出决策的决策支持工具,旨在平衡多池并行服务器队列系统(multi-pool parallel- server queueing systems)中减少等待时间和避免不良溢出情况之间的权衡。

2. 模型介绍

2.1 住院病人流的多类别多池排队网络 (Multi-class, multi-pool queueing system)

假设该排队系统有 J J J类病人和 J J J个并行的服务池,每个服务池服务一类首选病人。假设 j j j池服务 j j j 类病人,并且有 N j N_j Nj个相同的服务器, N = ∑ j = 1 J N j N = \sum_{j=1}^{J}N_j N=j=1JNj表示该系统里所有的服务器。

  • j j j 类病人到达时,如果首选池有空闲服务器,该病人将立即进入服务,这种进入为一次分配;否则,病人将在无限大的 j j j 池等待区中等待。病人可能会一直等待直到首选池有空余床位,或者在此之前,在某个时间被收进非首选池中,后者被称为溢出分配。
  • 当有病人离开服务池 j j j 时,如果 j j j 池等待区不为空,则服务池 j j j 会按照先到先得(FCFS)规则从等待区中收入一名病人;如果 j j j 池等待区为空,则服务池 j j j 里的空余床位就会保持空置直到下一个病人到来。
    本文假设 J J J类病人中的每一类都是按照时间非齐次泊松过程到达,其中到达率函数 λ j ( t ) \lambda_j(t) λj(t)是周期为 T T T 的周期性函数,即
    λ j ( s ) = λ j ( s + T ) , f o r s > = 0 , j = 1 , 2 , 3 , . . . , J \lambda_{j}(s) = \lambda_{j}(s+T), for \ s >= 0, j = 1,2,3,...,J λj(s)=λj(s+T),for s>=0,j=1,2,3,...,J

为便于说明,本文以天为时间单位,假设 T = 1 T = 1 T=1,并设
Λ j = ∫ 0 T λ j ( s ) d s \Lambda_j = \int_{0}^{T}\lambda_j(s)ds Λj=0Tλj(s)ds
为每一天的 j j j类病人到达率。

假设病人的服务时间遵循双时标形式,
s e r v i c e t i m e = L O S + h d i s − h a d m service \ time = LOS + h_{dis} - h_{adm} service time=LOS+hdishadm
其中 L O S LOS LOS是病人过夜的次数, h d i s h_{dis} hdis h a d m h_{adm} hadm 是病人被接收入院和出院的时间。通过双时标的方式,本文可以抓取到每天和每小时的不确定性,其中 L O S LOS LOS可以抓取到每天的不确定性, h d i s h_{dis} hdis 可以抓取到每小时的不确定性, h a d m h_{adm} hadm 由系统决定,因为不遵循iid假设。

2.2 溢出决策和 MDP 表述

本文将溢出决策问题表述为一个离散时间无限时域的平均成本马尔可夫决策过程。决策者在决策时间点 t 0 t_0 t0 t 1 t_1 t1、…观察系统状态 S ( . ) S(.) S(.),并根据在这些时间点观察到的状态采取行动。实际上,这些时间点的间隔不一定相等,但本文假定它们每天在相同的时刻重复出现。每天共有 m m m 个时间点,例如,每天凌晨 3 点、6 点、…、下午 5 点和晚上 9 点做出决策。

本文采用以下惯例: 假定 S ( . ) S(.) S(.)是右连续的,有左极限,在每个时点 t k t_k tk 采取行动, S ( t k − ) S(t_{k-}) S(tk) S ( . ) S(.) S(.)在 tk 时的左极限,称为行动前状态, S ( t k ) S(t_k) S(tk)称为行动后状态。

状态空间

该系统状态可以表述为一个 ( 2 J + 1 ) (2J + 1) (2J+1)维度的向量:
S ( . ) = ( X 1 ( . ) , . . . , X J ( . ) , Y 1 ( . ) , . . . , Y J ( . ) , h ( . ) ) S(.) = (X_1(.), ..., X_J(.), Y_1(.), ..., Y_J(.), h(.)) S(.)=(X1(.),...,XJ(.),Y1(.),...,YJ(.),h(.))
X j ( t k ) X_j(t_k) Xj(tk)是在 t k t_k tk时间点,等待中的j类病人和在j服务池中被服务的病人的总数。
Y j ( t k ) Y_j(t_k) Yj(tk)是在 t k t_k tk时间点,服务池 j 的待出院人数,即从时间点 t k t_k tk 到第二天开始之间准备出院的患者人数。
h ( t k ) = k m o d m h(t_k) = k \ mod \ m h(tk)=k mod m 表示一天内的时间索引。换句话说, h ( t k ) ∈ { 0 , 1 , . . , m } h(t_k) \in \{0, 1, .., m\} h(tk){0,1,..,m} 表示 tk 在一天内所属的 m m m 个决策时间点中的时间点 tk 的数字顺序。

行动和成本

本文将时间 t k t_k tk 的行动集表示为
f ( t k ) = { f i j ( t k ) , i ≠ j , i = 1 , . . . . , J , j = 1 , . . . , J } f(t_k) = \{ f_{ij}(t_k), i \not = j, i = 1,...., J, j = 1,..., J\} f(tk)={fij(tk),i=j,i=1,....,J,j=1,...,J}
其中 f i j f_{ij} fij表示i类病人被分配给非首要服务池j的数量。

本文将与行动 f ( t k ) f(t_k) f(tk) 和行动前状态 S ( t k − ) S(t_k-) S(tk) 相关的单次成本定义为
g ( S ( t k − ) , f ( t k ) ) = ∑ i = 1 J ∑ j ≠ i , j = 1 J B i j . f i j ( t k ) + ∑ j = 1 J C j ∗ Q j ( t k ) g(S(t_k-),f(t_k)) = \sum_{i=1}^{J}\sum_{j \not = i, j =1}^{J}B_{ij}.f_{ij}(t_k) + \sum_{j=1}^{J}C_j * Q_j(t_k) g(S(tk),f(tk))=i=1Jj=i,j=1JBij.fij(tk)+j=1JCjQj(tk)
其中,第一部分为溢出成本, B i j B_{ij} Bij为每个病人的溢出成本;第二部分为滞留成本, C j C_j Cj为统一滞留成本, Q j ( . ) = ( X j ( . ) − N j ) + Qj(.)=(Xj(.)-Nj)^{+} Qj(.)=(Xj(.)Nj)+ 为等待病人的数量,也就是队列长度。为了分析方便,本文使用在 t k t_k tk时间采取行动后的队列长度 Q j ( t k ) Q_j(t_k) Qj(tk)来表示两个决策时间段之间的平均队列长度。
本文的目标是找到一个最优的溢出政策,使长期平均成本最小化,其定义为:
l i m n → ∞ 1 n E ( ∑ k = 1 n g ( S ( t k − ) , f ( t k ) ) ) lim_{n \to \infty} {1 \over n} E(\sum_{k=1}^{n} g(S(t_k-), f(t_k))) limnn1E(k=1ng(S(tk),f(tk)))

状态转换

本文用 s = ( x 1 , . . . . , x J , y 1 , . . . , y J , h ) s = (x_1, ...., x_J, y_1, ..., y_J, h) s=(x1,....,xJ,y1,...,yJ,h)表示某一时刻的行动前状态,用 s ′ = ( x 1 ′ , . . . . , x J ′ , y 1 ′ , . . . , y J ′ , h ′ ) s' = (x_1', ...., x_J', y_1', ..., y_J', h') s=(x1,....,xJ,y1,...,yJ,h)表示一步转换后的行动前状态。

本文将说明非午夜的每个时间节点 h = 1 , . . . , m − 1 h = 1,...,m-1 h=1,...,m1 时从 s s s s ′ s' s开始的过渡动态。

s ′ s' s 状态被更新为
x j ′ = x j + a j − d j − ∑ l ≠ j , l = 1 J f j l + ∑ i ≠ j , i = 1 J f i j , i = 1 , . . . , J x_j' = x_j + a_j - d_j - \sum_{l \not = j, l = 1}^{J}f_{jl} + \sum_{i \not = j, i =1}^{J}f_{ij}, i = 1, ..., J xj=xj+ajdjl=j,l=1Jfjl+i=j,i=1Jfij,i=1,...,J
y j ′ = y j − d j , i = 1 , . . . , J y_j' = y_j - d_j, i = 1,..., J yj=yjdj,i=1,...,J
h ′ = ( h + 1 ) m o d m h' = (h+1) \ mod \ m h=(h+1) mod m
其中, a j a_j aj d j d_j dj分别表示在 h h h和下一时刻 h ′ h' h之间第 j 类病人的到达量和第 j 组病人的离开量。 ∑ l ≠ j , l = 1 J f j l \sum_{l \not = j, l=1}^{J}f_{jl} l=j,l=1Jfjl 表示j类病人被分配给非首选服务池的数量。 ∑ i ≠ j , i = 1 J f i j \sum_{i \not = j, i=1}^{J}f_{ij} i=j,i=1Jfij 表示非j类病人被分配给服务池j的数量。

3. 时间分解泊松方程

在本节中,作者探讨了病人到达和离开的时间周期特性,并推导出一个时间分解泊松方程。
对于长期平均成本问题,本文需要求解贝尔曼方程:

γ ∗ + ν ∗ ( s ) = m i n f { g ( s , f ) + ∑ s ′ p ( s , ∣ s , f ) ν ∗ ( s , ) } , s ∈ S \gamma^* + \nu^*(s) = min_{f}\{ g(s,f) + \sum_{s'}p(s^,|s,f)\nu^*(s^,)\}, s \in \mathscr{S} γ+ν(s)=minf{g(s,f)+sp(s,s,f)ν(s,)},sS

其中, s s s 表示行动之前的状态, γ ∗ \gamma^* γ表示每个决策周期的最小长期平均成本, ν ∗ ( . ) \nu^*(.) ν(.)是相对值函数, g ( s , f ) g(s,f) g(s,f)是一个决策周期的成本, p ( s , ∣ s , f ) p(s^,|s,f) p(s,s,f)是转换概率。

假设存在 ( γ ∗ , ν ∗ ) (\gamma^* , \nu ^ *) (γ,ν) ( γ ∗ , ν ∗ ) (\gamma^* , \nu^*) (γ,ν) f ∗ f^* f

f ∗ ( s ) = a r g m i n f { g ( s , f ) + ∑ s ′ p ( s , ∣ s , f ) ν ∗ ( s , ) } , s ∈ S f^*(s) = arg min_{f}\{ g(s,f) + \sum_{s'}p(s^,|s,f)\nu^*(s^,)\}, s \in \mathscr{S} f(s)=argminf{g(s,f)+sp(s,s,f)ν(s,)},sS

来实现最优的长期平均成本 γ ∗ \gamma ^ * γ,也就是说, f ∗ f^* f是最优的一个策略。

对于给定的静态策略 f f f,让 ν = { ν ( s ) : s ∈ S } \nu = \{ \nu(s):s\in \mathscr{S}\} ν={ν(s):sS}成为相应的相对价值函数。那么, ( f , ν ) (f,\nu) (f,ν)满足以下泊松方程:

ν = ( g f − γ e ) + P f v \nu=\left({\mathbf{g}}_f- \gamma \mathbf{e}\right)+{\mathbf{P}}_f v ν=(gfγe)+Pfv

其中, γ \gamma γ是与政策 f f f相关的长期平均成本, e e e是单位向量, g f = { g ( s , f ) : s ∈ S } g_f=\{g(s,f):s\in \mathscr{S} \} gf={g(s,f):sS} P f = { p ( s , ∣ s , f ) : s , s , ∈ S } P_f = \{ p(s^{,}|s,f):s,s^{,} \in \mathscr{S} \} Pf={p(s,s,f):s,s,S}分别是政策 f f f下的单周期成本向量和过渡概率矩阵。

本文将以上泊松方程进行时间分解,得到,对每一个时间节点 h = 0 , 1 , . . . , m − 1 h = 0,1,...,m-1 h=0,1,...,m1,可以有

v h = ( g ~ f h − m γ e ) + P ~ f h v h . v^h=\left(\tilde{\mathbf{g}}_f^h-m \gamma \mathbf{e}\right)+\tilde{\mathbf{P}}_f^h v^h . vh=(g~fhe)+P~fhvh.

其中, P ~ f h \tilde{\mathbf{P}}_f^h P~fh g ~ f h \tilde{\mathbf{g}}_f^h g~fh分别表示了单周期过渡矩阵和单周期累积成本。

P ~ f h = P f h , h + 1 P f h + 1 , h + 2 . . . P f h − 1 , h \tilde{\mathbf{P}}_f^h = {\mathbf{P}}_f^{h,h+1}{\mathbf{P}}_f^{h+1,h+2}...{\mathbf{P}}_f^{h-1,h} P~fh=Pfh,h+1Pfh+1,h+2...Pfh1,h

g ~ f h = g f h + P f h , h + 1 g f h + 1 + . . . + ( P f h , h + 1 . . . P f h − 2 , h − 1 g f h − 1 ) \tilde{\mathbf{g}}_f^h = {\mathbf{g}}_f^h + {\mathbf{P}}_f^{h,h+1}{\mathbf{g}}_f^{h+1} + ... + ({\mathbf{P}}_f^{h,h+1}...{\mathbf{P}}_f^{h-2,h-1}{\mathbf{g}}_f^{h-1}) g~fh=gfh+Pfh,h+1gfh+1+...+(Pfh,h+1...Pfh2,h1gfh1)

因为上述式子大部分都是0,除了 j = ( i + 1 ) m o d m j=(i+1) \ mod \ m j=(i+1) mod m, 从而可以得到

v h = ( g f h − γ e ) + P f h , h + 1 v h + 1 , h = 0 , 1 , . . . , m − 1 v^h=\left({\mathbf{g}}_f^h- \gamma \mathbf{e}\right)+{\mathbf{P}}_f^{h,h+1} v^{h+1} , h = 0, 1, ..., m-1 vh=(gfhγe)+Pfh,h+1vh+1,h=0,1,...,m1

4. 基于模拟的ADP:近似策略迭代

4.1. 相对值函数近似(relative value function approximation)

为了解决动态规划的维数诅咒,作者使用有限个基函数的线性组合来近似相对值函数。对于每个时间节点 h = 0 , 1 , . . . , m − 1 h=0,1,...,m-1 h=0,1,...,m1,其相对值函数可被近似为

v h ( s ) ≈ ϕ h ( s ) β h = ∑ i = 1 K h β i h ϕ i h ( x , y ) , ∀ s ∈ S h v^h(s) \approx \phi^h(s) \beta^h=\sum_{i=1}^{K^h} \beta_i^h \phi_i^h(x, y), \quad \forall s \in \mathscr{S}^h vh(s)ϕh(s)βh=i=1Khβihϕih(x,y),sSh

其中, ϕ h ( s ) = ( ϕ 1 h ( x , y ) , . . . , ϕ K h h ( x , y ) ) \phi^h(s)=(\phi^h_1(x,y),...,\phi^h_{K^h}(x,y)) ϕh(s)=(ϕ1h(x,y),...,ϕKhh(x,y)) K h K^h Kh个基函数形成的向量,与之对应的系数向量为 β h = ( β 1 h , … , β K h h ) ′ \beta^h=(\beta_1^h,…,\beta_{K^h}^h)^{'} βh=(β1h,,βKhh)。注意,基函数的个数,具体函数形式,与系数都是与时间 h h h相关的。另外,基函数是关于 x x x y y y的二次函数的组合。

4.2. 近似策略迭代(更新系数向量)

显然,相对值函数的近似完全由基函数及其对应的系数决定。作者在本小节介绍如何在每个决策时间节点 h h h来更新这些系数。算法如下:

Inputs: n = 1 n=1 n=1,并从任意的系数向量 ( β 0 , … , β m − 1 ) (\beta^0,…,\beta^{m-1}) (β0,,βm1)出发;

Step 1(策略提升): 使用提升策略 f ( n ) f^{(n)} f(n)模拟 J J J-池系统,其中,每一个决策阶段的action由下式生成

f ( n ) ( s ) = arg ⁡ min ⁡ f { g ( s , f ) + ∑ s ′ ∈ S h + 1 p ( s ′ ∣ s , f ) ϕ h + 1 ( s ′ ) β h + 1 } , s ∈ S h \begin{aligned}f^{(n)}(s)= & \underset{f}{\arg \min }\{g(s, f) \\& \left.+\sum_{s^{\prime} \in \mathscr{S}^{h+1}} p\left(s^{\prime} \mid s, f\right) \phi^{h+1}\left(s^{\prime}\right) \beta^{h+1}\right\}, \quad s \in \mathscr{S}^h\end{aligned} f(n)(s)=fargmin{g(s,f)+sSh+1p(ss,f)ϕh+1(s)βh+1},sSh

Step 2(策略评估): 通过时序差分学习(temporal difference learning)并近似求解式

v h = ( g ~ f h − m γ e ) + P ~ f h v h . v^h=\left(\tilde{\mathbf{g}}_f^h-m \gamma \mathbf{e}\right)+\tilde{\mathbf{P}}_f^h v^h . vh=(g~fhe)+P~fhvh.

中的 h h h个子式以获得更新系数向量 ( β ^ 0 , … , β ^ m − 1 ) (\hat{\beta}^0,…,\hat{\beta}^{m-1}) (β^0,,β^m1),关于上式,详见泊松方程的时间分解(Time Decomposition of the Poisson Equation)一节。

Step 3: n = n + 1 n=n+1 n=n+1 ( β 0 , … , β m − 1 ) = ( β ^ 0 , … , β ^ m − 1 ) (\beta^0,…,\beta^{m-1})=(\hat{\beta}^0,…,\hat{\beta}^{m-1}) (β0,,βm1)=(β^0,,β^m1);如果迭代次数 n n n达到预先设定的阈值 n ∗ n^* n,算法停止。

5. 基函数(basis functions)

为选取不同时期用于近似的基函数,首先研究一个当 m = 1 m=1 m=1时的MDP,作者将其称之为midnight MDP。之后,借助逆向归纳的方法,可以得到所有决策时期的基函数。注意,当m=1时,这意味着每一天只有一个决策阶段。作者使用 v m i d ( x ) v_{mid}(x) vmid(x)表示相关的最优近似值函数,并提出了如下近似

v mid  ( x ) ≈ v 1 F ( x ) + V s ( ∑ j x j ) v_{\text {mid }}(x) \approx v_1^F(x)+V_s\left(\sum_j x_j\right) vmid (x)v1F(x)+Vs(jxj)

其中, v 1 F ( x ) v_1^F(x) v1F(x)由一个流体控制模型捕获(读者可以该论文以获得这个模型的详细信息),用于近似溢出成本; V s ( ⋅ ) V_s(\cdot) Vs()表示来自一个集成单池系统(integrated single-pool system)的相对值函数,用于近似持有成本。用户数 x = ( x 1 , … , x J ) x=(x_1,…,x_J) x=(x1,,xJ)

5.1. 午夜时期的基函数

对于一个多阶段MDP( m > 1 m>1 m>1),当 h = 0 h=0 h=0时,过去一天待出院的患者计为0,因为所有的患者在那时都出院了。而第二天待出院的患者在午夜时刻基于患者数 x = ( x 1 , … , x J ) x=(x_1,…,x_J) x=(x1,,xJ)生成。另外,注意midnight时期的相对值函数及其最优值 v 0 , ∗ v^{0,*} v0,只与 x x x有关,且只有在 m = 1 m=1 m=1时,才有 v m i d = v 0 , ∗ v_{mid}=v^{0,*} vmid=v0,

如果使用式 v mid  ( x ) ≈ v 1 F ( x ) + V s ( ∑ j x j ) v_{\text {mid }}(x) \approx v_1^F(x)+V_s\left(\sum_j x_j\right) vmid (x)v1F(x)+Vs(jxj)经逆向归纳获取其它时期的值函数,对于所有可能的 x x x,不仅需要预存储 v 1 F ( x ) v_1^F(x) v1F(x),还需要预存储所有时期和所有状态的近似值函数。为处理 v 1 F ( x ) v_1^F(x) v1F(x)的分段线性结构,作者在午夜时期选择如下基函数:

V s ( ∑ x ) , x j 2 , x j , j = 1 , . . . , J , V_s(\sum x), x_j^2,x_j, \quad j=1,...,J, Vs(x),xj2,xj,j=1,...,J,

为了更加方便地寻找其它时期的基函数,相应地, v 0 , ∗ v^{0,*} v0,的更简洁的近似可以写成

v 0 , ∗ ( x ) ≈ β s 0 V s ( ∑ j x j ) + ∑ j = 1 J ( β 2 j 0 x j 2 + β 1 j 0 x j ) + β 00 0 v^{0, *}(x) \approx \beta_s^0 V_s\left(\sum_j x_j\right)+\sum_{j=1}^J\left(\beta_{2 j}^0 x_j^2+\beta_{1 j}^0 x_j\right)+\beta_{00}^0 v0,(x)βs0Vs(jxj)+j=1J(β2j0xj2+β1j0xj)+β000

5.2. 不同时期的基函数

对于时间点 m − 1 m-1 m1,最优相对值函数为

γ + v m − 1 ( s ) = min ⁡ f { g ( s , f ) + ∑ s ′ p ( s ′ ∣ s , f ) v 0 ( s ′ ) } , s ∈ S m − 1 \gamma+v^{m-1}(s)=\min _f\left\{g(s, f)+\sum_{s^{\prime}} p\left(s^{\prime} \mid s, f\right) v^0\left(s^{\prime}\right)\right\}, \quad s \in \mathscr{S}^{m-1} γ+vm1(s)=fmin{g(s,f)+sp(ss,f)v0(s)},sSm1

其中, v 0 v^0 v0是午夜时期的最优值函数,紧跟前一天的时间点 m − 1 m-1 m1。把 v 0 , ∗ ( x ) v^{0,*}(x) v0,(x)的近似函数代入上式,就可以得到 v m − 1 ( s ) v^{m-1}(s) vm1(s)的近似形式。不断重复这个操作,就可以得到所有时期的基函数形式,具体如下

ν h + 1 ( x 1 , x 2 , … , x J , y 1 , y 2 , … , y J ) ≈ β s V s h + 1 ( x , y ) + β 00 + ∑ j = 1 J ( β 2 j x j 2 + β 1 j x j ) + ∑ j = 1 J ( θ 2 j y j 2 + θ 1 j y j ) + ∑ j = 1 J ω 2 j x j y j , h + 1 = m − 1 , … , 2. \begin{aligned} & \nu^{h+1}\left(x_1, x_2, \ldots, x_J, y_1, y_2, \ldots, y_J\right) \\ \approx & \beta_s V_s^{h+1}(x, y)+\beta_{00} \\ & +\sum_{j=1}^J\left(\beta_{2 j} x_j^2+\beta_{1 j} x_j\right)+\sum_{j=1}^J\left(\theta_{2 j} y_j^2+\theta_{1 j} y_j\right)+\sum_{j=1}^J \omega_{2 j} x_j y_j, \quad h+1=m-1, \ldots, 2 . \end{aligned} νh+1(x1,x2,,xJ,y1,y2,,yJ)βsVsh+1(x,y)+β00+j=1J(β2jxj2+β1jxj)+j=1J(θ2jyj2+θ1jyj)+j=1Jω2jxjyj,h+1=m1,,2.

6. 数值实验

6.1. 模拟模型

模拟模型考察了五个( J = 5 J=5 J=5)并行的服务池(专科):general medicine(GeMed,普通内科),Surgery (Surg,外科),Orthopedic(Ortho,骨科), Cardiology (Card,心脏病科)和Other Medicine(OtMed,包括肠胃病学和神经学)。根据入院来源,可分为三类:来自急诊(ED)部门;选择性住院(EL);从其它医院转入的内部患者(TR)。对于每个专科,作者分别生成来自每个入院源的到达队列,并使用三个单独的缓冲区来容纳来自三个来源的等待患者,也就是说,模型有15个到达流和15个缓冲区。作者对主床位分配执行优先级规则:当主床位可用时,EL患者具有最高优先级,其次是ED,然后是TR患者。

6.2. 参数估计

作者使用新加坡合作医院2010年的数据对模型中的参数进行了校准,结果如下表所示:
在这里插入图片描述

6.3. ADP结果分析与比较

(运行时间说明:每一次策略迭代需要花费20-27分钟,策略评估中的每一次replication需要花费5-10分钟;程序语言为C++;在Macbook Air(8 GB 1600 MHz DDR3,酷睿i5处理器)上执行)

将本文提出的近似动态规划策略(approximate dynamic programming,ADP)与以下三种策略进行比较:(i) 完全共享(full-sharing)策略:允许在每个决策时间段出现溢出;(ii) 午夜(midnight)政策:只允许在每天的午夜时间段出现溢出;(iii) 经验(empirical)政策:只允许在晚上 7 点到第二天早上 7 点之间出现溢出。

当单位持有成本 C j ≡ C = 6 C_j\equiv C=6 CjC=6。对于溢出成本,以 B = ( 30 , 35 ) B=(30,35) B=(30,35)为例,表示对于所有科室类别,其首选病房的溢出均成本为30,次级病房的溢出成本均为35。作者对 B B B的取值进行了敏感性分析,且进行了不同于ADP策略的方法比对,结果如下表所示。

在这里插入图片描述

可以发现,(1)ADP策略的效果一般比其它三种策略高出10%~20%,有时甚至能高出30%之多;(2)当溢出成本较低时,ADP策略更像full-sharing策略,而当溢出成本较高时,ADP策略更像empirical或midnight策略。

作者还对其它因素进行了敏感性分析,具体如下表所示( B = ( 30 , 35 ) B=(30,35) B=(30,35)时的情形为Baseline)。

在这里插入图片描述

首先是容量(病床数量)的影响。可以发现,当病床数量变少(对应increase load一行),ADP策略的好处似乎变弱了,这是因为ADP主要通过白天的溢出策略来获得优势,而床位变少同时也意味着白天的可用床位数变少,ADP策略难以起作用。而一旦病床数变多(对应decrease load一行),ADP的好处变得明显。

其次是均衡床位数量分配的影响(对应balanced allocation一行)。如果,不同科室的床位数量分配更加合理,ADP的效果就会降低。因为合理的床位数量分配使得溢出的概率下滑。

最后是住院天数带来的影响(对应empirical LOS一行)。在原本的建模中,作者假设LOS服从几何分布。在这里,作者放宽了这一限制,作者将其替换成经验分布。此时,ADP策略仍然取得了理想的效果。且最后的结果与Baseline的结果几乎一致。很重要的原因是几何分布与经验分布差别较小。

作者在附录中还对病床分配的优先级进行了敏感性分析。在Baseline中,作者设置优先级依次为EL,DE,TR。而在Alternative setting 1中,作者设定优先级依次为EL,TR,DE;在Alternative setting 2中,作者设定服务规则为先到先得(FCFS)。与其它三种策略进行对比,结果如下表所示。

在这里插入图片描述

下面两张图片分别展示了这两种优先级设置下,各种分配策略下ED患者的平均排队长度与ED患者等待时间超过4小时的比例。可以发现,ADP策略对优先级设置并不敏感。

在这里插入图片描述

在这里插入图片描述

7. 总结与讨论

作者将住院的病人流建模为并行多类别多池的排队网络,并把住院病人溢出决策问题表述为离散时间无限时域的平均成本MDP。MDP明确地将时变特征纳入患者到达和出院过程中。为了解决维数诅咒,作者开发了一种基于仿真的ADP算法,其中相对值函数由精心选择的基函数近似。

作者通过大量的数值实验证明,ADP算法在相对现实的设置中可以有效地找到良好的溢出策略,并可以帮助医院管理者设计操作策略以实现预期的性能。敏感性分析还表明,当医院负荷适中且床位分配不完全平衡时,ADP算法获得更大的效益。

作者还提出了如下几个研究局限和未来的研究方向:

  1. 作者的模型基于离散时间系统,但现实可能更加动态。
  2. 深入研究作者所提ADP算法在理论上的性能,而作者在本文侧重于算法的数值实验。
  3. 参数估计。例如研究溢出成本 B i j B_{ij} Bij和持有成本 C j C_j Cj在实际生活中的取值,作者在本文中只是简单地设定了一些取值进行数值实验。

参考文献:

J. G. Dai, Pengyi Shi (2019) Inpatient Overflow: An Approximate Dynamic Programming Approach. Manufacturing & Service Operations Management 21(4):894-911.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/122193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务-Feign

文章目录 Feign介绍Feign的基本使用自定义Feign的配置Feign性能优化Feign最佳实践 Feign介绍 RestTemplate远程调用存在的问题:代码可读性差,java代码中夹杂url;参数复杂很难维护 String url "http://userservice/user/" order.g…

ResNet(CVPR2016)

文章目录 AbstractIntroductionRelated WorkResidual RepresentationsShortcut Connections Deep Residual LearningResidual LearningIdentity Mapping by Shortcuts ExperimentConclusion 原文链接 Abstract 深层的神经网络更难训练,我们提出了一个残差学习框架&…

怎么突破反爬虫机制

在当今的数字化时代,网络爬虫已经成为了收集信息和数据的重要工具。然而,许多网站和平台都配备了反爬虫机制,以防止恶意攻击和过度访问。对于普通用户来说,如何突破这些反爬虫机制呢?本文将为你提供一些实用的技巧和建…

Nginx的进程结构实例演示

可以参考《Ubuntu 20.04使用源码安装nginx 1.14.0》安装nginx 1.14.0。 nginx.conf文件中worker_processes 2;这条语句表明启动两个worker进程。 sudo /nginx/sbin/nginx -c /nginx/conf/nginx.conf开启nginx。 ps -ef | grep nginx看一下进程情况。 sudo /nginx/sbin/ng…

【Bond随你温故Kubernetes之】壹图复盘service与内部通信

最近跟朋友聊到了k8s 我: “环境给了就只管用呗,副本自动管理地妥妥的,有啥可以复盘的?“ 朋友: “容器的通讯与服务暴露还是有点东西的” 我: “嗯~~(抿嘴点…

C语言每日一题(21)删除排序数组中的重复项

力扣 26.删除排序数组中的重复项 题目描述 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考…

计算机网络基础二

课程目标 了解 OSI 七层模型分层结构 了解 TCP/IP 协议簇四层模型分层结构 能够说出 TCP/IP 协议簇中 运输层、网络层和数据链路 层常见的 相关协议 能够说出 TCP/IP 的三次握手四次断开过程 了解 Vmware 的三种网络模式 能够使用客户端工具连接虚拟机 掌握主机名、 DNS…

Android S从桌面点击图标启动APP流程 (六)

系列文章 Android S从桌面点击图标启动APP流程 (一)Android S从桌面点击图标启动APP流程 (二) Android S从桌面点击图标启动APP流程 (三) Android S从桌面点击图标启动APP流程 (四) Android S从桌面点击图标启动APP流程 (五) Android 12的源码链接: android 1…

【OpenCV实现图像的算数运算,性能测试和优化,改变颜色空间】

文章目录 OpenCV功能概要图像的算数运算性能测试和优化改变颜色空间对象追踪 OpenCV功能概要 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,提供了丰富的图像处理和计算机视觉算法。它支持多种编程语言&…

Java中的volatile关键字

volatile是什么? "volatile"是一个关键字,用于修饰变量。它的作用是告诉编译器该变量可能会在意料之外的时候被修改,因此编译器在对该变量进行优化时需要特别小心。 具体来说,当一个变量被声明为"volatile"…

算法通过村第十七关-贪心|白银笔记|贪心高频问题

文章目录 前言区间问题判断区间是否重复合并区间插入区间 字符串分割加油站问题总结 前言 提示:如果生活把你的门关上了,那你就再打开,这就是门,门就是这样的。 --佚名 贪婪的思想不一定要理解的很透彻,但是贪婪的问题…

Cookie技术

Cookie中文名称为小型文本文件,指某些网站为了辨别用户身份、进行会话跟踪而储存在用户本地终端上的数据。 Cookie是由服务器端生成,发送给User-Agent(—般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文…

软考系列(系统架构师)- 2013年系统架构师软考案例分析考点

试题一 软件架构(根据描述填表、ESB 定义和功能) 【问题1】(10分) 服务建模是对Ramp Coordination信息系统进行集成的首要工作,公司的架构师首先对Ramp Coordination信息系统进行服务建模,识别出系统中的两…

从Mysql架构看一条查询sql的执行过程

1. 通信协议 我们的程序或者工具要操作数据库,第一步要做什么事情? 跟数据库建立连接。 首先,MySQL必须要运行一个服务,监听默认的3306端口。在我们开发系统跟第三方对接的时候,必须要弄清楚的有两件事。 第一个就是通…

uniapp开发小程序 小米手机真机bottom:0无效 底部间隙 设备安全区域处理办法

uniApp自定义导航 CSS设置 bottom:0竟然无效,而iphone和开发模拟器没有问题 height: 150rpx;position: fixed;left: 0;right: 0;bottom: calc(var(--window-bottom,0)); 网上查了各种方法,包括设置bottom:-20啊以及 padding-bottom: constant(safe-are…

静电模型PIC方法的Matlab仿真设计

任务要求: 采用PIC模拟方法的静电模型来模拟多环形电子注在圆柱系统中的运动轨迹。模拟电子枪阴极表面发射电子注,电子在静态场的作用下运动直至稳定的运动过程。其中 系统长:0.01m 系统半径:0.005m 入射的每个宏电子电流&#x…

业界中说的快速原型法是什么

快速原型法是一种软件开发过程,其核心思想是在开发初期快速构建一个系统的原型,即一个工作模型,以便用户和开发者能够更好地理解系统的需求和功能。这种方法强调快速迭代和用户参与,目的是更早地发现和修正问题,从而提…

Ubuntu中查看电脑有多少个核——lscpu

1. 使用lscpu命令: 打开终端并输入以下命令: lscpu你会看到与CPU相关的详细信息。查找"CPU(s)"这一行来看总的核心数。另外,“Core(s) per socket”表示每个插槽或每个物理CPU的核数,“Socket(s)”表示物理CPU的数量。将这两个值相乘即得到总…

IO流框架,缓冲流

一.缓冲流有什么优点 Java中的缓冲流(Buffered Stream)具有以下优势: 提高效率:缓冲流通过在内存中缓存一部分数据,减少了直接从内存到磁盘或从磁盘到内存的频繁IO操作,从而提高了读写效率。缓冲区大小调整…

蓝桥杯双周赛算法心得——通关(哈希+小根堆)

大家好,我是晴天学长,这是很重要的贪心思维题,哈希的存法和小根堆的表示很重要。 1) .通关 2) .算法思路 通关 用hash(int[])存点的子节点并按输入顺序存关卡的号码(输入顺序就是) 列如&#…