当前位置: 首页 > 知识库问答 >
问题:

Anylogic-限制代理进入特定的GIS区域

班景龙
2023-03-14

我目前正在研究一个模型,其中代理移动到地理信息系统地图上海洋中的随机点。然而,我希望它们的路径不会与地图上的任何岛屿发生碰撞。我正在考虑使用岛屿的周长创建地理信息系统区域,并希望为地理信息系统区域提供一些访问限制选项。然而,这似乎还不是一个功能。

有人知道如何让代理在向GIS地图上的某个点移动时避免进入某些区域吗?谢谢

共有2个答案

竺焕
2023-03-14

一种选择是生成路线,然后评估它们是否与岛屿重叠。如果他们这样做了,那么你就改变了路线的这一部分。请参阅下面的代码示例,注意,我并没有做所有的数学运算来创建一条环绕岛屿的新路线。。。你相信你自己能做到。这将是一项工作,所以我没有测试它或开发完整的解决方案。

GISRoute route = main.map.getRoute(currentLat, currentLong, toLat, toLong);

List<GISMarkupSegment> segementsToKeep = new ArrayList<GISMarkupSegment>()

SegmentForLoop:
for (int i = 0; i < route.getSegmentCount(); i++) {
    GISMarkupSegment segment = route.getSegment(i);
    // Check if the segmeent is too close to an island, if within 100m then we adjust the segment and stop adding segeents
    for (Pair<Double, Double> pair:main.LatLongPointsOIfIslands) {
        double distance = Math.sqrt(segment.getDistanceSq(new Point(pair.getFirst(), pair.getSecond())));
        if (distance < 100) {
            segment.setEnd(pair.getFirst() + 100, pair.getSecond()+100);
            break SegmentForLoop:
        }
        segementsToKeep.add(segment);
    }   
}

GISRoute routeUpToIsland = new GISRoute(main, segementsToKeep);

//TODO
// Create a new route around the island
// Add the segements of this new route to segementsToKeep


LatLongPointsOIfIsland是一对的集合

我希望这能帮助你或让你走上正确的方向。

也可以研究其他路由提供者

萧丁雨
2023-03-14

创建GISRoutes并沿着这些

 类似资料:
  • 我有一群“乘客”代理人,其中每一个代理人都会向另一个“机场”代理人发出请求(“OrderPassenger”代理人类型)。此时,“机场”代理人必须通过“机场建议”代理人响应请求,并将其发送给“乘客”群体中的特定“乘客”。 我尝试使用:send(airportSuggestion,main.passengers(orderPassenger.passenger));但是乘客。乘客不是整数类型。 我尝

  • 我目前正在研究城市环境下最后一英里交付领域的论文。 我想了解Anylogic软件的功能,我们正在开发一个基于agent的城市环境中最后一英里交付的模拟模型。在我们的模型中,最重要的模拟领域之一是在我们的分析中使用驾驶员从A点移动到B点所需的时间和距离。 因此,我们正在询问Anylogic是否能够为用户“我们”提供从A点移动到B点所需的时间,而不假设驱动程序的速度,类似于从软件(如Google Ma

  • 我正在解决一个作业车间调度问题,我有20个作业(代理)和5台机器(资源),每个作业作为访问机器的特定顺序。我的问题是:我如何确保每个作业都遵循它的顺序。 这就是我所做的。一个称为“作业”的代理和5个代理,每个代理对应一台机器。一个与每个服务块相关联的资源池。在集合enterblocks中,我选择了5个enter块。 在代理“jobs”中,我有这个。从数据库文件读取的与每个作业相关联的参数,以及我在

  • 所以,正如你在我们的图像中看到的 源-请求来自这里。 延迟(createRequest estNo)-请求号。在此块分配给请求。 服务(userCreation)-用户在此块创建。 接收器-请求(代理)从此块发出。 资源池-一个15人的团队,致力于创建用户帐户。它链接到服务块。 假设一个批量请求来创建5个用户<服务块中的资源如何处理请求代理中的所有5个用户代理?

  • 我是AnyLogic的新手,我正在尝试创建一个自定义网络...但我无法成功完成此任务:( 然后我有一个变量“network”,它包含年龄类之间链接的平均数。 我想要的是每个代理根据矩阵创建与其他代理的链接。 我不知道如何对一个座席说“连接到另一个具有AgeClass=3的座席” 谢谢大家的支持!!!

  • 我想知道如何计算在任何逻辑中一个容器中有多少自定义代理,以便我可以相应地使用下拉块中的值。 我有4个定制代理,a、b、c和d,以及4个火车站1、2、3和4。每种类型的药剂都需要按照一定的比例滴下,即40%的a需要在3时滴下。 我知道如何使用丢弃块,我只是无法计算容器中每个代理的数量。