18、血液管理问题的建模与策略设计

血液管理问题的建模与策略设计

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策略通过值函数近似,能够更好地考虑决策的长期影响,但计算复杂度较高。

模型的扩展部分考虑了需求延迟、冷冻血液、定期血液供应、多医院和配送中心等实际情况,使模型更加贴近现实。在实际应用中,可以根据具体情况选择合适的模型和策略,以实现血液资源的最优分配,提高医疗服务的质量和效率。

【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)内容概要:本文介绍了基于蒙特卡洛和拉格朗日方法的电动汽车充电站有序充电调度优化方案,重点在于采用分散式优化策略应对分时电价机制下的充电需求管理。通过构建数学模型,结合不确定性因素如用户充电行为和电网负荷波动,利用蒙特卡洛模拟生成大量场景,并运用拉格朗日松弛法对复杂问题进行分解求解,从而实现全局最优或近似最优的充电调度计划。该方法有效降低了电网峰值负荷压力,提升了充电站运营效率经济效益,同时兼顾用户充电便利性。 适合人群:具备一定电力系统、优化算法和Matlab编程基础的高校研究生、科研人员及从事智能电网、电动汽车相关领域的工程技术人员。 使用场景及目标:①应用于电动汽车充电站的日常运营管理,优化充电负荷分布;②服务于城市智能交通系统规划,提升电网交通系统的协同水平;③作为学术研究案例,用于验证分散式优化算法在复杂能源系统中的有效性。 阅读建议:建议读者结合Matlab代码实现部分,深入理解蒙特卡洛模拟拉格朗日松弛法的具体实施步骤,重点关注场景生成、约束处理迭代收敛过程,以便在实际项目中灵活应用改进。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值