两阶段药代动力学输注控制¶
仅供教学,不构成临床建议
本合成案例用于讲解最优控制建模。参数不对应具体患者,模型没有 考虑不确定性、毒性、协变量、测量反馈和临床监护,绝不能用于选择 或推荐剂量。
背景¶
静脉给药后,药物可能先在血浆与外周组织之间交换,效应室浓度随后 才逐渐跟上血浆暴露。合理的输注指令既要尽快接近目标,也要满足暴露 上限,并避免真实输注泵无法实现的瞬时变化。
本例将治疗过程分为两个阶段。前 22 小时为负荷阶段,由优化器选择 平滑的输注泵轨迹;最后两小时固定为解析推导出的维持速率,PK 状态 严格保持在平衡点。这样的阶段划分明确表达了从负荷到维持的事件, 同时给出一个生物医学多阶段建模示例。
药代动力学模型¶
令 \(A_c\)、\(A_p\) 分别表示中央室和外周室药物量,\(C_e\) 表示 效应室浓度。中央室浓度为
带一阶效应室的二室 PK 模型为
其中 \(R\) 为静脉输注速率。效应室只是具有延迟的测量隔室,不从 两个 PK 隔室中移除药物质量。
负荷阶段¶
在 \(0\le t\le t_s=22\ \mathrm{h}\) 上,将输注速率和斜率作为状态:
并以输注泵加加速度 \(j\) 为控制。因此,负荷阶段的状态与控制为
系统从无药物、输注泵停止的状态出发,并在阶段末到达稳态维持点:
目标浓度为 \(C^*=2\ \mathrm{mg/L}\)。由稳态质量平衡可得
负荷阶段目标函数权衡跟踪误差和归一化泵控制代价:
其中 \(w_R=0.02\)、\(w_S=0.002\)、\(w_j=0.0002\)。
维持阶段¶
在 \(t_s\le t\le T=24\ \mathrm{h}\) 上,输注泵固定为 \(R^*\)。该阶段 只包含 \((A_c,A_p,C_e)\),采用相同的 PK 动力学,并将两个端点都固定 为 \((A_c^*,A_p^*,C^*)\)。代入动力学可得
因此维持阶段是严格平衡解,而不是经验性的恒定剂量片段。其目标函数 贡献为
边界与单位¶
负荷阶段施加以下路径边界:
| 符号 | 含义 | 数值或单位 |
|---|---|---|
| \(t\) | 时间 | h |
| \(A_c,A_p\) | 中央室和外周室药物量 | mg |
| \(C_c,C_e,C^*\) | 中央室、效应室和目标浓度 | mg/L |
| \(R\) | 输注速率 | mg/h |
| \(S\) | 输注速率斜率 | mg/h² |
| \(j\) | 输注泵加加速度 | mg/h³ |
| \(V_c\) | 中央室容积 | \(20\ \mathrm{L}\) |
| \(CL\) | 清除率 | \(3\ \mathrm{L/h}\) |
| \(k_{12},k_{21}\) | 室间转运速率 | \(0.25,0.15\ \mathrm{h^{-1}}\) |
| \(k_{e0}\) | 效应室平衡速率 | \(0.50\ \mathrm{h^{-1}}\) |
建模取舍与限制¶
模型以药物量作为守恒隔室状态,再通过容积换算中央室浓度。将 \(R\) 和 \(S\) 提升为状态后,输注指令具有二阶连续性,并能直接约束泵的 斜率和加加速度。若一个优化瞬态后紧接已知运行工况,显式维持阶段是 可复用的建模模式。
该模型假设 PK 参数线性、时不变,且静脉输注连续可调。跟踪目标只是 数值教学代价,并不代表药效获益或毒性。临床模型还必须纳入群体或 患者特异的参数不确定性、安全终点、离散采样反馈、设备动力学和医学 审核。
负荷阶段采用 \(88\times2\) Lobatto 网格,维持阶段采用 \(8\times3\) 网格。初始猜测用平滑三次曲线构造负荷阶段的状态、斜率与加加速度, 第二阶段则直接从解析平衡点开始。
运行示例¶
无界面运行并保存图片:
实现遵循统一的多阶段流程:
system, phases = build_problem()
guess = initial_guess(phases)
solution = solve_problem(system, guess)
plot_solution(solution)
验证结果¶
脚本在统一的 4,001 点时间网格上重构两个阶段,检查全部状态和执行器 边界、终端目标、整个维持阶段的恒定性,以及终端 PK 和输注泵导数。
| 指标 | 验证值 |
|---|---|
| 目标函数 \(J\) | \(2.85018982\) |
| 总给入量 \(\int_0^T R\,\mathrm{d}t\) | \(249.448036\ \mathrm{mg}\) |
| 效应室跟踪 RMSE | \(0.683745\ \mathrm{mg/L}\) |
| 中央室峰值浓度 | \(2.935014\ \mathrm{mg/L}\) |
| 最大终端状态误差 | 输出精度下为 \(0\) |
| 维持阶段最大偏差 | \(1.421\times10^{-14}\) |
| 终端 PK/输注泵平衡残差 | 输出精度下为 \(0\) |
| 最大密集路径边界超限 | \(1.906\times10^{-7}\) |
负荷轨迹在 \(t_s\) 到达完整的 PK 与输注泵平衡点,随后解析维持速率 \(6\ \mathrm{mg/h}\) 使所有报告状态保持恒定。密集路径超限低于脚本 采用的 \(2\times10^{-6}\) 数值验收容差。

源代码¶
完整可运行教学示例见:
examples/pharmacokinetic_dosing.py。