/EvacuationC

Программа моделирования движения людских потоков в динамической среде

Primary LanguageCApache License 2.0Apache-2.0

EvacuationC

EvacuationC -- программа моделирования движения людей в здании.

Резульататом работы программы является время освобождения здания (длительность эвакуации).

Структура проекта

.
├── res             -- Ресурсы. Файлы зданий
├── src             -- Исходные коды программы
├── test            -- Тесты
└── thirdparty      -- Библиотеки, используемые в программе
    ├── arraylist   -- Библиотека для работы с динамическим списком
    ├── c-logger    -- Библиотека для логгирования
    ├── json-c      -- Библиотека для работы с json-файлами 
    └── triangle    -- Библиотека для триангуляции поверхности

Сборка

Интсрументарий

  • cmake >= 3.16
  • gcc-10 or clang-11

Клонируйте репозиторий

git clone --recurse-submodules https://github.com/bvchirkov/EvacuationC.git

Выполните настройку окружения и сборку проекта

cd EvacuationC
cmake -S  . -B build/ && cmake --build build/

Готовый к запуску файл расположен в дирректории build/ -- EvacuationC

Запуск

Параметры запуска

  • -f -- [required] файл пространственно-информационной модели здания, выполненный в QGIS 2.18 с использованием плагина PlanCreator
  • -o -- [required] файл с детализацией процесса моделирования
  • -c -- [optional] файл конфигурации сценария моделирования
  • -l -- [optional] файл конфигурации логгера
  • -h -- вывод справки по параметрам запуска
cd build
./EvacuationC -f ../res/two_levels.json -o ../res/two_levels.json.csv -c ../evacuationc.conf -l ../logger.conf

T 21-08-25 12:28:31.637591 28453 main.c:103: Файл описания объекта: ../res/two_levels.json
T 21-08-25 12:28:31.637710 28453 main.c:104: Файл конфигурации сценария: ../evacuationc.conf
T 21-08-25 12:28:31.637722 28453 main.c:105: Файл с детальной информацией: ../res/two_levels.json.csv
T 21-08-25 12:28:31.637731 28453 main.c:106: Название объекта: Здание номер 1
T 21-08-25 12:28:31.637739 28453 main.c:107: Площадь здания: 403.63 m^2
T 21-08-25 12:28:31.637763 28453 main.c:108: Количество этажей: 2
T 21-08-25 12:28:31.637790 28453 main.c:109: Количество помещений: 9
T 21-08-25 12:28:31.637811 28453 main.c:110: Количество дверей: 8
T 21-08-25 12:28:31.637832 28453 main.c:111: Количество человек в здании: 80.73 чел.
I 21-08-25 12:28:31.642914 28453 main.c:149: ---------------------------------------
I 21-08-25 12:28:31.642925 28453 main.c:150: Количество человек в здании: 0.00 чел.
I 21-08-25 12:28:31.642930 28453 main.c:151: Количество человек в безопасной зоне: 80.73 чел.
I 21-08-25 12:28:31.642936 28453 main.c:152: Длительность эвакуации: 178.80 с., 2.98 мин.
I 21-08-25 12:28:31.642942 28453 main.c:153: ---------------------------------------

Конфигурационный файл сценария моделирования

Распределение людей в здании

  • BIM -- из файла описания здания (default)
  • UNIFORM -- равномерное (distribution.density)
distribution=UNIFORM
distribution.density=0.2 # Плотность распределения людей, чел/м^2 (max = 9)

Ширина переходов

  • BIM -- из файла описания здания (default)
  • SPECIAL -- специальные значения (transit.doorway.in и/или transit.doorway.out)
transit=SPECIAL
transit.doorway.in=0.8  # Ширина внутренних переходов, м
transit.doorway.out=1.2 # Ширина выходов из здания, м

Параметры моделирования

modeling.step=0.01       # Шаг моделирования, мин
modeling.speed.max=100   # Максимальная скорость движения людей, м/мин
modeling.density.min=0.1 # Минимальное значение плотности, которое остается в помещении, перед тем, как оно будет освобождено за один шаг, чел/м^2
modeling.density.max=5	 # Максимальное значение плотности, которое может быть достигнуто в помещнии, после этого в помещение нельзя перемещать людей, чел/м^2