Simpy: добавить процесс во время выполнения

Есть ли способ добавить процесс SimPy в среду SimPy, когда последняя уже запущена? Контекст выглядит следующим образом:

Я успешно реализовал сеть очередей для системы трафика с помощью SimPy, где автомобили распределяются по ссылкам. Пункт отправления и пункт назначения каждой машины известны во время «компиляции», как и время их отправления. Таким образом, моделирование описывает, как они перемещаются по сети, где скорость распространения зависит от преобладающих плотностей. Если на звене много машин, их скорость уменьшается, как в реальности. Если на линии слишком много автомобилей, они не смогут въехать, пока не уедет другая машина и т. Д.

Теперь мой вопрос: могу ли я удовлетворить спрос на трафик во время выполнения? Представьте, что есть всеобъемлющий процесс, который генерирует автомобили в реальном времени, когда моя симуляция SimPy уже запущена. Как я мог это сделать? Есть ли уроки или примеры?

Любая помощь или комментарий приветствуются.


person Unis    schedule 16.11.2016    source источник


Ответы (1)


Мы потратили много времени и сил на документацию. Пожалуйста, прочтите это:

https://simpy.readthedocs.io/en/latest/topical_guides/events.html#processes-are-events-too https://simpy.readthedocs.io/en/latest/topical_guides/process_interaction.html https://simpy.readthedocs.io/en/latest/examples/index.html

person Stefan Scherfke    schedule 16.11.2016
comment
Привет, Стефан, Большое спасибо за ответ. Я читал руководство несколько раз, включая примеры. Как я уже писал, у меня есть полностью функциональный код, в котором все автомобили добавляются в среду с помощью env.process () перед вызовом env.run (). Мой вопрос выше: что происходит в случае, когда процесс просто еще не существует в то время, когда вызывается env.run ()? Могу ли я добавить процесс позже (например, когда автомобиль создается внешним симулятором), и будет ли он учтен в оставшейся части симуляции? Я не видел такого примера. Еще раз спасибо за ваши дальнейшие комментарии. - person Unis; 16.11.2016
comment
Не знаю, видели ли вы мой комментарий, потому что я забыл отметить вас. Если у вас есть дополнительные комментарии по этому поводу, дайте мне знать. Заранее большое спасибо. - person Unis; 18.11.2016
comment
Вы можете запускать новые процессы с помощью env.process () в любое время, независимо от того, вызывается ли env.run () в данный момент или нет. - person Stefan Scherfke; 20.11.2016
comment
Вы должны быть осторожны при добавлении событий / процессов, запускаемых извне в Simpy. Если время его выполнения предшествует следующему событию, среда ожидает, время не будет работать должным образом. - person Aronstef; 24.07.2019