Раздел «Технологии программирования».Traffic:

Проект Traffic

Цель проекта

Моделирование движения траффика машин по многополосной дороге в условиях обгононов и столкновений, при условии выского интеллекта водителей и попыток ими предвидеть столкновения.

Математические основы и логика работы

Модель представляет собой дорогу, с набором полос и машин, для каждой их которых определена полоса. У каждой машины имеется набор параметров, наиболее важными из которых являются желаемая скорость и текущая скорость. Каждая из машин старается двигаться по дороге так, чтобы достичь желаемой скорости. Машины мешают друг другу, поэтому обычно идут на обгон, при этом стараясь не столкнуться с уже проходящими по этой полосе машинами. И это удается им не всегда - ошибки водителей иногда создают столкновения - коллайды. Таким образом можно отследить зависимость скоростей машин на дороге и количества полос на ней на вероятность возникновения ДТП, а также изменения средней скорости потока.

В основу положена модель дискретизации временных промежутков: дифференциальная модель поведения машин

\frac{d\vec r}{dt} = \vec v_0; \frac{d\vec v}{dt} = \vec a_0

заменяется приближающей её дискретной моделью.

 \Delta\vec R = \vec v_0*\Delta t + \frac{\vec a_0^2}{2}\Delta t^2

Которая является очевидным следствие формулы Тейлора после последовтаельного применения к v и к a при учете того, что  \Delta t\to 0.

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

Каждый из водителей оценивает обстановку в пределах своей области видимости: количество машин и их скорости - и на освновании этого принимает решение о установке текущего ускорения.

При этом он руководствуется следующей моделью поведения:

Развивая эту мысль покажем характерный пример логики работы интеллекта:

  1. Водитель едет по дороге с оптимальной для него скоростью.
  2. Водитель замечает впереди по полосе машину, которая идет с более низкой скоростью и корректирует свою скорость соответственно.
  3. Через некоторое время Водитель думает, как можно было бы увеличить свою скорость.
  4. Анализ дороги впереди показывает, что для этого нужно менять полосу движения.
  5. Водитель осматривает соседние полосы сзади и ждет, пока не будет безопасной ситуации для того, чтобы можно было бы обгонять впереди идущую машину.
  6. Осматривается ситуация спереди, для того, чтобы было и куда обгонять.
  7. Совершается обгон, и мы возвращаемся в пункт 1.

Особенности реализации

Проект реализован на платформе Microsoft(c) .NET framework с использованием пакета Managed DirectX 9.0.

Используя возможности DirectX для построения трехмерной графики и виртуальной реальности нами была реализована возможность движения ВиртуальногоПользователя по всему объему визуализации.

Более того есть воможность переключаться между различными камерами - "видами местности". Каждая из них реализует свою собственную привязку к местности, таким образом даруя поразительные возможности по контролю за ситуацией на виртуальной дороге, а также управлению этой ситуацией.

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

Дополнительные возможности программы

Заключение

Нами были достигнуты все поставленные нами цели. Результат наших разработок вы можете посмотреть в приаттаченных файлах. Для использования программы требуется установить Managed DirectX, который, к примеру, идёт в поставке DirectX SDK 9.0, который называется DirectX Runtime, который занимает всего 36 мегабайт дисковой памяти и который часто можно найти в комплекте драйверов новых видеокарт и/или игр последнего поколения.

-- BasanovTimofey? - 29 May 2005

Attachment sort Action Size Date Who Comment
Trafficrelease.zip manage 35.7 K 30 May 2005 - 08:17 BasanovTimofey? Запускаемая часть проекта
Trafficsource.zip manage 57.0 K 30 May 2005 - 08:18 BasanovTimofey? Исходные коды проекта