Список литературы
1. Шелковников Евгений Юрьевич, Шляхтин Константин Алексеевич, Шелковникова Татьяна Евгеньевна, Егоров Станислав Феликсович ПРИМЕНЕНИЕ НЕЙРОННОЙ СЕТИ АРХИТЕКТУРЫ U-Net ДЛЯ СЕГМЕНТАЦИИ СТМ-ИЗОБРАЖЕНИЙ // Химическая физика и мезоскопия. 2019. №2. URL: https://cyberleninka.ru/article/n/primenenie-nei-ronnoi-seti-arhitektury-u-net-dlya-segmentatsii-stm-izobrazhenii (дата обращения: 13.05.2022).
2. Горелов Антон Игоревич Обучение сети yolo для распознавания отходов в городской среде // Вестник науки и образования. 2019. №9-4 (63). URL: https://cyberleninka.ru/article/n7obuchenie-seti-yolo-dlya-raspoznavaniya-othodov-v-gorodskoy-srede (дата обращения: 13.05.2022).
3. Друки Алексей Алексеевич, Спицын Владимир Григорьевич, Болотова Юлия Александровна, Башлыков Артём Андреевич Семантическая сегментация данных дистанционного зондирования Земли при помощи нейросетевых алгоритмов // Известия ТПУ. 2018. №1. URL: https://cyberleninka.ru/article/n/semanticheskaya-segmentatsiya-dannyh-distantsionnogo-zondirovaniya-zemli-pri-pomoschi-neyrosetevyh-algoritmov (дата обращения: 13.05.2022).
4. Айзенберг Игорь Наумович Некоторые алгоритмы обработки изображений и их реализация на нейросетях // КО. 1997. №17. URL: https://cyberleninka.ru/artide/n/nekotorye-algoritmy-obrabotki-izobrazheniy-i-ih-realizatsiya-na-neyrosetyah (дата обращения: 13.05.2022).
© Е.М. Бадика, Д.А. Зырянов, С.Г. Бабчинецкий 2022.
УДК 004.021
ИСПОЛЬЗОВАНИЕ ЯЗЫКА ПРОГРАММИРОВАНИЯ PYTHON В ИМИТАЦИОННОМ
МОДЕЛИРОВАНИИ
Бадика Егор Максимович, Зырянов Дмитрий Александрович Badika Egor Maksimovich, Zyryanov Dmitry Aleksandrovich
Студент Student
Санкт-Петербургский государственный университет аэрокосмического приборостроения
Saint-Petersburg State University of Aerospace Instrumentation Бабчинецкий Сергей Геннадьевич Babchinetsky Sergey Gennadievich
Магистрант Master's student
Санкт-Петербургский государственный университет аэрокосмического приборостроения
Saint-Petersburg State University of Aerospace Instrumentation
USING THE PYTHON PROGRAMMING LANGUAGE IN SIMULATION MODELING
Аннотация: В данной статье рассматривается применение языка программирования Python в имитационном моделировании. Приведены примеры сфер, где используются данные модели, а также рассмотрены на примере простые листинги программ, использующиеся для аналитики данных и имитационного моделирования. Дан прогноз о будущем развитии систем имитационного моделирования.
Abstract: This article discusses the use of the Python programming language in simulation modeling. Examples of areas where these models are used are given, as well as simple listings of programs used for data analytics and simulation modeling are considered by example. The forecast about the future development of simulation modeling systems is given.
Ключевые слова: Имитационное моделирование, управление производством, выбор надёжного варианта, Puthon, анализ данных, программирование.
Keywords: Simulation modeling, production management, choosing a reliable option, Python, data analysis, programming.
Введение
Имитационное моделирование в наши дни набирает большую популярность, практически все крупные сферы жизни использую данный метод, с помощью которого организуют свою задачу. Применение имитационных моделей можно заметить в экономическом секторе, повседневной жизни (организация работы светофоров, для оптимизации движения), в IT секторе и промышленности.
Каждый год появляются новые и улучшаются старые методы, с помощью которых происходит имитационное моделирование. В данной статье будут рассмотрены способы анализа данных и основные методы из имитационного моделирования на языке программирования Python
Одним из самых простых способов реализации имитационной модели является язык программирования Python, содержащий большое количество библиотек, предназначенных для аналитики данных методами математической статистики, а также для создания случайных нормальных событий.
Ниже, приведены примеры библиотек, использующихся в имитационной модели:
Numpy - библиотека, созданная для работы с числовыми массивами на ЯП Python. В имитационной модели может применяться как инструмент создания простейшего потока событий (np.random()), кроме того, распределение можно задать нормальным или случайным с определенным шаблоном чисел, чтобы в дальнейшем использовать тот же самый случайный поток чисел. Кроме того, данная библиотека может быть использована для проведения математических операций с матрицами (числовыми массивами).
Math - библиотека, содержащая в себе все основные математические функции, которые могут понадобиться для решения тех или иных задач модели.
Matplotlib и Seaborn - данные библиотеки являются отличными инструментами для построения графиков, что позволяет лучше оценить имитационную модель. К примеру, построив гистограмму выходных данных модели, мы можем оценить её распределение, насколько оно отличается от нормального и т. п.
Pandas - библиотека, предназначенная для работы с таблицами. Благодаря этому инструменту, можно считать корреляцию, мат ожидание, дисперсию, среднеквадратичное отклонение данных, что значительно улучшает понимание имитационной модели.
Стоит отметить, что все вышеперечисленные библиотеки дают лучший результат, если применяются вместе. Аналитика и имитационное моделирование является достаточно сложным процессом, но, зная основные методы теории вероятности и математической статистики, а также яп python со всеми необходимыми библиотеками, можно получить результаты имитационной модели, близкие к идеальным. Ниже приведён листинг программы, использующей данные библиотеки для анализа данных.
Примеры применения
import matplotlib.pyplot as plt # Подключаем модуль pyplot библиотеки matplotlib и задаем псевдоним
plt
import numpy as np # Подключаем библиотеку numpy
x = np.linspace(0,15,101) # Генерируем последовательность из 101 числа равнораспределенных в интервале от 0 до 15
plt.plot(x) # Визуализируем график #подписываем оси pltxlabel(V) plt.ylabel('y')
plt.show() # Фиксируем вывод
14 • 12 • 10 -8 -6 -4 • 2 -0 ■
0 20 40 60 80 100
х
Рис. 1 Вывод графика прямой
На данном графике показано применение простого вывода графика у = np.cos(x)
plt.plot(x, у) # Визуализируем график, указав обе оси
#подписываем оси
pltxlabel(У)
plt.ylabel('y')
plt.show() # Фиксируем вывод
В библиотеку Numpy также заложены некоторые математические функции, поэтому, для упрощения кода здесь не используется библиотека math (при её использовании в данном случае нужен цикл, проходящий по каждому значению numpy массива)
Рис. 2 Вывод графика косинусоиды
В данном случае выведен график косинусоиды, где указаны обе оси
import pandas as pd # Библиотека для работы с таблицами
# отсюда выгружаем файл
hh_df = pd.read_csvOСсылка на таблицу')
hh_df = hh_df.iloc[:6] # оставляем первые 6 столбцов
hh_df.head(10) # Верхушка таблицы
0 М 44
1 м 42
г м 46
i м 44
4 м 41
5 м 36
в ж 33
? м 41
t ж 42
« м 46
60000 О Ы0ГЫЙ ни* se поддонам p»:kymm горен
чес*
JjMNYOCU
ирга» иттюь mWb пуица MMWoctk птнв» MMM-tortt» П'ГМ« МмЯИЖТ» занятость петым мыя*осп.
ПТМ1Й ММЯЮСТь
гегмая мметостъ
Мостов го>
МоСЯв ЯВ1МЯ1 ЮИШОСТЪ
МИ rccoa 4ICIM4N MKlfOCk. itQWNIKí c*6oi*. циннии
Рис. 3 Вывод части таблицы
с
rww» irmi гиб*fit (Цффм ГЦГиЫ> atmi т»>ь»» ае»»ь. rflOTHitfi робо'в иГ«м> г(шф*< Tf'»i> ДД"» «щпм«м (мАап попиыА дмк смсь*ыЛ граф*« гогмм! ¿МЫ. пжмьй они. потны* ае*« r*rnuí> жиъ и€*»ч» чшЗь« "tyiii** дх^. hwwww ' imflw уд
В данном случае приведен пример простого вывода таблицы. Ниже приведена небольшая аналитика данных при помощи встроенных графиков Pandas. hh_df['3n'].value_counts0.iloc[:30].plot(kind='bar') рК.ййе('График зарплат') plt.show()
Город
0\ ^
ГО 02
¡в
о
О
О.'
¡5 §
О-
I
О
я
ь
1 1 »
| ♦ Н
! * 1 1111 Г
г 9 г г п I г I ¡585 и 1 |
♦ * г § » 21 ? •и * и» л Ь' * 1
♦ ♦ ♦ ♦ ♦ ♦ ♦ "Э -о о $ -О 8 £ (1 И В ■ X X "а о в « • ♦ ♦ $ #
£ I
4 1 1 £ 5 * 1 ►
Количество
о со
"Я 3
г:
о
Си £
К о О/
!\) С О 2 о Л
РЧ §
г: ^
о 2 Ой О
1Л1 §
Ой О РЧ
а о
(Л! §
о
50000.0 40000.0 30000.0 60000.0 80000.0 70000.0 100000.0 35000.0 25000.0 45000.0 150000.0 120000.0 20000.0 90000.0 200000.0 65000.0 130000.0 55000.0 250000.0 180000.0 75000.0 140000.0 15000.0 110000.0 85000.0 300000.0 160000.0 170000.0 10000.0 220000.0
my_array = ^^1^(9,9))
# добавляем строку единиц my_array[4] = 1
# добавляем столбец единиц my_array[:,4] = 1
# выводим массив по цветам палитры plt. imshow(my_array) plt.colorbarO # цветовая полоса colorbar plt.showO
Рис. 7 Вывод тепловой карты
Это пример использования тепловой карты библиотеки Seaborn. Она может быть применена для получения графика корреляции. Ниже приведён код построения графика корреляции (предварительный парсинг данных для получения данной корреляции не приводится ввиду его сложности и объемности): rcParams['figure.figsize'] = 12, 8 # увеличим размер графиков
# Метод, подсчитывающий попарную корреляцию для элементов. corr_matrix = categorical.corr('spearman')
# Можно указать в параметрах способ подсчета.
sns.heatmap(corr_matrix, cmap= 'coolwarm', vmin=-1, center=0, linewidths=2, linecolor='black', annot = True, fmt='.1g')
Пол Возрос I Город Опыт работы Попила занятость
ЧАСТИЧНАЯ ЗАНЯТОСТЬ Проекжал работа С'ажировкд Bwciue« о6рлю*»м«« Н.?о*омченнг№ высшее Среднее специальное Среднее образован** Зарплата
| -0 08 01 -0 05 -0 04 -003 -0.06 0.03 0 009 -0.03 •0.02 •0 0002 4)2
-оов 1 0.03 0.4 0-03 0.02 0.006 0.1 0.2 -0-1 ■0 1 о.ов 0.2
0 1 ■ооз в 0 007 о.ооо« 0.02 0 00« 0 003 004 0.03 0,01 0 02 0.09
-0.05 04 -0 007 в 0 02 -0 006 001 -0.09 0.1 -0.05 ■0 06 •0.07 0.2
-0 04 0 03 0 0006 0 02 1 -0.3 -0.2 -0.07 -0 001 -0.03 001 -001 01
-0,03 -0.02 0.02 -0 006 0.3 в 0.3 0 03 0.05 0.01 0.02 0.07
0 06 0006 •о осе 0 01 0.2 : 0.3 0.05 003 0.04 0 02 0.05
•о.оэ -0.1 0.003 0.09 0 07 о.з 0.J 1 ООО* 0.04 0.02 -0-006 ■0 1
ООО» 0,7 0 04 01 -0 001 0 03 0 05 0 009 1 0.1 « 0 5 0 3
-0.03 •0.1 0 03 •0.05 -0.03 0 05 0 03 004 и I •0,07 •0.07 0 07
-0.02 •0.1 •0.03 0.06 0 01 ■0.01 •0.04 0.02 0.6 -0.07 I 0.09 •0.2
0.0002 о.ов 0.02 0.07 0.01 0.02 0.02 -0 00« 05 0.07 0.00 1 ■01
-0 2 02 0 09 02 0.1 0,07 0 05 XI 1 0.3 -0.07 •0 2 Н 1
в
I
S
О
ё 8
к t
и
5
«
г
I
3
4 в о
t
X
3
1 оо
0 75
■ -0.25
I
-0 50
-0 75
-1.00
Рис. 8 График корреляции
Данный график позволяет определить зависимости одних параметров от других (пример: можно заметить, что люди, выбирающие частичную занятость, в большинстве своем готовы и на проектную деятельность; и наоборот: люди, имеющие высшее образование обычно не имеют среднего специального)
Выводы
Все эти библиотеки имеют открытый исходный код и доступную, понятную документацию на многих языках мира. Их изучение занимает не много времени, а результат не заставит долго ждать.
Аналитика данных при помощи языка программирования Python является удобным инструментом и широко применяется в IT секторе. В будущем такой способ аналитики данных и построения имитационных моделей будет применяться почти во всех сферах жизни, что приведёт к развитию данной сферы, оптимизации кода и появлению новых, ещё более простых способов построения имитационных моделей.
Список литературы
1.ИТМО «Имитационное моделирование» с. 246-249.
2.Гмурман «Теория вероятностей и математическая статистика» с. 69-71;
3.В.Н.Задорожный «Имитационное и статистическое моделирование» с. 7;
4.Н.Н. Лычкина «Имитационное моделирование экономических процессов» с. 17;
5.В.П. Лисьев «Теория вероятностей и математическая статистика» с. 35, 37-38;
6.Н.Л. Леонова «Имитационное моделирование», с. 6-8.
© Е.М. Бадика, Д.А. Зырянов, С.Г. Бабчинецкий 2022.