if (agvs[i].getBattery() < safe_battery_level) { bool has_charge_task = false; for (int k = 0; k < tasks.size(); k++) { if (tasks[k].a_id == agvs[i].id_ && tasks[k].Task_type == 1) { has_charge_task = true; break; } } if (!has_charge_task)修改代碼,有這樣的任務,且任務的completed值為0
时间: 2024-02-14 09:05:15 浏览: 55
你可以在原有代码的基础上加入一个条件判断语句,判断是否存在已完成的充电任务。修改后的代码如下:
```cpp
if (agvs[i].getBattery() < safe_battery_level) {
bool has_charge_task = false;
bool has_completed_charge_task = false;
for (int k = 0; k < tasks.size(); k++) {
if (tasks[k].a_id == agvs[i].id_ && tasks[k].Task_type == 1) {
has_charge_task = true;
if (tasks[k].completed == 0) { // 判断是否存在已完成的充电任务
has_completed_charge_task = true;
}
break;
}
}
if (!has_charge_task && !has_completed_charge_task) { // 如果不存在未完成的充电任务和已完成的充电任务,则创建新的充电任务
for (int j = 0; j < charges.size(); j++) {
if (charges[j].charge_available == true) {
charges[j].setavailable(false);
for (int k = 0; k < tasks.size(); k++) {
if (tasks[k].id > max_task_id) {
max_task_id = tasks[k].id;
}
if (tasks[k].Task_type == 1 && tasks[k].priority > max_charge_priority) {
max_charge_priority = tasks[k].priority;
}
}
charge_task_id = max_task_id + 1;
charge_task_priority = max_charge_priority + 1;
Task charge_task(charge_task_id, agvs[i].current_x, agvs[i].current_y, charges[j].charge_x, charges[j].charge_y, charge_task_priority, 0, agvs[i].id_, 1);
tasks.push_back(charge_task);
break;
}
}
}
}
```
这样修改后的代码会优先判断是否存在已完成的充电任务,如果存在则不创建新的充电任务。如果不存在已完成的充电任务,则执行原有的代码创建新的充电任务。
阅读全文