血液管理问题的建模与策略设计
1. 问题概述
血液库存管理是资源分配问题的一个典型案例。我们先假设在一家医院进行库存管理,每周都要决定使用哪些血液库存来满足下周的需求。
血液有两个主要特征需要关注:血型和血龄。医生通常关注的主要血型有八种:A+、A -、B+、B -、AB+、AB -、O+和O -。大多数情况下,不同血型的替代规则如下表所示:
| 受血者\供血者 | AB+ | AB - | A+ | A - | B+ | B - | O+ | O - |
| — | — | — | — | — | — | — | — | — |
| AB+ | X | | | | | | | |
| AB - | X | X | | | | | | |
| A+ | X | | X | | | | | |
| A - | X | X | X | X | | | | |
| B+ | X | | | | X | | | |
| B - | X | X | | | X | X | | |
| O+ | X | | X | | X | | X | |
| O - | X | X | X | X | X | X | X | X |
血龄方面,血液的储存期限为六周,超过六周就必须丢弃。医院需要预估是否能在血龄达到六周之前使用这些血液,也可以将不需要的血液转移到区域内的血液中心。另外,冷冻是延长血液保质期的一种方法,冷冻血液可以储存长达10年,但解冻至少需要一小时,且解冻后必须在24小时内使用,这限制了其在紧急情况或用血需求不确定的手术中的使用。
2. 基本模型
2.1 状态变量
我们将血液问题建模为异构资源分配问题。首先描述存储血液的属性:
设 (b=\begin{pmatrix}b_1\b_2\end{pmatrix}=\begin{pmatrix}\text{血型 (A+, A -,…)}\\text{血龄 (周)}\end{pmatrix}),(B) 为所有血液属性类型的集合。血龄限制在 (0\leq b_2\leq6),血龄为6周的血液不可再用。
决策周期以一周为单位。血液库存表示为:
(R_{tb}):在时间 (t) 可分配或持有的 (b) 型血液单位数;
(R_t=(R_{tb})_{b\in B})。
血液需求的属性为:
(a=\begin{pmatrix}a_1\a_2\a_3\end{pmatrix}=\begin{pmatrix}\text{患者血型}\\text{手术类型:紧急或择期}\\text{是否允许血型替代}\end{pmatrix}),(A) 为所有血液需求属性类型的集合。
需求定义为:
(D_{ta}):在时间 (t),具有属性 (a) 的患者所需的血液单位数;
(D_t=(D_{ta})_{a\in A})。
状态变量为 (S_t=(R_t, D_t))。
2.2 决策变量
决策类型 (d) 包括给具有属性 (a\in A) 的患者供血,或不做处理持有血液(用 (d_{\phi}) 表示)。(D) 为所有可能决策的集合,(D = A\cup d_{\phi})。
设 (x_{tbd}):在时间 (t),对具有属性 (b) 的血液执行决策类型 (d) 的单位数;
(x_t=(x_{tbd})_{b\in B,d\in D})。
可行区域 (X_t) 由以下约束定义:
(\sum_{d\in D}x_{tbd}=R_{tb}, b\in B) (13.1)
(\sum_{b\in B}x_{tbd}\leq\hat{D}
{td}, d\in D) (13.2)
(x
{tbd}\geq0) (13.3)
2.3 外生信息
决策后到达的信息包括血液捐赠和新的血液需求。
(\hat{R}
{t + 1,b}):在 (t) 到 (t + 1) 之间捐赠的 (b) 型新血液单位数;
(\hat{R}
{t + 1}=(\hat{R}
{t + 1,b})
{b\in B})。
(\hat{D}
{t + 1,a}):在 (t) 到 (t + 1) 之间出现的具有属性 (a) 的需求单位数;
(\hat{D}
{t + 1}=(\hat{D}
{t + 1,a})
{a\in A})。
外生信息变量 (W_{t + 1}=(\hat{R} {t + 1}, \hat{D} {t + 1}))。
2.4 转移函数
持有血液时,血龄增加一周,但最大血龄为六周。分配给需求的血液可视为转移到一个“血型汇”。血液属性转移函数 (r_M(b_t, d_t)) 为:
(b_{t + 1}=\begin{pmatrix}b_{t + 1,1}\b_{t + 1,2}\end{pmatrix}=\begin{cases}\begin{pmatrix}b_{t,1}\\min{6, b_{t,2}+1}\end{pmatrix},&d_t = d_{\phi}\\begin{pmatrix}\phi\-\end{pmatrix},&d_t\in D\end{cases})
为表示转移函数,定义 (\delta_{b’}(b, d)=\begin{cases}1, &x_{t}=b’ = b_M(b_t, d_t)\0, &\text{否则}\end{cases}),(\Delta) 是以 (\delta_{b’}(b, d)) 为元素的矩阵。
资源转移函数为:
(R_{tb’}^{x}=\sum_{b\in B}\sum_{d\in D}\delta_{b’}(b, d)x_{tbd})
(R_{t + 1,b’}=R_{tb’}^{x}+\hat{R}_{t + 1,b’})
用矩阵形式表示为:
(R_{t}^{x}=\Delta x_t) (13.4)
(R_{t + 1}=R_{t}^{x}+\hat{R}_{t + 1}) (13.5)
需求 (D_{t + 1}) 直接由新需求 (\hat{D} {t + 1}) 确定,即 (D {t + 1}=\hat{D}_{t + 1})。
下面是周 (t) 发生的转移情况的流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
subgraph "周 t"
style "周 t" fill:#ffffff,stroke:#000000,stroke-width:2px;
Rt(血液库存 Rt):::process -->|满足需求| Dt(血液需求 Dt):::process
Rt -->|持有| Rtx(处理后库存 Rt^x):::process
end
subgraph "周 t + 1"
style "周 t + 1" fill:#ffffff,stroke:#000000,stroke-width:2px;
Rtx -->|加上捐赠| Rt1(血液库存 Rt+1):::process
Dt1(血液需求 Dt+1):::process
end
Rt1 -.-> Dt1
Dt1 -.->|新需求| Dt
Rt1 -.->|新捐赠| Rt
2.5 目标函数
分配不同血型的血液没有实际“成本”,我们使用贡献函数来体现医生的偏好。一般来说,不进行血型替代更好,满足紧急需求比择期需求更重要。例如,不同类型血液和决策的贡献如下表所示:
| 条件 | 描述 | 值 |
| — | — | — |
| (d = d_{\phi}) | 持有 | 0 |
| (b_1 = b_1) ((d\in D)) | 不替代 | 0 |
| (b_1\neq b_1) ((d\in D)) | 替代 | - 10 |
| (b_1 = O -) ((d\in D)) | O - 替代 | 5 |
| (d_2 =) 紧急 | 满足紧急需求 | 40 |
| (d_2 =) 择期 | 满足择期需求 | 20 |
总贡献(在时间 (t))为 (C_t(S_t, x_t)=\sum_{b\in B}\sum_{d\in D}c_{tbd}x_{tbd})。
我们希望通过求解 (\max_{\pi\in\Pi}E\sum_{t = 0}^{T}C_t(S_t, x_t)) 找到最佳策略。
3. 不确定性建模
该问题的不确定性来源主要有两个:血液捐赠和需要用血的新手术的到来。建模时需要考虑以下问题:
- 血液捐赠不仅数量随机,血型也随机。
- 血液捐赠存在每周和季节性模式,也会受到呼吁的影响。
- 新手术的到来可能因天气或暴力事件而突发。
- 献血者和需要手术的人群血型分布存在持续不匹配。
- 血型替代的管理是一个主要问题,虽然O - 型血可用于任何人,但所有血型都有不同的替代方式。
4. 策略设计
4.1 短视策略
解决该问题最直接的方法是短视策略,即每次只考虑当前的贡献,不考虑决策对未来的影响。通过调整单期贡献,可以得到一系列短视策略。例如,使用O - 型血的5美元奖励就是一种短视策略。短视策略集合为 (\Pi_M),对于 (\pi\in\Pi_M),决策函数为:
(X_{\pi}^t(S_t)=\arg\max_{x_t\in X_t}\sum_{b\in B}\sum_{d\in D}c_{tbd}x_{tbd}) (13.7)
这是一个简单的线性规划问题,搜索式(13.6)中的策略就是搜索使用O - 型血的不同奖励值。
4.2 VFA策略
传统动态规划下,式(13.6)的优化问题很复杂。状态变量 (S_t) 有 (|A| + |B| = 8\times6 + 8\times2\times2 = 80) 维,随机变量 (\hat{R}) 和 (\hat{D}) 也有80维,决策向量 (x_t) 有 (27 + 8 = 35) 维。
自然地,我们使用值函数近似来确定分配向量 (x_t):
(x_t^n=\arg\max_{x_t\in X_t^n}{C_t(S_t^n, x_t)+V_{t}^{x,n - 1}(R_t^x)}) (13.8)
其中 (R_t^x = R_M(R_t, x_t)) 由式(13.4)给出,(X_t^n) 由约束(13.1) - (13.3)定义。
一个简单有效的近似方法是使用可分离的分段线性近似:
(V_t^x(R_t^x)=\sum_{b\in B}V_{tb}^x(R_{tb}^x))
其中 (V_{tb}^x(R_{tb}^x)) 是每个血型 (b) 的决策后库存 (R_{tb}^x) 的标量分段线性函数。
值函数是凹的且分段线性,所以每个 (V_{tb}^x(R_{tb}^x)) 也应该是凹的。不妨设 (V_{tb}^x(R_{tb}^x)=0)(当 (R_{tb}^x = 0) 时),则函数完全由其斜率集合决定:
(V_{tb}^{n - 1}(R_{tb}^x)=\left(\sum_{r = 1}^{\lfloor R_{tb}^x\rfloor}\bar{v}
{tb}^{n - 1}(r - 1)+(R
{tb}^x-\lfloor R_{tb}^x\rfloor)\bar{v}
{tb}^{n - 1}(\lfloor R
{tb}^x\rfloor)\right)) (13.9)
估计 (V_t(R_t)) 斜率的方法是创建时间 (t) 问题的目标函数:
(\tilde{V}
t(S_t)=\max
{x_t\in X_t^n}{C_t(S_t^n, x_t)+V_{t}^{x,n - 1}(R_t^x)}) (13.10)
求解这个线性规划问题,可得到类型 (a) 的额外一单位血液的边际价值估计值 (\hat{v} {ta}^n)。也可以通过创建扰动资源向量 (R {ta}^{n+}=R_{ta}^n + 1) 更准确地计算边际价值。
然后用 (\hat{v}
{ta}^n) 更新之前的决策后值函数近似:
(\bar{v}
{t - 1,a}^{x,n}(R_{t - 1,a}^{x,n})=(1 - \alpha)\bar{v}
{t - 1,a}^{x,n - 1}(R
{ta}^{x,n})+\alpha\hat{v}_{ta}^n)
我们可以使用近似值迭代方法,通过时间周期 (t = 0, \cdots, T) 进行迭代模拟。设 (n = 1, \cdots, N) 为迭代计数器,遵循外生信息 (W_t^n) 的样本路径。在时间 (t)、迭代 (n) 时,根据式(13.8)做出决策 (x_t^n),然后观察 (W_{t + 1}^n) 并使用转移函数更新 (R_t^n) 到 (R_{t + 1}^n)。
对于大多数实际应用,该问题通常在有限时间范围内(如10周)求解,得到当前的决策建议。还可以使用值函数近似 (V_t^x(R_t^x)) 多次模拟策略,对未来库存进行概率预测。
5. 模型扩展
这个资源分配问题可以从多个方面进行扩展:
1.
考虑需求延迟
:假设紧急手术需求必须满足,择期手术需求可以延迟。重新定义新问题的状态变量。
2.
更新延迟需求的VFA
:假设择期手术可延迟,使用血液库存的分段线性可分离值函数近似,以及按血型划分的延迟需求的分段线性可分离值函数近似。利用血液库存的对偶变量更新血液供应的VFA,思考如何更新延迟需求的VFA。
3.
纳入冷冻血液
:考虑冷冻血液的存在以及冷冻决策,未使用的冷冻血液必须丢弃。要认识到手术前所需的血液量是未知的,需要在此时做出解冻血液的决策。
4.
定期血液供应
:医院可能每周从社区血库接收固定数量(如100单位)的血液,但每种血型和血龄的血液量可能是随机的。
5.
多医院和配送中心
:之前的模型只关注单家医院的血液库存。通过添加位置属性,并考虑以一定成本将血液从一个位置转移到另一个位置,可以处理多个医院和配送中心的情况。该模型也可应用于任何多产品库存问题,只要能够选择将哪种类型的产品分配给每种类型的需求,且产品不可重复使用。
血液管理问题的建模与策略设计(续)
6. 模型扩展的具体分析与应对
6.1 考虑需求延迟
当假设紧急手术需求必须满足,择期手术需求可以延迟时,原有的状态变量 (S_t=(R_t, D_t)) 需要进行调整。新的状态变量除了包含当前的血液库存 (R_t) 和当前的血液需求 (D_t) 外,还需要增加一个维度来表示延迟的需求。设 (H_t) 为延迟需求向量,其中 (H_{ta}) 表示具有属性 (a) 的延迟需求数量。那么新的状态变量可以表示为 (S_t=(R_t, D_t, H_t))。
在决策过程中,需要考虑如何分配血液来满足当前需求 (D_t) 和延迟需求 (H_t)。对于紧急需求,应优先满足;对于择期需求,可以根据库存情况和延迟成本来决定是否满足或继续延迟。
6.2 更新延迟需求的VFA
假设使用分段线性且可分离的值函数近似(VFA)来处理血液库存和延迟需求。对于血液库存的VFA,我们使用对偶变量进行更新。对于延迟需求的VFA更新,可以采用以下步骤:
1.
定义延迟成本
:为不同血型和需求类型的延迟需求定义一个延迟成本函数 (C_{delay}(H_{ta})),该函数表示延迟具有属性 (a) 的需求 (H_{ta}) 所带来的成本。
2.
构建目标函数
:在原有的目标函数 (C_t(S_t, x_t)) 基础上,加入延迟成本项,得到新的目标函数 (\tilde{C}
t(S_t, x_t, H_t)=C_t(S_t, x_t)+C
{delay}(H_t))。
3.
求解线性规划
:在每个决策周期,求解包含新目标函数的线性规划问题 (\max_{x_t\in X_t^n}{\tilde{C}
t(S_t^n, x_t, H_t^n)+V
{t}^{x,n - 1}(R_t^x)}),得到对偶变量。
4.
更新VFA
:使用对偶变量来更新延迟需求的VFA。设 (\hat{v}
{H,ta}^n) 为求解线性规划得到的与延迟需求 (H
{ta}) 相关的对偶变量,则更新公式为 (\bar{v}
{t - 1,a}^{H,x,n}(R
{t - 1,a}^{H,x,n})=(1 - \alpha)\bar{v}
{t - 1,a}^{H,x,n - 1}(R
{ta}^{H,x,n})+\alpha\hat{v}_{H,ta}^n),其中 (\alpha) 为更新系数。
6.3 纳入冷冻血液
当考虑冷冻血液的存在以及冷冻决策时,需要对模型进行以下扩展:
1.
状态变量扩展
:增加冷冻血液的库存信息。设 (F_t) 为冷冻血液库存向量,其中 (F_{tb}) 表示 (b) 型冷冻血液的数量。新的状态变量变为 (S_t=(R_t, D_t, F_t))。
2.
决策变量扩展
:增加冷冻和解冻决策。设 (y_{tb}) 为在时间 (t) 对 (b) 型血液进行冷冻的数量,(z_{tb}) 为在时间 (t) 对 (b) 型冷冻血液进行解冻的数量。决策变量集合变为 (x_t=(x_{tbd}, y_{tb}, z_{tb})
{b\in B,d\in D})。
3.
约束条件扩展
:
- 冷冻血液的数量不能超过当前可用的非冷冻血液数量:(y
{tb}\leq R_{tb})。
- 解冻的冷冻血液数量不能超过当前冷冻血液库存:(z_{tb}\leq F_{tb})。
- 解冻后的血液必须在24小时内使用,需要在决策中考虑这一限制。
4.
目标函数调整
:考虑冷冻和解冻的成本。设 (C_{freeze}(y_{tb})) 为冷冻 (y_{tb}) 单位 (b) 型血液的成本,(C_{thaw}(z_{tb})) 为解冻 (z_{tb}) 单位 (b) 型冷冻血液的成本。目标函数变为 (C_t(S_t, x_t)=\sum_{b\in B}\sum_{d\in D}c_{tbd}x_{tbd}-C_{freeze}(y_{tb})-C_{thaw}(z_{tb}))。
以下是纳入冷冻血液后的决策流程的流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
subgraph "周 t"
style "周 t" fill:#ffffff,stroke:#000000,stroke-width:2px;
Rt(非冷冻血液库存 Rt):::process -->|冷冻| Ft(冷冻血液库存 Ft):::process
Ft -->|解冻| Rtx(处理后非冷冻库存 Rt^x):::process
Rt -->|满足需求| Dt(血液需求 Dt):::process
Rtx -->|满足需求| Dt
end
subgraph "周 t + 1"
style "周 t + 1" fill:#ffffff,stroke:#000000,stroke-width:2px;
Rtx -->|加上捐赠| Rt1(非冷冻血液库存 Rt+1):::process
Ft -->|未使用丢弃| Ft1(冷冻血液库存 Ft+1):::process
Dt1(血液需求 Dt+1):::process
end
Rt1 -.-> Dt1
Dt1 -.->|新需求| Dt
Rt1 -.->|新捐赠| Rt
Ft1 -.->|新冷冻| Ft
6.4 定期血液供应
当医院每周从社区血库接收固定数量(如100单位)的血液,但每种血型和血龄的血液量可能是随机的时,需要对模型的外生信息进行调整。设 (\tilde{R} {t + 1}) 为每周固定接收的血液总量,(\hat{R} {t + 1,b}) 为 (b) 型血液的随机捐赠量,且 (\sum_{b\in B}\hat{R} {t + 1,b}=\tilde{R} {t + 1})。
在决策过程中,需要考虑随机捐赠的不确定性。可以采用随机规划的方法,例如使用场景分析来处理不同的捐赠场景。具体步骤如下:
1.
生成捐赠场景
:根据历史数据或概率分布,生成多个捐赠场景 (\omega = 1, \cdots, \Omega),每个场景对应一组不同的 (\hat{R}
{t + 1,b}^{\omega})。
2.
求解场景下的决策
:对于每个场景 (\omega),求解线性规划问题 (\max
{x_t\in X_t^n}{C_t(S_t^n, x_t)+V_{t}^{x,n - 1}(R_t^x)}),得到决策 (x_t^{\omega})。
3.
综合决策
:根据每个场景的概率 (p_{\omega}),计算综合决策 (x_t=\sum_{\omega = 1}^{\Omega}p_{\omega}x_t^{\omega})。
6.5 多医院和配送中心
当考虑多个医院和配送中心时,需要对模型进行以下扩展:
1.
状态变量扩展
:增加位置信息。设 (l) 为位置索引,(R_{tlb}) 为在时间 (t)、位置 (l) 处 (b) 型血液的库存,(D_{tla}) 为在时间 (t)、位置 (l) 处具有属性 (a) 的需求。状态变量变为 (S_t=(R_{tlb}, D_{tla})
{l\in L,b\in B,a\in A}),其中 (L) 为所有位置的集合。
2.
决策变量扩展
:增加血液转移决策。设 (w
{tll’b}) 为在时间 (t) 从位置 (l) 转移到位置 (l’) 的 (b) 型血液数量。决策变量集合变为 (x_t=(x_{tbd}, w_{tll’b})
{b\in B,d\in D,l\in L,l’\in L})。
3.
约束条件扩展
:
- 血液转移的数量不能超过源位置的库存:(w
{tll’b}\leq R_{tlb})。
- 转移的血液需要考虑运输成本和时间。
4.
目标函数调整
:考虑血液转移的成本。设 (C_{transfer}(w_{tll’b})) 为从位置 (l) 转移 (w_{tll’b}) 单位 (b) 型血液到位置 (l’) 的成本。目标函数变为 (C_t(S_t, x_t)=\sum_{b\in B}\sum_{d\in D}c_{tbd}x_{tbd}-C_{transfer}(w_{tll’b}))。
以下是多医院和配送中心的血液管理流程的表格:
| 步骤 | 描述 |
| — | — |
| 1 | 收集每个位置的血液库存和需求信息。 |
| 2 | 根据需求和库存情况,制定血液分配和转移计划。 |
| 3 | 执行血液分配和转移决策。 |
| 4 | 更新每个位置的血液库存和需求信息。 |
| 5 | 重复步骤2 - 4,直到达到决策周期结束。 |
7. 总结
血液管理问题是一个复杂的资源分配问题,涉及到血型、血龄、需求类型、不确定性等多个因素。通过建立基本模型,并考虑各种扩展情况,可以更准确地描述和解决实际中的血液管理问题。
短视策略和VFA策略为解决该问题提供了不同的方法。短视策略简单直接,适用于对未来影响考虑较少的情况;VFA策略通过值函数近似,能够更好地考虑决策的长期影响,但计算复杂度较高。
模型的扩展部分考虑了需求延迟、冷冻血液、定期血液供应、多医院和配送中心等实际情况,使模型更加贴近现实。在实际应用中,可以根据具体情况选择合适的模型和策略,以实现血液资源的最优分配,提高医疗服务的质量和效率。
超级会员免费看
1151

被折叠的 条评论
为什么被折叠?



