SimPy 资源有 3 个,每个资源都有不同的特征

2024-04-22

我试图模拟这样一种情况:我们有 5 台机器,它们的情况是 1 -> 3 -> 1。即中间的3个并行运行以减少它们所花费的有效时间。

我可以通过创建值为 3 的 SimPy 资源来轻松模拟这一点,如下所示:

simpy.Resource(env, capacity=3)

然而,在我的情况下,这三种资源的操作方式略有不同,有时我希望能够使用其中任何一种(当我操作时)或预订特定的一种(当我想要清洁时)。基本上,这三台机器会以不同的速度慢慢地弄脏,运行速度也会变慢,我希望能够模拟这些,并且当一台机器太脏时也能进行清洁。

我尝试了几种模拟此方法的方法,但每次都会遇到问题。

第一个是当它预订资源时,它还预订了 3 个机器(A、B、C)全局标志之一和一个标志本身来告诉它正在使用哪台机器。这是可行的,但它并不干净,并且很难理解到处都有巨大的 if 语句所发生的情况。

第二种是将其建模为三个独立的资源,然后尝试等待并请求 3 台机器中的一台,如下所示:

reqA = A.res.request()
reqB = B.res.request()
reqC = C.res.request()

unitnumber = yield reqA | reqB | reqC
yield env.process(batch_op(env, name, machineA, machineB, machineC, unitnumber))

但这是行不通的,我无法找出最好的方法来产生一个选择。

模拟这种情况的最佳方法是什么?为了完整起见,我正在寻找以下内容:

  1. 请求 3 台机器中的任意一个
  2. 请求特定机器
  3. 让每台机器跟踪它的历史
  4. 每台机器的特性都不同。即犯规速度更快,但最初工作速度更快
  5. 根据性能或指标检测并安排清洁

这是我迄今为止尝试将每个资源建模为单独资源的最新版本的内容

class Machine(object):

    def __init__(self, env, cycletime, cleantime, k1foul, k2foul):
        self.env = env
        self.res = simpy.Resource(env, 1)

        self.cycletime = cycletime
        self.cleantime = cleantime
        self.k1foul = k1foul
        self.k2foul = k2foul
        self.batchessinceclean = 0

    def operate(self):
        self.cycletime = self.cycletime + self.k2foul * np.log(self.k1foul * self.batchessinceclean + 1)
        self.batchessinceclean += 1
        yield self.env.timeout(self.cycletime) 

    def clean(self):
        print('%s begin cleaning at %s' % (self.env.now))
        self.batchessinceclean = 0
        yield env.timeout(self.cleantime)
        print('%s finished cleaning at %s' % (self.env.now))

您应该尝试(过滤器)存储:

import simpy


def user(machine):
    m = yield machine.get()
    print(m)
    yield machine.put(m)

    m = yield machine.get(lambda m: m['id'] == 1)
    print(m)
    yield machine.put(m)

    m = yield machine.get(lambda m: m['health'] > 98)
    print(m)
    yield machine.put(m)


env = simpy.Environment()
machine = simpy.FilterStore(env, 3)
machine.put({'id': 0, 'health': 100})
machine.put({'id': 1, 'health': 95})
machine.put({'id': 2, 'health': 97.2})

env.process(user(machine))

