Пропустить до содержимого

Как использовать диаграмму окружения в Python?

[

Основы моделирования дискретных событий с использованием SimPy

Создание среды и ресурсов

В этом уроке мы будем изучать моделирование дискретных событий с использованием SimPy - мощного пакета для упрощения процесса моделирования. В этом уроке мы научимся создавать среду и ресурсы для нашей модели.

Шаг 1: Загрузка необходимых библиотек

Перед тем, как начать, необходимо установить библиотеку SimPy. Вы можете установить ее с помощью следующей команды:

!pip install simpy

После успешной установки мы можем импортировать необходимые библиотеки:

import simpy

Шаг 2: Создание среды

Создадим среду с помощью класса Environment из библиотеки SimPy:

env = simpy.Environment()

Среда env будет предоставлять нам возможность добавлять процессы и ресурсы в нашу модель.

Шаг 3: Создание ресурсов

Теперь давайте создадим ресурсы, которые будут использоваться в нашей модели. В нашем случае у нас есть несколько шагов в сборке самолета, каждый из которых имеет определенную вместимость слотов. Давайте создадим ресурсы для каждого шага с помощью класса Resource из библиотеки SimPy:

step_1_fuselage = simpy.Resource(env, capacity=3)
step_2_wings = simpy.Resource(env, capacity=2)
step_3_power_plant = simpy.Resource(env, capacity=2)
step_4_landing_gear = simpy.Resource(env, capacity=3)

У каждого ресурса есть определенная вместимость (capacity), которая определяет, сколько объектов одновременно могут использовать данный ресурс.

Шаг 4: Задание длительности процессов

Для каждого шага в нашей модели нам необходимо указать продолжительность процесса. Давайте создадим словарь с длительностями процессов для каждого шага:

process_durations = {
"step_1_fuselage": 20,
"step_2_wings": 8,
"step_3_power_plant": 10,
"step_4_landing_gear": 8
}

Шаг 5: Создание процессов

Теперь мы готовы создать процессы для нашей модели. Для каждого шага мы будем использовать функцию-генератор SimPy process():

def process(env, resource, duration):
yield env.timeout(duration)

Функция-генератор process() будет приостанавливать выполнение процесса на указанное количество времени, используя функцию env.timeout().

Шаг 6: Запуск процессов

Теперь мы можем добавлять процессы в нашу среду и запускать их. Давайте добавим процессы для каждого шага в нашу среду и запустим их:

for step, duration in process_durations.items():
env.process(process(env, resources[step], duration))

Шаг 7: Запуск модели

Наконец, мы можем запустить нашу модель, вызвав метод run() среды:

env.run()

Это активирует все процессы в среде и позволяет им выполняться в соответствии с заданными продолжительностями. После завершения выполнения модели мы можем проанализировать результаты и изучить детализацию каждого шага.

Заключение

На этом уроке мы познакомились с созданием среды и ресурсов для моделирования дискретных событий с использованием SimPy. Мы также научились задавать длительность процессов и запускать модель для анализа результатов. В следующем уроке мы будем изучать как комбинировать детерминированные и недетерминированные процессы в нашей модели.