先看看示例
作者提供的示例,实际效果取决于你的输入和使用工具。
输入
两人同在0分钟到达;一个窗口;每人服务3分钟;仿真到7分钟。
输出
编辑示例 · 未运行
import simpy
env = simpy.Environment()
server = simpy.Resource(env, capacity=1)
waits = []
def visit():
arrived = env.now
with server.request() as request:
yield request
waits.append(env.now - arrived)
yield env.timeout(3)
for _ in range(2):
env.process(visit())
env.run(until=7)手算核对目标:等待时间应为 [0, 3]
方法说明
把流程建模为离散事件,比较不同资源配置下的等待时间、吞吐量和拥堵情况。
具体任务
模拟窗口排队:用到达、服务与资源约束观察等待形成的过程。
比较资源配置:在同一假设下比较窗口数量,并记录未完成顾客和重复实验。
必需材料
到达与服务规则、时间单位
资源容量和终止时刻
可选材料
实测分布
随机种子与精度目标
使用门槛
了解离散事件和 Python 生成器;能解释模型省略了什么。
这个 Skill 额外提供的方法
把排队规则显式写进模型,便于检查资源竞争而不靠平均值猜测。
编辑示例(未运行)
两个顾客使用一个窗口
任务:编写一个有停止边界的最小排队模型
输入:
两人同在0分钟到达;一个窗口;每人服务3分钟;仿真到7分钟。
结果片段:
```python
import simpy
env = simpy.Environment()
server = simpy.Resource(env, capacity=1)
waits = []
def visit():
arrived = env.now
with server.request() as request:
yield request
waits.append(env.now - arrived)
yield env.timeout(3)
for _ in range(2):
env.process(visit())
env.run(until=7)
```
手算核对目标:等待时间应为 [0, 3]
以下为官方编辑构造的示例,未运行上游 Skill。代码为编辑样例未执行;确定性小模型便于先验证排队顺序,再增加随机性。
首次任务
任务:模拟窗口排队。
任务重点:用到达、服务与资源约束观察等待形成的过程。
必需材料:
- 到达与服务规则、时间单位:[填写或粘贴我的材料;未具备则说明]
- 资源容量和终止时刻:[填写或粘贴我的材料;未具备则说明]
可选补充:
- 实测分布:[可填写,未提供不应假定存在]
- 随机种子与精度目标:[可填写,未提供不应假定存在]
请交付适配现有环境的代码或配置、必要说明及验证办法。仅依据这些材料处理;缺少决定结果的信息时先说明缺口,不补造事实。未执行的检查、修改或外部操作明确标为未执行。
使用前提:了解离散事件和 Python 生成器;能解释模型省略了什么。
处理边界:仿真不能替代真实业务验证;必须限制时间、实体数与重复次数,统计推断需独立重复实验
验收要求:
1. 时间单位和终止边界明确。
2. 完成数与未完成数能对账。
3. 重复实验与种子可复现。
验收方法
时间单位和终止边界明确
完成数与未完成数能对账
重复实验与种子可复现
依赖与准备
Python 与 SimPy;固定源说明的配套 CLI 还要求 Python 3.10+、uv 和指定 SimPy 版本。
使用边界
仿真不能替代真实业务验证
必须限制时间、实体数与重复次数,统计推断需独立重复实验
排错
程序一直运行:检查无限到达循环并设实体数和运行时限。
均值看起来过于稳定:避免把同一轮相关顾客当成独立实验。
固定来源
https://github.com/K-Dense-AI/scientific-agent-skills/blob/065b734670d7d990627dbc06a05b5a99be33f1f1/skills/simpy/SKILL.md