env.run()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SimPy 资源有 3 个,每个资源都有不同的特征 的相关文章

  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • 处理 Python 行为测试框架中的异常

    我一直在考虑从鼻子转向行为测试 摩卡 柴等已经宠坏了我 到目前为止一切都很好 但除了以下之外 我似乎无法找出任何测试异常的方法 then It throws a KeyError exception def step impl contex
  • Python getstatusoutput 替换不返回完整输出

    我发现了这个很棒的替代品getstatusoutput Python 2 中的函数在 Unix 和 Windows 上同样有效 不过我觉得这个方法有问题output被构建 它只返回输出的最后一行 但我不明白为什么 任何帮助都是极好的 def
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • 使用 xlrd 打开 BytesIO (xlsx)

    我正在使用 Django 需要读取上传的 xlsx 文件的工作表和单元格 使用 xlrd 应该可以 但因为文件必须保留在内存中并且可能不会保存到我不知道如何继续的位置 本例中的起点是一个带有上传输入和提交按钮的网页 提交后 文件被捕获req
  • 如何在 Python 中解析和比较 ISO 8601 持续时间? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Python v2 库 它允许我解析和比较 ISO 8601 持续时间may处于不同单
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • Jupyter Notebook 找不到 Python 模块

    不知道发生了什么 但每当我使用 ipython 氢 原子 或 jupyter 笔记本时都找不到任何已安装的模块 我知道我安装了 pandas 但笔记本说找不到 我应该补充一点 当我正常运行脚本时 python script py 它确实导入
  • pip 列出活动 virtualenv 中的全局包

    将 pip 从 1 4 x 升级到 1 5 后pip freeze输出我的全局安装 系统 软件包的列表 而不是我的 virtualenv 中安装的软件包的列表 我尝试再次降级到 1 4 但这并不能解决我的问题 这有点类似于这个问题 http
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 为什么 Pickle 协议 4 中的 Pickle 文件是协议 3 中的两倍,而速度却没有任何提升?

    我正在测试 Python 3 4 我注意到 pickle 模块有一个新协议 因此 我对 2 个协议进行了基准测试 def test1 pickle3 open pickle3 wb for i in range 1000000 pickle
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • python import inside函数隐藏现有变量

    我在我正在处理的多子模块项目中遇到了一个奇怪的 UnboundLocalError 分配之前引用的局部变量 问题 并将其精简为这个片段 使用标准库中的日志记录模块 import logging def foo logging info fo
  • Python ImportError:无法导入名称 __init__.py

    我收到此错误 ImportError cannot import name life table from cdc life tables C Users tony OneDrive Documents Retirement retirem
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • Kivy - 单击按钮时编辑标签

    我希望 Button1 在单击时编辑标签 etykietka 但我不知道如何操作 你有什么想法吗 class Zastepstwa App def build self lista WebOps getList layout BoxLayo

