首页 > 解决方案 > 如何在自定义路由中使用 ILocation 源和目标?

问题描述

这是我的示例网络和尝试如何创建新路由而不仅仅是最短路径的想法(我想要遵循的路径是通过粉红色箭头)

我在这里缺少什么来使我的预定义功能起作用?

在此处输入图像描述

标签: anylogic

解决方案


修复基础

正如这里所解释的,你不能实例化一个 Java 列表,因为它是一个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 路径网络的图形
  • 使用图、起点和终点,通过求解算法(例如Dijkstra 算法)解决图路由问题
  • 将您从求解器获得的解决方案再次转换回您可以在 AnyLogic 中使用的 ArrayList

您可以自己执行这些步骤,例如。通过自己实现 Dijkstra 算法,或者将可用的图形求解 Java 包之一(如JUNGGraphhopper)导入 AnyLogic 。在本文中,我将逐步解释如何使用 JUNG 进行操作。


推荐阅读