
- 行动顺序
- 约束条件
START WITH A QUESTION
配送不只是找到最近的路
配送员需要先取到包裹,才能把包裹送给客户;收到签收信息后,才能关闭订单。即使道路畅通,行动顺序错了,任务仍然无法完成。规划关注的正是“哪些行动在当前条件下可做,做完之后会怎样”。
我们把配送缩成四个步骤:取件、检查地址、送达、签收。取件与检查地址可以先后互换,但送达必须等两者都完成。这比背诵固定流程更灵活,也更能解释为什么某一步暂时不能执行。
BUILD YOUR VOCABULARY
先把三个概念讲清楚
前置条件
行动开始前必须成立的事实。条件不满足时,不能只因为用户催促就假定它已经成立。
送达要求已经取件并确认地址。
行动效果
行动完成后新增或移除的事实。效果改变当前状态,让后续行动变得可执行。
取件后,状态新增“持有包裹”。
目标与约束
目标描述最终希望成立的事实;约束限制哪些计划可接受。可行计划不一定是耗时最少的计划。
目标是已签收;现实中还可能有时间窗与载重约束。
FOLLOW THE PROCESS
把原理放进完整流程
- 01
写出初始状态
明确包裹、地址与订单目前分别处于什么状态。
- 02
列出行动模型
为每个行动写前置条件和完成后的效果。
- 03
选择合法行动
仅在条件满足时推进,执行后更新状态。
- 04
验证目标
检查最终状态是否达到目标,同时保留失败与重试分支。
| 行动 | 前置条件 | 完成后 |
|---|---|---|
| 取件 | 尚未取件 | 已取件 |
| 确认地址 | 地址可查 | 地址已确认 |
| 送达 | 已取件且地址已确认 | 已送达 |
| 签收 | 已送达 | 已签收 |
CHANGE ONE THING & OBSERVE
亲手安排一次配送
选择下一步行动。条件未满足的按钮保持可查看,但会解释不能执行的原因;完成签收即达成目标。
尝试选一个行动。你也可以先点送达,查看缺少什么条件。
行动记录:尚未行动
KNOW THE LIMITS
哪些结论不能直接推出?
计划完成不等于现实完成
模拟器里点击取件直接更新状态,现实系统需要可靠的回执才能确认效果。
只追求最优,忘记可行
优化路线前,先确保依赖、资源与权限成立。看似更快但无法执行的计划没有意义。
READ, RUN & EXPLAIN
检查一个配送顺序是否合法
以下示例仅使用 Python 3 标准库,可复制到本地 Python 环境运行。先看每一行的作用,再修改一个输入观察结果;无需网络或密钥。
needs = {'取件': set(), '确认地址': set(), '送达': {'取件', '确认地址'}, '签收': {'送达'}}
done = set()
plan = ['取件', '确认地址', '送达', '签收']
for action in plan:
if not needs[action].issubset(done):
print('条件不足:' + action); break
done.add(action)
print('目标达成:', '签收' in done)复制或下载只获取本课示例,不会自动执行。
逐行解释(8 行)
- 第 1 行
needs = {'取件': set(), '确认地址': set(), '送达': {'取件', '确认地址'}, '签收': {'送达'}}每个行动对应一组前置行动;set() 是空集合,表示无前置行动。
- 第 2 行
done = set()记录已完成行动,最初为空。
- 第 3 行
plan = ['取件', '确认地址', '送达', '签收']给出准备验证的顺序,也可以故意把送达放到开头。
- 第 4 行
for action in plan:逐个验证行动。
- 第 5 行
if not needs[action].issubset(done):issubset 判断所有前置行动是否都已完成。
- 第 6 行
print('条件不足:' + action); break发现不合法行动时停止,不伪造完成状态。
- 第 7 行
done.add(action)条件满足后记入已完成集合。
- 第 8 行
print('目标达成:', '签收' in done)检查最终状态是否含签收。True 表示达成,False 表示未达成。
目标达成: True
CHECK YOUR UNDERSTANDING
换一个角度,检查自己是否理解
已回答 0 / 3 题 · 当前答对 0 题
TAKE IT WITH YOU
带走三个判断,再做一次迁移练习
- 行动由前置条件和效果定义。
- 先找可行计划,再比较时间与资源代价。
- 执行时要重新确认状态,并处理失败。
参考与延伸阅读
本课例子、代码和模拟数据为教学设计。以下一手文档用于延伸核对,不代表对本示例的认证。
- Python 官方教程:数据结构列表、集合与队列等示例语法参考。
- scikit-learn:模型评估评估指标与预测、决策的区别。
- IBM:检索增强生成检索与生成组合的进一步说明。
- NIST:AI 风险管理框架可靠性与风险管理的延伸阅读;不是特定项目的合规结论。