随机推荐

  • 将一组对象分成一定数量的组的算法?

    例如 假设我有一个 2D 像素数组 换句话说 一个图像 我想将它们排列成组 以便组数加起来完美达到某个数字 例如 另一个 2D 中的总项目数 像素阵列 目前 我尝试使用比率和像素的组合 但这在完美整数比率 例如 1 2 1 3 1 4 等
  • 布局底部有两个按钮的滚动视图

    我想创建一个具有滚动视图的布局 在布局顶部的滚动视图内将有两个 Textview 在中心将有两个 Edittexts 在布局的底部将有两个按钮 但一切都将在主滚动视图下 我的要求的直观描述 我已经完成了一些编码 可以滚动顶部内容 但将底部的
  • ASP.NET 中的模拟和委托(使用 SQL Server)

    我编写了一个简单的 ASP NET 应用程序 它用作简单 MSSQL 数据库的前端 该应用程序可通过互联网访问 涉及两台物理服务器 一台也运行 MSQL Server 2008 R2 的 WS2008R2 Active Directory
  • 从S3读取pdf对象

    我正在尝试创建一个 lambda 函数 它将访问上传到 s3 的 pdf 表单 并删除输入到表单中的数据并将其发送到其他地方 当我可以在本地下载文件时 我就可以执行此操作 因此 下面的脚本可以工作并允许我将 pdf 中的数据读取到我的 pa
  • ASP .NET 5 - 将文件从节点模块复制到 wwwroot 的 grunt 任务

    我有一个简单的 ASP NET 5 空项目 安装了 npm 和 grunt 我使用 npm 安装了一些客户端库 目前位于我的 ASP NET 项目下的 node modules 目录中 我想将相关文件 例如 jquery min js 从n
  • Django 模型中的新字段不会显示在管理界面或模型表单中

    我在我的一个应用程序中创建了一个模型 该模型运行良好 但是 我需要添加一个新字段 我这样做了 并使用了manage py reset
  • Prolog 管线任务

    我有一项任务是在序言中制作一张简化的地铁地图 其中一部分要求制定一项规则来检查两个车站是否在同一条线上 我有一条规则 但它似乎不起作用 这就是我到目前为止所拥有的 adjacent nh lg central 4 adjacent lg o
  • Rails 如何处理模型中的错误和异常

    所以我使用 twitter 库解析 Rails 中 twitter api 的数据 有时 api 的响应可能是这样的 error Invalid parameter 模型会引发异常 现在我默默地捕获它并将 error message 放入日
  • 使用 raster() 包在 R 中导入 USDA 作物数据层 (GTIFF) 时出现问题

    我已经下载了美国农业部作物数据层 此处提供数据 注意大文件 http www nass usda gov research Cropland SARS1a htm http www nass usda gov research Cropla
  • 在 WAR 部署期间如何检查哪个类/jar 导致“无法从最终类继承”?

    我正在将 WAR 文件部署到 Windows 7 上的 Weblogic 12 1 2 服务器 也尝试过 Mac OS X 我遇到了一个例外 见下文 看起来其中一个类引用了某个父类的旧 新版本 该父类来自一些重复的 jar 我怎样才能找到哪
  • 来自另一个 js 函数的 JQuery 自动完成源

    我有一个 Jquery 自动完成函数 其源是根据另一个函数计算的request term所以我不知道如何设置源属性权利 自动完成 finder city autocomplete source function request var se
  • ActiveMQ 内存消耗通过屋顶(页面文件)...该怎么办?

    我们使用的是旧版本的 ActiveMQ 5 3 2 请参阅 ActiveMQ可靠吗 https stackoverflow com questions 4303610 is activemq reliable 我们取消了持久性 因为我们需要
  • 解决依赖关系: pub 已完成,退出代码为 1

    我有这个依赖冲突 flutter pub upgrade dry run Resolving dependencies Because image gt 2 1 14 lt 3 0 0 nullsafety 0 depends on arc
  • Swift 变量声明含义

    这两个声明有什么区别 哪一个更好 为什么 error some NSError 1 var newUserInfo NSObject NSObject if let tempUserInfo error userInfo as NSObje
  • 根据请求更改 PostgreSQL 日期语言

    我对 PostgreSQL 有点陌生 我正在尝试更改日期函数结果的区域设置 以获得以下结果to char my date Month 用另一种语言 这是我的一些设置 gt show lc time en US UTF 8 我在文档中发现可以
  • 如何使用 Perl 的 DBI 处理 unicode?

    My 美味到 wp perl 脚本 http edward de leau net wordpress 23 compatible wordpress delicious daily synchronization script 20071
  • 如何在 gnuplot 中设置时区?

    我有一个简单的 gnuplot 命令文件 set xdata time set timefmt s set format x H M 其中 x 时间戳列 结果 UTC 格式的时间 我可以更改 x 轴的本地时区吗 今天刚刚在文档中发现了这一点
  • VarName 未定义,请修复或添加 /*global VarName*/ Cloud9

    客观的 阻止 Cloud9 IDE 向我发出警告消息 背景 我正在使用 Cloud9 IDE 编写 JavaScript 无论何时使用另一个文件 同一文件夹中 中的类 我都会收到警告消息 VarName 未定义 请修复或添加 global
  • 使用 JWT 缺少授权标头

    我正在尝试设置 JSON Web 令牌以从移动应用程序与我的 php 后端进行通信 我可以请求一个令牌就好了 当我需要验证它 或向另一个端点发出请求 时 我使用以下格式设置授权标头 Bearer
  • SimPy 资源有 3 个,每个资源都有不同的特征

    我试图模拟这样一种情况 我们有 5 台机器 它们的情况是 1 gt 3 gt 1 即中间的3个并行运行以减少它们所花费的有效时间 我可以通过创建值为 3 的 SimPy 资源来轻松模拟这一点 如下所示 simpy Resource env