如何在自定义路由中使用ILocation源和目标?

时间:2019-01-23 08:44:54

标签: anylogic

这是我的示例网络,并且尝试尝试制作新的路由,而不仅仅是最短的路径(我想遵循的路径是通过粉红色箭头)

要使我的预定义功能正常工作,我在这里遗漏了什么?

enter image description here

1 个答案:

答案 0 :(得分:0)

修复基础

here所述,您无法实例化Java列表,因为它是一个interface。但是,您可以实例化列表的任何实现类,例如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路径网络的graph
  • 使用图,起点和终点,通过求解算法(例如Dijkstra Algorithm)解决图路由问题
  • 将您从求解器获得的解决方案再次转换回可以在AnyLogic中使用的ArrayList

您可以自己执行这些步骤,例如。通过自己实现Dijkstra算法,或者将其中一种可用的图形解决Java包(例如JUNGGraphhopper)导入AnyLogic。在this article中,我逐步说明了如何使用JUNG。