Python-simpy的仿真模拟

Simpy包

基本概念

Simpy-制造仿真:SimPy 是离散事件驱动的仿真库
仿真技术是再现系统动态行为、分析系统配置与参数是否合理、预测瓶颈工序、判断系统性能是否满足规定要求、为制造系统的设计和运行提供决策支持。所有活动部件,例如车辆、顾客,、即便是信息,都可以用 process (进程) 来模拟。这些 process 存放在 environment (环境) 。所有 process 之间,以及与environment 之间的互动,通过 event (事件) 来进行.
process <–>event<–>environment
process 表达为 generators (生成器), 构建event(事件)并通过 yield 语句抛出事件。
当一个进程抛出事件,进程会被暂停,直到事件被激活(triggered)。多个进程可以等待同一个事件。 SimPy 会按照这些进程抛出的事件激活的先后, 来恢复进程。其实中最重要的一类事件是 Timeout, 这类事件允许一段时间后再被激活, 用来表达一个进程休眠或者保持当前的状态持续指定的一段时间。这类事件通过 Environment.timeout来调用。

Environment

模拟环境管理模拟时间以及事件的调度和处理。它还提供了单步执行或执行模拟的方法。正常模拟使用Environment.
Environment常用的方法
simpy.Environment.process - 添加仿真进程
simpy.Environment.event - 创建事件
simpy.Environment.timeout - 提供延时(timeout)事件
simpy.Environment.until - 仿真结束的条件(时间或事件)
simpy.Environment.run - 仿真启动

例子1-汽车启停模拟

import simpy
def car(env):
    while True:
        print('Start parking at %d' % env.now)
        parking_duration=5
        yield env.timeout(parking_duration) # 进程延时 5s,停五秒
        print('Start driving at %d' % env.now)
        trip_duration = 2
        yield env.timeout(trip_duration)  # yield抛出事件,2s,开两秒
# 仿真启动
env = simpy.Environment()   # 实例化环境
env.process(car(env))   # 添加汽车进程
env.run(until=15)   # 设定仿真结束条件, 这里是 15s 后停止

在该例子中,simpy.Environment()来实例化环境变量,env.process(car(env)) 在环境中添加汽车进程,env.run(until=15) 设定仿真结束条件, 这里是 15s 后停止在这里插入代码片
在这里插入图片描述

例子2-汽车充电模拟

from random import seed, randint
seed(23)
import  simpy
class EV:
    def __init__(self,env):
        self.env=env
        #两个主进程
        self.drive_proc=env.process(self.drive(env))
        self.bat_ctrl_proc = env.process(self.bat_ctrl(env))
        # 需要抛出的事件
  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值