Astar astar; std::vector<std::vector<Node*>> paths(agvs.size()); // 得到agv的路綫 for (int i = 0; i < agvs.size(); i++) { Node* start_node = new Node(agvs[i].getCurrentX(), agvs[i].getCurrentY()); Node* end_node = new Node(agvs[i].getStartX(), agvs[i].getStartY()); Node* end_node1 = new Node(agvs[i].getEndX(), agvs[i].getEndY()); std::vector<Node*> path_to_start = astar.getPath(start_node, end_node); std::vector<Node*> path_to_end = astar.getPath(end_node, end_node1); // 去掉 end_node1 path_to_end.erase(path_to_end.begin()); std::vector<Node*> path; path.insert(path.end(), path_to_start.begin() + 1, path_to_start.end()); path.insert(path.end(), path_to_end.begin(), path_to_end.end()); paths[i] = path;,修改爲當agv的load狀態等於false時,將agv的current坐標和agv的start坐標輸入到getpath中,並存儲到path中
时间: 2023-07-16 19:15:32 浏览: 82
AStarPathFinder.rar_A * 算法_astar pathfinder_site:www.pudn.com
好的,那么修改后的代码应该是这样的:
```
Astar astar;
std::vector<std::vector<Node*>> paths(agvs.size());
// 得到agv的路綫
for (int i = 0; i < agvs.size(); i++) {
Node* start_node;
Node* end_node;
// 如果AGV的load状态为true,说明AGV当前正在运输货物,那么将其当前坐标和终点坐标输入到getpath中
if (agvs[i].getLoad()) {
start_node = new Node(agvs[i].getCurrentX(), agvs[i].getCurrentY());
end_node = new Node(agvs[i].getEndX(), agvs[i].getEndY());
}
// 如果AGV的load状态为false,说明AGV当前没有在运输货物,那么将其当前坐标和起点坐标输入到getpath中
else {
start_node = new Node(agvs[i].getCurrentX(), agvs[i].getCurrentY());
end_node = new Node(agvs[i].getStartX(), agvs[i].getStartY());
}
std::vector<Node*> path = astar.getPath(start_node, end_node);
// 如果AGV的load状态为false,说明AGV当前没有在运输货物,那么需要去掉终点节点
if (!agvs[i].getLoad()) {
path.erase(path.begin() + path.size() - 1);
}
paths[i] = path;
}
```
这样修改后,就可以根据AGV的load状态来决定输入到getpath中的终点坐标是起点坐标还是终点坐标,同时还能根据load状态来决定是否需要去掉路径中的终点节点。
阅读全文