Networking 网络中点到点的距离,任意逻辑

Networking 网络中点到点的距离,任意逻辑,networking,distance,point,anylogic,agent,Networking,Distance,Point,Anylogic,Agent,我想使用网络路径计算两个代理之间或代理的两个点之间的距离。 我尝试了getDistance(点源、点目标、最短路径数据)->getDistance(点(vx、vy)、点(a.getX()、a.getY()、d)带双d=0.0,vx=a.getX()和vy=a.getY()。vx和vy是第二个代理的坐标。代理来自同一类型,我们称之为第一类型。我在第二类代理的状态图中输入了代码。 =>问题描述:类型2的方法点(双精度,双精度)未定义。 我如何解决这个问题?或者我还可以使用另一个函数吗?使用您尝试使用

我想使用网络路径计算两个代理之间或代理的两个点之间的距离。 我尝试了
getDistance(点源、点目标、最短路径数据)
->
getDistance(点(vx、vy)、点(a.getX()、a.getY()、d)
双d=0.0
vx=a.getX()
vy=a.getY()
。vx和vy是第二个代理的坐标。代理来自同一类型,我们称之为第一类型。我在第二类代理的状态图中输入了代码。 =>问题描述:类型2的方法点(双精度,双精度)未定义。
我如何解决这个问题?或者我还可以使用另一个函数吗?

使用您尝试使用的函数是可行的,但该函数实际上是复杂的内部(未记录)任何逻辑代码,与代理如何“隐藏”在网络中移动有关(当通过块或
moveTo
函数调用要求这样做时)。我不想保证这在未来的版本中保持不变(并且需要对Java有很好的理解)

(GIS空间中的代理有一个
distanceByRoute
功能来获取通过GIS空间到另一个代理的距离,但我知道网络中的代理没有等效的功能。不过,通常情况下,您不需要按路径使用距离,那么您需要它的确切原因是什么?即使在您这样做的地方,它通常也足够好要使用直线距离,可以通过代理中的
getDistance
函数获得直线距离,而不是网络的
getDistance
函数。)

这就是说,这可以工作如下

您试图调用的
getDistance
函数(Java方法)仅存在于
网络
对象上(其中网络是连接网络中所有节点和路径的“父节点”)。此外,您必须创建(实例化)
对象(没有
函数)并获取有关网络和起点/终点的
ShortestPathData
。(此最短路径数据表示计算出的两点之间的路线,然后可以获取该路线上任何一组点之间的距离。)

因此,您可以使用如下代码,其中
agent1
agent2
是对您的两个代理的引用,
network
是节点/路径网络(假设此代码位于包含此网络的代理中):

pointp1=新点(agent1.getX(),agent1.getY());
点p2=新点(agent2.getX(),agent2.getY());
ShortestPathData pathData=network.getPathData(p1,p2,null);
双距离=network.getDistance(p1、p2、pathData);

(由于返回的距离以像素为单位,因此您可能希望使用包含网络的代理的当前比例,通过类似于
Scale.toLengthUnits(距离,米)
的方式将其转换为适当的长度单位)

使用您试图使用的函数可以实现这一点,但该函数实际上是复杂的内部(未记录)任何逻辑代码,与代理如何“隐藏”在网络中移动有关(当通过块或
moveTo
函数调用要求这样做时).我不想保证这在未来的版本中保持不变(并且需要对Java有很好的理解)

(GIS空间中的代理有一个
distanceByRoute
功能来获取通过GIS空间到另一个代理的距离,但我知道网络中的代理没有等效的功能。不过,通常情况下,您不需要按路径使用距离,那么您需要它的确切原因是什么?即使在您这样做的地方,它通常也足够好要使用直线距离,可以通过代理中的
getDistance
函数获得直线距离,而不是网络的
getDistance
函数。)

这就是说,这可以工作如下

您试图调用的
getDistance
函数(Java方法)仅存在于
网络
对象上(其中网络是连接网络中所有节点和路径的“父节点”)。此外,您必须创建(实例化)
对象(没有
函数)并获取有关网络和起点/终点的
ShortestPathData
。(此最短路径数据表示计算出的两点之间的路线,然后可以获取该路线上任何一组点之间的距离。)

因此,您可以使用如下代码,其中
agent1
agent2
是对您的两个代理的引用,
network
是节点/路径网络(假设此代码位于包含此网络的代理中):

pointp1=新点(agent1.getX(),agent1.getY());
点p2=新点(agent2.getX(),agent2.getY());
ShortestPathData pathData=network.getPathData(p1,p2,null);
双距离=network.getDistance(p1、p2、pathData);

(由于返回的距离以像素为单位,因此您可能希望使用包含网络的代理的当前比例,通过类似于
Scale.toLengthUnits(距离,米)
的方式将其转换为适当的长度单位)

我注意到您可以跳过最短路径数据计算。下面的代码对我来说很好:点p1=新点(agent1.getX(),agent1.getY());点p2=新点(agent2.getX(),agent2.getY());双距离=网络.getDistance(p1,p2,null);我注意到您可以跳过最短路径数据计算。以下代码对我来说很好:点p1=新点(agent1.getX(),agent1.getY());点p2=新点(agent2.getX(),agent2.getY());双距离=网络.getDistance(p1,p2,null);
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);