1. 实验计划自动生成与调度工程导论

在材料、化学、生物、医药、半导体等实验密集型研发场景中,实验计划长期依赖人工排布:研究员根据经验列出待做实验,再与设备、样品、人员、时间窗口逐项对齐。当实验数量从几十个增长到几百上千个,且存在前后依赖、设备互斥、样品有效期、批次共用等约束时,人工排程很快变得不可维护。本课程讨论的实验计划自动生成与调度工程,正是把这类问题转化为可计算、可验证、可迭代的工程系统:由算法根据实验目标与约束自动生成候选实验集合,再在资源与时间维度上求解可行且较优的执行顺序。

课程定位:从实验意图到可执行排程

本课程不是单纯的算法课,也不是单纯的实验室信息管理课,而是位于两者之间的工程交叉层。它向上承接实验设计(DoE)与研发目标,向下对接设备、样品、人员与执行记录。核心交付物是一条可复现的链路:实验需求 → 约束建模 → 计划生成 → 调度求解 → 执行反馈 → 计划修正。学习者需要同时具备三方面能力:把实验语义翻译成约束与目标函数的能力、选择并实现求解策略的能力、以及用真实数据验证排程质量的能力。

核心问题:四个必须回答的工程问题

  • 生成什么:给定研究目标与参数空间,如何自动枚举或采样出有信息量的实验点,而不是穷举全部组合。
  • 受什么限制:设备容量、样品批次、人员资质、温湿度窗口、前后处理依赖等,如何统一表达为约束。
  • 按什么排序:在满足约束的前提下,以最短完工时间、最高设备利用率或最低样品消耗为目标进行调度。
  • 如何应对变化:设备故障、实验失败、优先级插入时,如何局部重排而非全量重算。

这四个问题分别对应生成、建模、求解与重调度四个技术环节,也是本课程后续章节的主线。

技术栈全景

从实现角度看,一套实验计划自动生成与调度系统通常由五层构成。下图给出各层之间的数据流与依赖关系,可作为后续动手实践的总体参照。

需求与实验设计层 研究目标 · 参数空间 · DoE 采样 · 实验点集合 约束建模层 设备容量 · 样品批次 · 人员资质 · 时间窗口 · 前后依赖 计划生成与调度求解层 启发式规则 · 约束规划(CP) · 混合整数规划(MIP) · 元启发式(GA/SA) 目标:最小完工时间 · 最高设备利用率 · 最低样品消耗 执行与反馈层 排程下发 · 执行记录 · 异常上报 · 实际耗时与结果回传 重调度反馈 数据与工具底座:实验数据库 · 设备台账 · 样品管理 · 排程引擎 · 可视化看板

各层之间并非单向瀑布:执行层的实际耗时、失败记录会回流到约束建模层,触发重调度;数据底座则为所有层提供统一的对象标识与状态查询。

典型应用场景

以下三类场景最能体现自动生成与调度的价值,也贯穿本课程的案例设计。

场景 典型约束 调度目标 关键难点
材料配方筛选 样品批次共用、反应釜容量、温度梯度窗口 最短完成全部配方验证 批次共用导致实验点不可独立排布
生物检测流水线 仪器互斥、试剂有效期、人员资质 最高仪器利用率 有效期约束使排程具有时效性
半导体工艺验证 前后工序依赖、洁净室等级、设备校准周期 满足交付节点的最小等待 依赖链长,局部扰动易引发连锁重排

学习路线与动手准备

建议按“先建模、再求解、后工程化”的顺序推进。第一阶段用一个小规模例子建立直觉:假设有 6 个实验点、2 台设备、每个实验点有 1 个前置实验,先手工写出约束,再用约束规划求解器验证。第二阶段引入目标函数与多目标权衡,比较不同求解策略的解质量与耗时。第三阶段加入执行反馈与重调度,形成完整闭环。

入门示例参数(合理假设,非实测):6 个实验点 E1–E6,设备 M1/M2,每个实验点加工时间 30–90 分钟,E2 依赖 E1,E5 依赖 E3,样品 S1 被 E1/E4 共用且总量仅够 2 次。可先判断该实例是否存在可行排程,再尝试最小化完工时间。

工具方面,Python 生态中的 OR-Tools(CP-SAT)适合约束规划入门,PuLP 或 Gurobi 可用于混合整数规划对比,DEAP 或 PyGAD 可用于元启发式实验。数据侧建议先用 CSV 或 SQLite 管理实验点、设备、依赖三类表,避免过早引入重型系统。

常见误区:把“自动生成”等同于“随机采样”,把“调度”等同于“按优先级排序”。前者忽略实验信息量,后者忽略资源冲突。本课程强调生成与调度必须联合建模,否则得到的计划在真实实验室中往往不可执行。

学完本课程,你应当能够针对一个具体的实验场景,独立完成约束梳理、模型选择、求解实现与结果验证,并能判断在什么条件下应放弃精确求解、改用启发式或局部重排。这正是实验计划自动生成与调度工程的核心工程能力。