TheraObject:可微、等变、博弈驱动的个体化诊疗决策框架(中)
6. 博弈参与者与目标函数诊疗决策可以被看作一个多主体动态博弈。TheraObject.game模块将患者、疾病、治疗方、环境和制度约束抽象为参与者或约束源。每个参与者拥有自己的状态关注区域、控制变量、目标函数和可选动态约束。6.1 Player 抽象classPlayer:def__init__(self,name,state_index,control_dim,cost_function,dynamic_constraint=None):self.name=name self.state_slice=slice(*state_index)ifstate_indexisnotNoneelseNoneself.control_dim=control_dim self.cost=cost_function self.constraint=dynamic_constraint这里的cost_function是一个从状态轨迹和控制轨迹到标量的函数。为了统一最大化和最小化,框架内部通常将问题转化为最小化成本。若某个参与者原本追求效用最大化,则可取负效用作为成本。6.2 患者玩家患者玩家代表患者利益与价值偏好。其目标函数通常综合生存收益、生活质量、毒性、经济负担、住院时间和不确定性风险。例如:defpatient_cost(state_traj,control_traj,preference):survival_risk=state_traj[:,0]qol_loss=state_traj[:,1]toxicity=state_traj[:,2]financial_burden=state_traj[:,3]returnjnp.trapz(preference[0]*survival_risk+preference[1]*qol_loss+preference[2]*toxicity**2+preference[3]*financial_burden,dx=dt)患者目标函数不应被简单理解为“患者自己控制治疗”。在多数医学场景中,患者不是直接控制给药剂量的行动者,但患者偏好会改变治疗方的目标函数权重,也会在共享决策中限制可接受策略集合。6.3 疾病玩家疾病玩家是TheraObject区别于普通控制模型的重要抽象。疾病并非真的具有意识,而是作为自然选择、耐药演化和病理扩增的形式化代表。它的“目标”可以定义为最大化肿瘤负荷、耐药比例或逃逸能力。defdisease_fitness_cost(state_traj,control_traj):tumor_volume=state_traj[:,tumor_idx]resistant_fraction=state_traj[:,resistant_idx]immune_escape=state_traj[:,escape_idx]# 疾病希望这些量增大,因此治疗方最小化时可用负号表达对抗return-jnp.trapz(tumor_volume+0.5*resistant_fraction+0.2*immune_escape,dx=dt)在极大极小形式中,治疗方选择策略最小化患者风险,而疾病或环境选择最坏响应最大化风险。这种设定可以提高策略对耐药和扰动的稳健性。6.4 治疗方玩家治疗方玩家代表医生、治疗方案或医疗系统。其目标不是简单最大化药物强度,而是在疗效、毒性、患者偏好和伦理约束之间寻求平衡。治疗方拥有控制变量,例如剂量、给药时间、联合用药比例、检测频率或切换治疗时机。deftherapy_cost(state_traj,control_traj,weights):tumor_burden=state_traj[:,tumor_idx]toxicity=state_traj[:,toxicity_idx]dose=control_traj[:,dose_idx]smoothness=jnp.sum((control_traj[1:]-control_traj[:-1])**2)returnjnp.trapz(weights[0]*tumor_burden+weights[1]*toxicity**2+weights