小编Ala*_*arr的帖子

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

我试图模拟我们有 5 台机器出现在 1 -> 3 -> 1 情况下的情况。即中间的3个并行操作以减少它们所花费的有效时间。

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

simpy.Resource(env, capacity=3)
Run Code Online (Sandbox Code Playgroud)

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

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

第一个是当它预订资源时,它也预订了 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))
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我无法找出最好的方法来看待产生一个选择。

模拟这种情况的最佳方法是什么。为了完整起见,这是我要找的:

  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 …
Run Code Online (Sandbox Code Playgroud)

python simpy

3
推荐指数
1
解决办法
1447
查看次数

在列相同的pandas数据框中查找索引值

我有一个包含多列的数据框,其中索引是时间戳,另外三个是阶段编号指示符,其余的只是数据.我想要做的是找到三个指标列属于同一阶段类型,其中包含一个数字列表.

So my data frame looks like this:
Index                    PhaseA   PhaseB   PhaseC   DataCol
01/07/2013  00:00:00     400      415      425      1.2
01/07/2013  00:01:00     415      420      410      1.2
01/07/2013  00:02:00     415      423      415      1.2
01/07/2013  00:03:00     415      423      420      1.2
01/07/2013  00:04:00     415      423      423      1.2
01/07/2013  00:05:00     415      423      425      1.2
Run Code Online (Sandbox Code Playgroud)

因此,在这个简化的情况下,我正在寻找所有三个相位数值是415,423,427和432的值.这意味着我想在这个实例中得到的行是2分钟和4分钟.

我最好是寻找这个已经发生的日期和时间,以便我可以使用其他数据列进一步调查它.此外,这不太可能只是我必须这样做的时间,所以能够改变我感兴趣的数字和列将是好的.

到目前为止,我已经设法使用类似于以下代码:

df[ (df["PhaseA"] == (415))]

and then for multiple ones:

df[(df["PhaseA"] == (415))|(df["PhaseA"] == (420))]
Run Code Online (Sandbox Code Playgroud)

但是这会很快变得非常混乱,以后很难修改.

任何帮助将不胜感激,因为我对python和编程一般都比较新.

python dataframe pandas

2
推荐指数
1
解决办法
4782
查看次数

标签 统计

python ×2

dataframe ×1

pandas ×1

simpy ×1