Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Omnet++ 如何为一辆车找到未来的路标?_Omnet++ - Fatal编程技术网

Omnet++ 如何为一辆车找到未来的路标?

Omnet++ 如何为一辆车找到未来的路标?,omnet++,Omnet++,在我在静脉中模拟的场景中,我需要确定汽车节点的下一个道路ID值。由于此信息存储在模拟的.route文件中,因此我认为可以提取它 当前的RoadID值可以通过traci->getRoadID()函数返回。我研究了它是如何提取这个ID的,并且可以通过addModule()函数添加新模块,但我无法理解它是如何提取这个信息的 请帮忙。提前感谢。据我所知,Velse目前没有这种内置功能。您可以对特定车辆执行类似于getRouteId()的操作。这将为您返回路线 接下来,在应用程序(.cc文件)中,您可以阅

在我在静脉中模拟的场景中,我需要确定
汽车
节点的下一个
道路ID
值。由于此信息存储在模拟的
.route
文件中,因此我认为可以提取它

当前的
RoadID
值可以通过
traci->getRoadID()
函数返回。我研究了它是如何提取这个ID的,并且可以通过
addModule()
函数添加新模块,但我无法理解它是如何提取这个信息的


请帮忙。提前感谢。

据我所知,Velse目前没有这种内置功能。您可以对特定车辆执行类似于
getRouteId()
的操作。这将为您返回路线

接下来,在应用程序(
.cc
文件)中,您可以阅读当前示例的
.rou.xml
,该示例可能包含以下内容:

<route id="4" edges="0/1to1/1 1/1to2/1"/>

从那里你可以推断出roadID,它实际上是边缘的名称


我仍然知道结果不会是最优的。

据我所知,目前Velse没有这样的内置功能。您可以对特定车辆执行类似于
getRouteId()
的操作。这将为您返回路线

接下来,在应用程序(
.cc
文件)中,您可以阅读当前示例的
.rou.xml
,该示例可能包含以下内容:

<route id="4" edges="0/1to1/1 1/1to2/1"/>

从那里你可以推断出roadID,它实际上是边缘的名称


我仍然知道结果不会是最优的。

如@user4786271所述,这在Velse4 alpha 2和SUMO 0.22中都没有实现,以供将来参考

这项功能在相扑0.24中加入,并计划在相扑0.24中加入。为第4条矿脉添加支撑的相应代码为:

int32_t TraCICommandInterface::Vehicle::getRouteIndex() {
    return traci->genericGetInt(CMD_GET_VEHICLE_VARIABLE, nodeId, VAR_ROUTE_INDEX, RESPONSE_GET_VEHICLE_VARIABLE);
}

作为将来的参考,正如@user4786271所指出的,这一点目前并未在第4版alpha 2中实现,也未在相扑0.22中实现

这项功能在相扑0.24中加入,并计划在相扑0.24中加入。为第4条矿脉添加支撑的相应代码为:

int32_t TraCICommandInterface::Vehicle::getRouteIndex() {
    return traci->genericGetInt(CMD_GET_VEHICLE_VARIABLE, nodeId, VAR_ROUTE_INDEX, RESPONSE_GET_VEHICLE_VARIABLE);
}

谢谢你的回答。嗯,是的,这样的结果不会是最优的。事实上,在模块
TraCICommandInterface
中,有一个函数
getRouteEdgeIDs()
,它接受
routeID
,并返回路由上的边列表,因此不需要进行文件查找。但是,主要的问题是,如果一条路线有重复出现的边缘,我如何确定我的车将在这些重复出现的边缘中选择哪一条?不知道您是否尝试过
getRouteEdgeIDs()
的工作原理。可能它会返回一个列表或ID,它们在路由中出现时会按顺序排列,同时也允许重复。如果这不起作用,您可以切换到思考如果路由具有重复的边,而
getRouteDegeids()
不返回重复的边,该怎么办…我已经尝试了该函数。它返回包含重复的管线中的边列表。如果它不返回重复,那么,好吧,路径信息就没有用了,因为我只知道当前的边。即使我存储了以前使用的路线的知识,对于长路线程序,边缘匹配和查找也将效率低下。如果以某种方式,我能够找到当前edgeId的索引,那么这个问题就可以解决。所谓索引,您指的是它在列表中的一条边的位置,该列表是由
getRouteEdgeIDs()
返回的。如果我能得到这个索引,我可以简单地说,下一个索引上的边就是所需的边。但不幸的是,TraCI套接字的
connection.query()
只允许某些合法查询,例如检索路由上的此边缘列表。我尝试了一些其他的查询,看看我是否可以得到他的索引,但无法运行它们。你还有其他想法吗?谢谢你的回答。嗯,是的,这样的结果不会是最优的。事实上,在模块
TraCICommandInterface
中,有一个函数
getRouteEdgeIDs()
,它接受
routeID
,并返回路由上的边列表,因此不需要进行文件查找。但是,主要的问题是,如果一条路线有重复出现的边缘,我如何确定我的车将在这些重复出现的边缘中选择哪一条?不知道您是否尝试过
getRouteEdgeIDs()
的工作原理。可能它会返回一个列表或ID,它们在路由中出现时会按顺序排列,同时也允许重复。如果这不起作用,您可以切换到思考如果路由具有重复的边,而
getRouteDegeids()
不返回重复的边,该怎么办…我已经尝试了该函数。它返回包含重复的管线中的边列表。如果它不返回重复,那么,好吧,路径信息就没有用了,因为我只知道当前的边。即使我存储了以前使用的路线的知识,对于长路线程序,边缘匹配和查找也将效率低下。如果以某种方式,我能够找到当前edgeId的索引,那么这个问题就可以解决。所谓索引,您指的是它在列表中的一条边的位置,该列表是由
getRouteEdgeIDs()
返回的。如果我能得到这个索引,我可以简单地说,下一个索引上的边就是所需的边。但不幸的是,TraCI套接字的
connection.query()
只允许某些合法查询,例如检索路由上的此边缘列表。我尝试了一些其他的查询,看看我是否可以得到他的索引,但无法运行它们。你还有其他想法吗?谢谢你的回答。嗯,是的,这样的结果不会是最优的。事实上,在模块
TraCICommandInterface
中,有一个函数
getRouteEdgeIDs()
,它接受
routeID
,并返回路由上的边列表,因此不需要进行文件查找。但是,主要的问题是