SimPy是一个基于Python的离散事件系统。它采用并行技术处理各种活动组件,如消息、顾客、卡车、飞机等等。它为程序员提供了一系列工具,包括Processes(进程),三种资源工具(Resources,Levels和Stores),以及记录结果用的Monitors和Tallys。
SimPy中最基本的活动元素是进程(即Process类的实例),它们可以延迟一会,这个时间可以是固定或随机的,为了得到资源而排队,可以和其他进程或组件互动,或者被中断。比如在一个加油站的模拟系统,汽车(进程)将会为了等候可以使用的油泵而排队。
SimPy脚本中可以包含一个或多个进程和进程的创建者,每个进程执行它们的进程处理方法(以后简称为PEM(Process Execution Method)),该方法决定了进程的行为。所有PEM并行运行,并且可能其他进程的PEM进行交互。
资源工具有三种:Resources,Levels和Stores,每种类型都可以来模拟拥堵点,这时进程为了获得资源而必须排队等候。
Resources拥有多个可供进程使用的资源个体。如:一辆汽车在加油站等候一个可供使用的油泵,我们可以把汽车看作一个进程,加油站看作一个拥有多个油泵的资源。SimPy会自动把所有等候的汽车放在一个队列中,直到有可用的油泵。SimPy允许每辆汽车在加油的过程中独占油泵,其他车辆只有在它加完油后才能使用该油泵。
Levels用来模拟生产和消费过程中非常相似的物料。因此,一个物料的实时数量完全可以用一个标量来表述,可以是整形或浮点型。进程可以通过Level工具来对物料的实时数量来进行增减操作,如:加油站把汽油储存在大型的储油罐中,油轮将增加加油站储油量,而来加油的汽车则减少储油量。相对于Resource个体,进程不需要把物料归还给Level。
Stores用来模拟生成和消费中的个体项目。进程可以中可以项目列表中增加或删除项目。如:在医院或门诊部,外科手术过程(可以视作进程)需要一个特殊的人员和设备列表,该列表中的东西可以作为Store中的项目。这些想做可以用Python中的任何类型保存在Store中。特别地,它们可以是进程,在雇主/员工的模拟关系中处于被剥削的境况。
进程在下列两种情况下将会排队,Resource不能得到立即满足,或者当Level或Store已经满了,还需往里面加入物料时。队列,对Resource的请求或者对Level和Store的存取,都有SimPy自动控制。这些同样可以用了模拟当超时或有其他事情发生时的状况。
Monitors和Tallys用于实现统计的功能,如等候的时间和队列的长度。统计报表有简单的平均值、变量、按时间加权平均值或柱状图组成。它们可以从和Resources, Levels及Stores交互的队列中得到。如:我们可以收集在加油站等候的车辆的平均数量,以及车辆等候时间的分布情况。Tallys更新当前的统计作为模拟过程,但是不能保存完全的按时间连续的记录。Monitors可以保存完全的按时间连续的记录,作为日后模拟分析的依据。
在尝试是用SimPy直线,你必须会写Python代码。事实上,你不许懂得如何定义和使用类以及它们的实例。Python是免费的,并且在大多数平台上可用。这里不再赘述。你可以从Python的网站(www.python.org)获得更多的信息。SimPy需要Python 2.3或更新的版本。
分享到:
相关推荐
如何在 Windows 上安装 simpy: 安装 pip 要安装或升级 pip,请安全下载 get-pip.py。 来自 将此文件另存为“get-pip.py”(甚至在桌面上)。 然后从命令行或终端导航到您的桌面并运行以下命令(可能需要管理员...
【HT5-Simpy: 霍哈·德·特拉巴霍5】是一个基于Python的项目,可能是一个模拟或游戏开发框架,虽然具体细节在提供的信息中并未明确。"霍哈·特拉巴霍"可能是一个西班牙语的术语或者项目代号,暗示着这个项目可能具有...
SimPy 是一个基于 Python 的进程基(process-based)的并发模拟库。它允许你通过定义资源、事件和过程来创建复杂的模拟模型。在SimPy中,"过程"是模拟的基本执行单元,它们可以并发运行,并通过事件进行同步。这个...
SimPy是一个强大的开源Python仿真库,它为各种复杂的系统提供了基于事件的建模和仿真工具。这个名为"simpy-examples"的项目包含了SimPy库的一些应用实例,可以帮助用户理解和学习如何在实际问题中使用SimPy进行仿真...
我遇到了simpy(一个模拟框架)。那时,我编写了一个测试以验证simpy的功能。今天,凭经验,我看了看脚本并在Pycharm中运行,它可以正常工作! 所以我把它放到github中。当然,这只是一个模拟。
资源分类:Python库 所属语言:Python 资源全名:simpy.io-0.2.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
SimPy 仿真.zipPython 语言完成的 SimPy 仿真.zipPython 语言完成的 SimPy 仿真.zipPython 语言完成的 SimPy 仿真.zipPython 语言完成的 SimPy 仿真.zipPython 语言完成的 SimPy 仿真.zipPython 语言完成的 SimPy ...
### Python Simpy 学习知识点概述 #### 一、离散事件仿真(DES)与SimPy简介 **离散事件仿真(DES)**是一种通过模拟系统中的离散事件来研究系统行为的方法。与连续系统仿真不同,离散事件仿真关注的是在特定时间...
为 simpy 实现一个简单的事件代理,利用命名通道来分离流量。 目的 Simpy 包含一个过滤管道概念,需要为管道提供过滤器。 这个概念消除了多次检查过滤器的需要,因为订阅按频道或主题分组在一起。 每当发布主题时,...
"使用simpy模拟FQ和WFQ"这个主题涉及到的是如何使用SimPy,一个Python的仿真库,来模拟两种不同的队列调度算法:公平队列(Fair Queueing, FQ)和加权公平队列(Weighted Fair Queuing, WFQ)。这两种算法都是为了在...
德斯莫德 desmod软件包提供了一个Python环境,用于组成离散事件模拟模块。 出色的软件包提供了离散事件仿真内核。 Desmod提供了其他功能,这些功能可用于组成,监视,配置和模拟任意复杂的模型。...
python使用simpy仿真模拟MM1K(M/M/1/K)队列。目前看是csdn中唯一一个用python写的代码,个人写的,不用担心抄袭问题
1. SimPy:这是一个用于建模和仿真离散事件系统的Python库。它支持过程式、面向对象和函数式编程风格,非常适合模拟具有并发行为的系统,如ALOHA协议中的用户竞争信道。 2. SciPy:SciPy是Python科学计算的核心库,...
《使用Python进行模拟:以simpy_hospital为例分析电晕病患住院情况及封锁策略》 在当前全球公共卫生形势下,电晕病毒的传播对社会造成了深远影响,尤其是在医疗资源分配和疾病防控策略方面。Python作为一种强大的...
离线安装包,测试可用。使用 pip install [完整包名] 进行安装
SimPy是一个基于Python的开源离散事件模拟库,它为创建复杂的系统模型提供了一个强大的框架。这个名为"SimPy的离散事件模拟建模框架_Python_Makefile_下载.zip"的压缩包很可能包含了SimPy项目的源代码、文档以及可能...
SimPy是一个开源的Python仿真库,它用于构建和运行离散事件系统模型。在IT行业中,离散事件仿真被广泛应用于各种场景,如网络流量模拟、操作系统行为分析、物流系统设计、软件性能测试等。本篇文章将深入探讨如何...
SimPy 仿真工具包中的官方例程的建模改进(根据作业要求完成),以及一个机场仿真的代码项目。旨在锻炼学生独立思考的能力,培养项目业务能力和创新思维。 项目包含如下内容: 对 SimPy 用户手册中原始的示例代码中...
Simpy是一个用Python编写的开源离散事件模拟库,它为创建和分析这类系统提供了简洁而灵活的框架。在给定的资源包中,我们关注的是如何应用Simpy来模拟制造环境,并结合深度强化学习(DRL)策略进行调度优化。 Simpy的...
### 基于Simpy的部队装备维修仿真系统设计与实现 #### 一、引言 随着现代军事技术的发展,装备维修保障已成为军队作战能力的关键因素之一。在复杂多变的战场环境中,如何高效地组织装备维修保障工作,提高装备的...