gpt4 book ai didi

python - SimPy Resource of 3 每个都有不同的特性

转载 作者:行者123 更新时间:2023-11-28 22:48:38 25 4
gpt4 key购买 nike

我正在尝试模拟一种情况,即我们有 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))

最佳答案

你应该尝试 (Filter)Store:

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()

关于python - SimPy Resource of 3 每个都有不同的特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com