Python 中的离散事件模拟
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
系统优化
人工主导流程
识别对系统产出影响更大的工序
蒙特卡罗采样
目标函数
描述产出目标的数学表达式
为仿真情景打分
示例
合计:100%
Search & Stop:运行不同模型配置,满足条件即停止
while total_duration < 24:
model_to_run()
Score & Rank:基于加权标准为仿真结果打分
for i in range(num_runs):
out_1, out_2 = model_to_run(i)
scores[i] = 0.3 * out_1 + 0.7 * out_2
示例
scenario_num = 0
while scenario_num == 0 or total_duration[s] > 40:
scenario_num += 1
env = simpy.Environment()
env.process(manufacturing_proc(env))
env.run()
plot_results()

示例:制造业
涉及多项串行任务(或工序),如汽车生产线。
def objective_function_calc():
score_objfunc = np.ones(num_scenarios)
for s in range(num_scenarios):
for p in range(len(processes)):
score_objfunc[s] += (
processes[p]["duration_hours"]
* processes[p]["score_weight"])
得分
"红":低分;"蓝":高分

排名
按得分对仿真运行排名

搜索并停止

"蓝色"线满足"停止"条件
"最佳"仿真分解:
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)"工序 1"对达成目标最关键
得分
目标:得分越低 = 时长越短

排名
"工序 1"对达成目标最关键

Python 中的离散事件模拟