Как использовать источник и цель ILocation в пользовательской маршрутизации? - PullRequest
0 голосов
/ 23 января 2019

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

Чего мне здесь не хватает, чтобы сделатьмоя предопределенная функция работает?

enter image description here

1 Ответ

0 голосов
/ 05 июня 2019

Исправление основ

Как объяснено здесь , вы не можете создать экземпляр Java List, потому что это interface.Однако вы можете создать экземпляр любого реализующего класса List, например ArrayList.

С учетом этого ваш код будет выглядеть следующим образом:

List<Path> myPath = new ArrayList<Path>();

   myPath.add(path14);
   myPath.add(path8);
   myPath.add(path);
   myPath.add(path1);
   myPath.add(path4);
   myPath.add(path13);

return myPath;

Пока что для основ.

Куда идти отсюда

Чтобы заставить его учитывать фактический источник и пункт назначения для планирования маршрута, определите оба в качестве входных параметров типа ILocation в свойствах функции,

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

  • Создание графика , представляющего вашу сеть путей AnyLogic
  • Решение проблемы маршрутизации графа с помощью алгоритма решения (например, * 1028).* Алгоритм Дейкстры ), используя график, начальную точку и конечную точку
  • Преобразуйте решение, полученное от решателя, обратно в ArrayList, с которым вы можете работать в AnyLogic

Вы можете сделать эти шаги самостоятельно, например.реализовав алгоритм Dijkstra самостоятельно, или вы импортируете в AnyLogic один из доступных Java-пакетов для решения графиков, таких как JUNG или Graphhopper этой статье я шаг за шагом объясняю, как это сделать с JUNG.

...