十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

数学建模实战:从SEIR模型到多目标优化,解析疫情应对策略

数学建模实战:从SEIR模型到多目标优化,解析疫情应对策略 1. 从“最优应对策略”到“可执行方案”一次数学建模实战复盘去年我带着团队参加了数维杯数学建模竞赛B题“大规模新型冠状病毒疫情最优应对策略研究”给我们留下了深刻的印象。这道题没有标准答案它更像一个开放的沙盘考验的是我们如何将复杂的现实问题抽象成数学模型并最终转化为可量化、可比较、可执行的决策建议。很多朋友对数学建模竞赛的印象还停留在“套模型、跑代码”的阶段但真正有价值的是那个从混沌的现实到清晰模型再从模型结论回溯到现实指导的完整思考链路。今天我就以这道题为例抛开那些华丽的术语复盘我们当时从破题、建模到求解的全过程分享一些在高压竞赛环境下如何快速构建有效模型的实战心得。这道题的核心是要求我们针对一场假设的大规模疫情设计一套“最优”的应对策略。这里的“最优”是模糊的它可能意味着感染人数最少、经济损失最小、医疗资源压力最轻或者几者之间的平衡。题目没有给出具体的数据这既是挑战也是机会——挑战在于我们需要自己设定合理的参数和初始条件机会在于我们可以基于公开的流行病学常识和经济学原理构建一个自洽的、有说服力的分析框架。我们的目标不是预测未来而是展示一种系统性的、基于数据的决策分析方法。2. 问题拆解与模型框架搭建不止于SEIR拿到题目第一步不是急着找代码而是静下心来拆解“最优应对策略”这个核心。我们团队花了近两个小时进行头脑风暴最终将问题分解为三个相互关联的子模块疫情传播动力学模块、资源约束与干预措施模块以及多目标优化评价模块。这三个模块构成了我们整个模型的骨架。2.1 疫情传播动力学为什么我们选择了SEIHRD模型经典的SEIR模型易感者S、潜伏者E、感染者I、移除者R是起点但不足以描述新冠疫情的复杂性。我们对其进行了关键扩展构建了SEIHRD模型S (Susceptible)易感者。E (Exposed)潜伏期感染者已感染但尚未具备传染性。I (Infectious)有症状感染者具有传染性。H (Hospitalized)住院患者这部分人群被隔离传染性显著降低但占用医疗资源。R (Recovered)康复者具有免疫力。D (Deceased)病亡者。增加H和D compartment的考量这是将公共卫生干预如 hospitalization和疫情严重性死亡率直接内化到模型中的关键。参数β有效接触率不再是固定的它会随着干预策略如社交距离、口罩令的强度u(t)动态变化即β(t) β0 * (1 - η * u(t))其中β0是基础传播率η是干预措施的有效系数u(t)在0到1之间表示干预强度。住院率θ和病亡率δ则与医疗资源占用率直接相关当医院床位H超过承载力H_max时δ会急剧上升。这就把“压平曲线”保护医疗系统的逻辑用数学公式清晰地表达了出来。2.2 干预措施量化如何把“封控”、“检测”变成数学参数策略要优化首先得能量化。我们将常见的非药物干预措施NPIs和医疗措施映射为模型中的控制变量和参数社交距离与口罩令对应u(t)直接影响β(t)。我们将其设定为一个时间函数允许在疫情不同阶段采取不同强度。核酸检测与隔离我们引入了“检测率”τ和“隔离延迟”d。发现一个感染者后其密接者以概率τ被检测并转入隔离状态从S或E直接进入一个“隔离仓”不再参与传播这个过程平均需要d天。这模拟了流调溯源的速度和广度。医疗资源分配包括床位H_max、医护人员比例、ICU床位数量、呼吸机数量等。它们共同决定了住院率θ和病亡率δ的函数形式。我们设定了一个分段函数当住院人数H超过承载力的80%时病亡率开始非线性上升。疫苗接种我们简化处理为随时间推移每天有一定比例的易感者S直接转移到康复者R并降低了这部分人群的感染概率和重症概率。关键点所有参数都需要给出合理的取值范围和引用来源即使竞赛不要求严格引用也要在论文中说明依据如参考WHO报告、某篇学术论文的估计区间。例如新冠的基本再生数R0我们设定在2.5-3.5之间潜伏期平均5-6天传染期平均7-10天。这些数值的设定直接影响了模拟结果的量级和趋势。2.3 多目标优化如何在“人命”和“经济”间权衡这是题目的精髓也是建模的难点。“最优”必须被定义。我们构建了一个综合成本函数J作为优化的目标J w1 * (总死亡人数D) w2 * (总感染人数) w3 * (总经济成本) w4 * (干预强度总积分)总死亡人数D直接从模型输出是最核心的卫生目标。总感染人数反映疫情规模。总经济成本这是一个需要估算的模块。我们将其分为直接成本医疗支出、检测费用、疫苗接种费用和间接成本封锁导致的经济活动损失。经济活动损失我们用一个简化的模型GDP损失率与干预强度u(t)和感染导致的劳动力缺勤率相关即经济成本 ∫ [α1 * u(t) α2 * (I(t)H(t))] dt其中α1和α2是折算系数。干预强度总积分∫ u(t) dt反映社会承受的总体限制程度。权重w1, w2, w3, w4的设定这里没有标准答案。我们采用了两种方法展示一是专家打分法假设一个公共卫生决策者更看重生命w1权重最高二是帕累托前沿分析。后者更具说服力我们让多目标优化算法如NSGA-II跑出成千上万个策略每个策略对应一个死亡人数经济成本的点。所有这些点构成的边界就是帕累托前沿。决策者可以在这个边界上根据当时社会对生命和经济的相对偏好选择一个可接受的“折中点”。在论文中我们绘制了清晰的帕累托前沿图并标注了几个典型策略点如“严格防控”、“群体免疫”、“动态清零”的近似位置。3. 模型求解与算法选择从仿真到优化有了模型框架和目标函数接下来就是求解。这个过程分为两大步疫情发展仿真和策略参数优化。3.1 基于差分方程的疫情仿真SEIHRD模型是一组常微分方程ODEs。我们采用经典的四阶龙格-库塔法进行数值求解。为什么不用欧拉法因为疫情模型对步长敏感欧拉法容易累积误差导致结果失真而龙格-库塔法精度更高、更稳定。在MATLAB中我们直接使用ode45求解器它就是一种自适应步长的龙格-库塔法。一个关键的实现细节如何处理随时间变化的参数β(t)和状态相关的参数δ(H)我们在定义ODE方程的函数文件里将u(t)作为一个额外的输入参数函数。δ的计算则实时根据当前H(t)的值进行判断。代码片段示例如下function dydt seihrd_ode(t, y, u_func, params) S y(1); E y(2); I y(3); H y(4); R y(5); D y(6); beta0 params.beta0; eta params.eta; ... % 计算当前时刻的干预强度和控制后的传播率 u u_func(t); beta beta0 * (1 - eta * u); % 计算当前医疗资源压力下的病亡率 if H 0.8 * params.H_max delta params.delta_mild; else delta params.delta_severe * (H / params.H_max)^2; % 非线性增长 end dSdt -beta * S * I / N; dEdt beta * S * I / N - sigma * E; % ... 其他方程 dDdt delta * H; dydt [dSdt; dEdt; dIdt; dHdt; dRdt; dDdt]; end这个函数封装了模型的核心逻辑清晰且易于调试。3.2 策略优化我们为什么用了遗传算法我们的控制变量是干预强度函数u(t)。为了优化我们需要将其参数化。我们采用了分段常数函数的假设将整个疫情期例如180天分为6个阶段每个阶段30天u在该阶段内取恒定值u1, u2, ..., u6。这样优化问题就变成了寻找一个6维向量[u1, u2, ..., u6]使得综合成本J最小。这是一个典型的连续变量、有约束0≤ui≤1、非线性、可能非凸的优化问题。梯度下降类方法容易陷入局部最优。因此我们选择了遗传算法。它的优势在于全局搜索能力强通过种群、交叉、变异操作有更大几率找到全局最优或近似最优解。对目标函数形式要求低不需要计算梯度J的计算即使很复杂包含ODE仿真对遗传算法来说也只是一个“黑箱”函数。易于处理约束可以通过罚函数法将约束条件如医疗资源峰值不超过承载力融入目标函数。我们的实现流程编码将一个策略6个u值编码为一个染色体一个6维实数向量。初始化种群随机生成几百个策略向量。适应度评估对每个策略调用上面的seihrd_ode进行180天的疫情仿真然后根据仿真结果计算总死亡、总感染、经济成本最后算出综合成本J。J越小适应度越高。选择、交叉、变异按照适应度高低选择优秀个体进行交叉产生后代并以小概率变异生成新一代种群。迭代重复步骤3-4直到达到最大迭代次数或适应度收敛。我们在MATLAB中使用了Global Optimization Toolbox中的ga函数但也自己编写了一个简化版以更灵活地控制交叉变异算子。一个重要的调参经验种群大小和迭代次数要足够。我们最初用50的种群跑100代结果波动很大。后来将种群扩大到200迭代500代结果才稳定下来。计算量虽然大了跑一次优化可能需要几十分钟但结果的可靠性大大提升。4. 情景模拟与策略对比分析模型和算法跑通了但单独一个“最优解”的说服力是不够的。我们需要把它放在不同的情景下与一些基准策略进行对比才能体现其价值和鲁棒性。我们设计了四种情景4.1 情景一基准策略对比我们模拟了三种常见的预设策略与我们的优化策略进行对比策略A不干预u(t)0即完全躺平。结果感染人数呈指数爆发医疗系统迅速击穿死亡人数极高但经济成本最低仅计算疾病本身导致的损失。策略B全程严格防控u(t)0.8高强度干预。结果疫情被迅速压制感染和死亡人数很少但经济成本和社会成本极高且一旦放松可能反弹。策略C我们的优化策略算法给出的分段策略。结果显示它通常在疫情上升期采取较强干预u值较高快速压低峰值在疫情下降期和低位时适度放松u值降低以减轻经济负担。最终在死亡人数和经济成本间取得了更好的平衡。我们用一个综合表格来展示对比结果策略总死亡人数总感染人数经济成本相对值医疗峰值占用率综合成本 J不干预极高 (模拟值)80%人口100200%最高全程严格极低5%35050%较高优化策略较低~30%180~85%最低4.2 情景二医疗资源承载力变化的影响我们改变了H_max床位数量模拟医疗资源充足和匮乏两种情况。结果显示在资源匮乏地区优化策略会更“前倾”即在疫情早期就采取更严格的措施以避免后期医疗挤兑导致的死亡率飙升。这印证了“预防优于治疗”在资源有限时更为关键。4.3 情景三病毒传播力变化模拟变种我们将基础传播率β0提高了50%模拟传播力更强的变种。优化策略的动态调整能力显现出来它会自动延长高强度干预的时间并更积极地利用检测隔离手段通过调整τ和d以应对更强的传播压力。这说明了自适应策略的重要性。4.4 情景四疫苗接种率的影响我们加入了疫苗接种模块模拟了不同接种速度下的疫情发展。一个清晰的结论是高疫苗接种率是放松非药物干预NPI的前提。当接种率达到较高水平如70%以上时优化策略中的u(t)可以维持在更低的水平同时仍能控制住院和死亡人数实现“精准防控”与“社会生活正常化”的平衡。5. 模型局限性与实际应用思考任何模型都是现实的简化。在论文的最后一部分我们坦诚地讨论了模型的局限性这不仅是学术规范更是建模者应有的态度。同质化假设我们的模型假设人群是均匀混合的忽略了年龄结构、接触网络家庭、学校、工作场所、空间地理差异。在实际中老年人群的死亡风险更高学校的传播力更强。更精细的模型需要引入年龄分层或网络模型。参数不确定性许多参数如干预措施的有效系数η、经济成本系数α存在很大的不确定性。我们通过敏感性分析来应对逐一扰动这些参数观察输出结果如总死亡、最优策略的变化幅度。我们发现模型对病亡率δ和医疗承载力H_max最为敏感这提示在实际决策中准确评估医疗资源和疾病严重性是重中之重。行为反馈缺失模型假设民众对防控措施的依从性是固定的。现实中长期的严格防控可能导致“抗疫疲劳”依从性下降从而影响u(t)的实际效果。这是一个可以进一步复杂化的方向。“最优”的伦理与政治维度模型给出的“最优”是数学上的它依赖于我们设定的权重wi。而权重的选择本质上是一个涉及生命价值、社会公平、短期与长期利益的伦理和政治决策。模型的作用不是代替决策而是为决策者提供不同价值取向下的可能结果图谱帕累托前沿让决策在信息更充分的情况下进行。从竞赛到现实的启示这次建模经历让我深刻体会到面对像疫情这样的复杂系统问题不存在一劳永逸的“银弹”策略。一个有效的应对框架应该是动态的、基于数据的、多目标权衡的。它需要持续的监测实时数据更新模型参数、定期的评估将当前状况与模型预测对比、以及策略的灵活调整根据评估结果更新u(t)。我们的模型可以看作是这样一个决策支持系统的核心引擎原型。最后我想分享一点最深的感触数学建模的魅力不在于构建一个多么复杂、华丽的模型而在于用简洁的数学语言清晰地揭示出复杂现象背后的关键驱动因素和权衡关系。在这次竞赛中我们最大的收获不是那个“最优解”的具体数值而是通过建模过程系统地梳理了疫情应对中“传播-干预-资源-成本”之间的勾稽关系。这种系统思维和量化分析的能力远比解出一道题本身更为重要。
返回列表