Компьютерная эмуляция "Антипробка"

Цель проекта - проверить работу системы "Антипробка" не в реальности а на компьютерной эмуляции.

Программа эмулирует движение автомобилей по улицам города.

Каждый автомобиль имеет отправную и конечную точки.

Каждый автомобиль двигаясь составляет свою собственную карту скоростей на улицах города и высылает эту информацию.

Получив карту скоростей от другого автомобиля, карты объединяются по определённым правилам, и по новой карте заново вычисляется оптимальный маршрут для наискорейшего прибытия в конечную точку.

Таким образом, цель аппаратной системы "Антипробка" - корректировать оптимальный маршрут обмениваясь информацией с другими участниками в режиме реального времени.

Цель программы "Антипробка" - проверить действие системы на компьютерной эмуляции. Максимальное количество машин для эмуляции - 65000; максимальное количество улиц - 66000.

Скриншоты:

Основное окно программы: панель управления.

Нажав на кнопки "Улицы", "Автомобили", "Сигналы" появляется окно с соответствующим списком.

Список участков (улиц), показана информация для выбранного из списка участка ("текущего").

После нажатия в основном окне программы на кнопку "Расчитать движение":

Сценарий движения расчитывается примерно полторы минуты для 8*8 кварталов (8*8*4 участка) и 20 автомобилей обменивающихся информацией. Автомобили не обменивающиеся информацией в программе в расчёт не берутся; просто считается что из-за них на участках скорость движения разная: пробки, где-то больше, где-то меньше; и ещё можно задать время изменения скорости на участке.

При повторном расчёте сценария при тех же начальных данных скорее всего будут получены другие результаты (другой сценарий), потому что вероятность приёма расчитывается заново; авто может принять другую карту скоростей, выбрать дальнейший маршрут другой нежели в предыдущем сценарии, что ещё больше повлияет на весь сценарий.

Выше показано окно с информацией об автомобиле до расчёта сценария движения.

Ниже видно что в процессе движения авто выбрало другой маршрут, получив информацию о "пробке":

Вот как процесс выбора дальнейшего маршрута выглядит на личной мини-карте маршрута автомобиля (цвета участков маршрута: голубой; начало и конец - фиолетовый, текущий участок маршрута обозначен красным):

Личная мини-карта автомобиля "скорость на участках + устаревание" (здесь и далее - карта всё того же автомобиля):

Личная мини-карта автомобиля "устаревание информации":

Личная мини-карта автомобиля "информация об угнаных авто в системе + устаревание":

Личная мини-карта автомобиля "информация об опасных участках + устаревание":

Воспроизведение рассчитанного сценария. Синие круги - вокруг авто посылающих сигнал. Пунктирные лини - передача сигнала: голубым цветом - успешная, фиолетовым - неудачная. Цвет участков отображает скорость на них в данный момент.

Продукт "Антипробка" был изготовлен за 3 месяца.

Самой большой сложностью было определится как хранить все версии личных карт (в том числе разного времени) для всех автомобилей и при этом сохранить быстродействие программы.