Як прискорити в PTV Visum моделях розрахунок Перерозподілу шляхом паралельного виконання розрахунку
Одною з ключових переваг PTV Visum, програмного забезпечення для стратегічного моделювання є його здатність просто і ефективно інтегруватися з Python для використання його можливостей.
Для британських транспортних моделей типовою є необхідність розробки декількох розрахунків перерозподілу протягом різних періодів часу (ранковий, вечірній «пік», міжпіковий період), і ці розрахунки зазвичай виконуються послідовно. Хоча частка від загальної тривалості розрахунку, яку займає перерозподіл, в кінцевому підсумку залежить від конкретної моделі, нерідко вона може перевищувати 50%, тому будь-яке прискорення може мати велике значення. Це особливо важливо, враховуючи, що в міру збільшення обчислювальної потужності, доступної фахівцям з моделювання, спостерігається тенденція до створення більш детальних і складних моделей. Отже, будь-які зміни в процесі моделювання, які можуть збільшити швидкість виконання без шкоди для деталізації, швидше за все, будуть прийняті. Також часто для окремих перерозподілів потрібна лише частка доступної обчислювальної потужності, а отже, є можливість для розпаралелювання.
Розроблене рішення базується на невеликому скрипті Python та деяких допоміжних файлах Visum, таких як файли процедур розрахунку та шаблони для мережі та даних попиту. Вони можуть бути підготовлені заздалегідь до всіх запусків моделі за допомогою головного (мастер) файлу і є специфікаціями для структур даних, які потрібно експортувати. Це означає, що їх не потрібно оновлювати з кожним запуском або навіть якщо структура мережі змінюється, а отже, не повинна обтяжувати користувача моделі.
Ці файли використовуються в початковій ітерації моделі для підготовки файлів перерозподілу для кожного періоду часу, включаючи мережу та матриці попиту, разом із зазначеною послідовністю процедур. Потім ці моделі запускаються одночасно, а дані, необхідні для наступної ітерації (наприклад, затрати), експортуються та повертаються у головний файл. Для кожної наступної ітерації матриці перерозподілу оновлюються в окремих файлах перерозподілу, а моделі запускаються повторно.
Цей процес має дві переваги:
- По-перше, перерозподіл можна виконувати паралельно, а не послідовно, що дозволяє теоретично прискорити перерозподіл в 3 рази; час, необхідний для запуску перерозподілу, обмежений часом найповільнішого перерозподілу.
- По-друге, оскільки результати перерозподілу зберігаються в окремих файлах, їх можна запустити з попереднього рішення. Це може значно пришвидшити перерозподіл в пізніших ітераціях моделі, оскільки він вже відносно близько до конвергенції.
Це рішення було протестовано за допомогою моделі з приблизно 7000 зонами, і результати такі:
- Зниження на 40% часу виконання перерозподілу у початковій ітерації
- До 70% скорочення часу виконання перерозподілу у наступних ітераціях
- Загальне скорочення часу розрахунку на 40%.
Існує навіть можливість для подальшого розвитку цього рішення для моделей, які мають як перерозподіл для індивідуального, так і для громадського транспорту, оскільки вони не залежать один від одного і можуть також працювати одночасно.
Файли скрипту були завантажені на GitHub.
Опубліковано 12 травня 2021 р., автор David Aspital
Джерело – https://www.linkedin.com/pulse/how-speed-up-ptv-visum-models-running-assignments-parallel-aspital/