networking - 网络中点到点的距离,任意逻辑
问题描述
我想使用网络路径计算两个代理之间或代理两点之间的距离。我试过getDistance(Point source, Point target, ShortestPathData<N,P> data)
->getDistance(Point(vx,vy), Point(a.getX(),a.getY()), d);
和double d = 0.0;
,vx = a.getX()
和 vy = a.getY()
. vx 和 vy 是第二个代理的坐标。代理人来自同一类型,我们称其为第一类型。我在代理类型二的状态图中输入了代码。=> 问题描述:方法 Point (double, double) 未定义类型二。我该如何解决这个问题?或者我可以使用其他功能吗?
解决方案
使用您尝试使用的功能可以做到这一点,但该功能实际上是复杂的内部(未记录)AnyLogic 代码,涉及代理如何“在幕后”跨网络移动(当通过块或moveTo
函数调用要求这样做时)。我不想保证这在未来的版本中会保持不变(并且需要对 Java 有很好的理解)。
(GIS 空间中的代理具有distanceByRoute
通过 GIS 空间获取到另一个代理的距离的功能,但我所知道的网络中的代理没有等价物。通常,您不需要使用 distance-by-路径,那么您需要它的确切原因是什么?即使在您这样做的地方,使用直线距离通常就足够了,您可以通过getDistance
代理中的getDistance
功能而不是网络的功能获得。)
也就是说,这可以如下工作......
您尝试调用的getDistance
函数(Java 方法)仅存在于Network
对象上(其中网络是连接网络中所有节点和路径的“父级”)。另外,您必须创建(实例化)Point
对象(没有Point
功能)并获取ShortestPathData
网络和从/到有问题的点。(此最短路径数据表示两点之间的计算路线,然后您可以获得该路线上任何一组点之间的距离。)
所以你会有类似下面的代码,其中agent1
和agent2
是对你的两个代理的引用,并且network
是节点/路径网络(假设此代码在包含此网络的代理中):
Point p1 = new Point(agent1.getX(), agent1.getY());
Point p2 = new Point(agent2.getX(), agent2.getY());
ShortestPathData<Node, Path> pathData = network.getPathData(p1, p2, null);
double distance = network.getDistance(p1, p2, pathData);
(由于距离以像素为单位返回,您可能希望使用包含网络的代理的当前比例,通过类似的东西将其转换为适当的长度单位scale.toLengthUnits(distance, METER)
。)
推荐阅读
- javascript - 如何避免角度 PUT 方法中的 CORS 策略错误
- python - 为什么 Flask 没有从 config 类配置某些环境变量?需要帮助了解配置过程
- php - Stripe API 将一位客户转移到另一位客户
- docker - 如何在 configmap 中设置密码
- python - 如何使用 R 或 python 读取和转换 GrADS 平面二进制格式?
- css - 如何进行背景过渡?
- wordpress - 登录验证在我的帐户页面上不起作用(wordpress)
- html - XPATH 根据上面元素中的名称返回 html 元素的内容
- python - 在 Python spyder 中未在控制台中显示输出
- qt - 为什么启动 QProcess 会冻结 QWidget 子类中的 GUI,但不会冻结 QLineEdit 子类中的 GUI?