Дискретно-событийное моделирование на Python
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
Описание природной или антропогенной системы с помощью математических концепций и языка.
Модели классифицируются по типу:
Математические модели бывают простыми и сложными.
Джордж Бокс: «Все модели ошибочны, но некоторые полезны.»

Модель стока реки

Модель прогнозирует сток реки для гидрологической станции Гоая (Китай).
Прогноз основан на данных об осадках, которые используются как входные данные модели.
Другие примеры
Прогнозирование инфляции

Другие примеры
# Define model parameters
processes = {"process_1": 5,
"process_2": 2,
"process_3": 3}
# Simulation period
simulation_time = 365
# Run model
discrete_model(processes, simulation_time)
def discrete_model(processes, simulation_time): # 1) Run end-condition while (time < simulation_time): process_names = list(processes.keys())# 2) Loop over all processes for p in range(len(process_names)): process_name_p = process_names[p]# 3) Account for effect of each process time += processes[process_name_p]
Пример вывода дискретно-событийной модели для производственного процесса
=> START OF SIMULATION (Time = 0 days)
Time = 6.00 days | Process Complete: Transport of raw material
Time = 9.00 days | Process Complete: Building components
Time = 11.00 days | Process Complete: Assembling parts
Time = 14.00 days | Process Complete: Selling product
=> COMPLETED: Supply-Chain cycle #1 | Time = 15.5 days
Time = 21.50 days | Process Complete: Transport raw material
Time = 24.50 days | Process Complete: Building components
Time = 26.50 days | Process Complete: Assembling parts
Time = 29.50 days | Process Complete: Selling product
=> COMPLETED: Supply-Chain cycle #2 | Time = 31.0 days
Графическая визуализация результатов модели помогает выявлять закономерности и переломные точки в системе.
Визуализацию следует адаптировать к целям моделирования.
Доступно множество полезных пакетов для визуализации: matplotlib, seaborn, plotly.

Примеры
y) относительно значений времени (x)plt.plot(x, y, color='green', marker='o',
markersize=12, linestyle='dashed',
linewidth=2)
x на интервалы и подсчёта значений в каждом интервалеplt.hist(x, 50, density=True,
facecolor='g', alpha=0.75)
Дискретно-событийное моделирование на Python