Wiki

Генерация движения

1. Броуновское движение

MotionGenerator brownian

Входные параметры: ширина и высота поля, количество узлов, количество временных отсчётов, имя выходного файла
Выходной файл содержит XML следующего содержания:

<field width="..." height="..." generationCount="...">
  <gen>
    <node id="n1" x="..."  y="..." />
    <node id="n2" x="..."  y="..." />
    ...
    <node id="n..." x="..."  y="..." />

    <edge id="e1" from="n..." to="n..." />
    ...
    <edge id="e..." from="n..." to="n..." />
  </gen>
  <gen>
    ...
  </gen>
  ...
</field>

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

2. Движение по транспортному графу

Входные параметры: XML-файл с транспортным графом, имя выходного файла, количество временных отсчётов, количество узлов.
Транспортный граф имеет описанную выше структуру, и имеет только один элемент <gen>, который можно опустить. Транспортный граф однонаправлен.
Выходной граф имеет такую же структуру, как и выше.
В начальный момент времени агенты расставляются случайным образом по узлам транспортного графа, каждому агенту случайным образом назначается линейная скорость и выбирается узел, в который будет осуществляться движение. Выбор целевого узла осуществляется случайным образом по наличию связи текущего узла транспортного графа с другими. В следующие временные отсчеты агенты движутся в направлении выбранных узлов, до тех пор, пока расстояние до целевого узла не будет достаточно мало. В этом случае агент выбирает другой узел из тех, которые связаны с достигнутым узлом, и начинает движение в его направлении.