Как мне смоделировать систему с несколькими состояниями (машина, имеющая много состояний: работает, не работает, не работает хорошо), используя simpy с python? - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь смоделировать машину, имеющую много состояний, подобно цепочке Маркова, но переход между состояниями является случайной величиной (время перехода из одного состояния в другое). Я пытаюсь сделать это на Python с помощью Simpy, но я честно потерял. если кто-то использует Simpy и есть идея, как поступить, я был бы благодарен! заранее спасибо

1 Ответ

0 голосов
/ 26 ноября 2018

Итак, вы хотите, чтобы ваша машина переключалась случайным образом между состояниями, а затем оставалась в этом определенном состоянии в течение некоторого времени (также случайного или у каждого состояния есть определенное время ожидания?)?Может быть, что-то вроде кода ниже будет работать для вас?Вы присваиваете номер каждому состоянию (state_dic) и время ожидания для каждого состояния (state_time_dic, это также может быть случайное число), а затем в функции вы видите, что переменная i генерируется случайным образом.Вы можете пройти через этот цикл так часто, как вам нравится.

    state_dic= {1: "state 1", 2: "state 2", 3: "state 3"}
    state_time_dic = {"state 1": 5, "state 2": 10, "state 3": 8}

    def mulit_state_system(resource):
        i = random.randint(1,4)
        if i in state_dic.keys:
        state = state_dic[i]
        with resource.request as req:
            yield req
            yield timeout(state_time_dic[state])

Я не тестировал код.Это просто чтобы дать вам идею.

...