1. 实验计划自动生成与调度工程导论
在材料、化学、生物、医药、半导体等实验密集型研发场景中,实验计划长期依赖人工排布:研究员根据经验列出待做实验,再与设备、样品、人员、时间窗口逐项对齐。当实验数量从几十个增长到几百上千个,且存在前后依赖、设备互斥、样品有效期、批次共用等约束时,人工排程很快变得不可维护。本课程讨论的实验计划自动生成与调度工程,正是把这类问题转化为可计算、可验证、可迭代的工程系统:由算法根据实验目标与约束自动生成候选实验集合,再在资源与时间维度上求解可行且较优的执行顺序。
课程定位:从实验意图到可执行排程
本课程不是单纯的算法课,也不是单纯的实验室信息管理课,而是位于两者之间的工程交叉层。它向上承接实验设计(DoE)与研发目标,向下对接设备、样品、人员与执行记录。核心交付物是一条可复现的链路:实验需求 → 约束建模 → 计划生成 → 调度求解 → 执行反馈 → 计划修正。学习者需要同时具备三方面能力:把实验语义翻译成约束与目标函数的能力、选择并实现求解策略的能力、以及用真实数据验证排程质量的能力。
核心问题:四个必须回答的工程问题
- 生成什么:给定研究目标与参数空间,如何自动枚举或采样出有信息量的实验点,而不是穷举全部组合。
- 受什么限制:设备容量、样品批次、人员资质、温湿度窗口、前后处理依赖等,如何统一表达为约束。
- 按什么排序:在满足约束的前提下,以最短完工时间、最高设备利用率或最低样品消耗为目标进行调度。
- 如何应对变化:设备故障、实验失败、优先级插入时,如何局部重排而非全量重算。
这四个问题分别对应生成、建模、求解与重调度四个技术环节,也是本课程后续章节的主线。
技术栈全景
从实现角度看,一套实验计划自动生成与调度系统通常由五层构成。下图给出各层之间的数据流与依赖关系,可作为后续动手实践的总体参照。
各层之间并非单向瀑布:执行层的实际耗时、失败记录会回流到约束建模层,触发重调度;数据底座则为所有层提供统一的对象标识与状态查询。
典型应用场景
以下三类场景最能体现自动生成与调度的价值,也贯穿本课程的案例设计。
| 场景 | 典型约束 | 调度目标 | 关键难点 |
|---|---|---|---|
| 材料配方筛选 | 样品批次共用、反应釜容量、温度梯度窗口 | 最短完成全部配方验证 | 批次共用导致实验点不可独立排布 |
| 生物检测流水线 | 仪器互斥、试剂有效期、人员资质 | 最高仪器利用率 | 有效期约束使排程具有时效性 |
| 半导体工艺验证 | 前后工序依赖、洁净室等级、设备校准周期 | 满足交付节点的最小等待 | 依赖链长,局部扰动易引发连锁重排 |
学习路线与动手准备
建议按“先建模、再求解、后工程化”的顺序推进。第一阶段用一个小规模例子建立直觉:假设有 6 个实验点、2 台设备、每个实验点有 1 个前置实验,先手工写出约束,再用约束规划求解器验证。第二阶段引入目标函数与多目标权衡,比较不同求解策略的解质量与耗时。第三阶段加入执行反馈与重调度,形成完整闭环。
工具方面,Python 生态中的 OR-Tools(CP-SAT)适合约束规划入门,PuLP 或 Gurobi 可用于混合整数规划对比,DEAP 或 PyGAD 可用于元启发式实验。数据侧建议先用 CSV 或 SQLite 管理实验点、设备、依赖三类表,避免过早引入重型系统。
学完本课程,你应当能够针对一个具体的实验场景,独立完成约束梳理、模型选择、求解实现与结果验证,并能判断在什么条件下应放弃精确求解、改用启发式或局部重排。这正是实验计划自动生成与调度工程的核心工程能力。