def _findNextTarget(self, wait): minTarget = "z" minDownstreamTarget = "z" minSource = "z" minDownstreamSource = "z" edge = vehicleControl.getPosition(self.id) if edge == "cyberin": edge = "cyber" for task in self.running: if task.target < minTarget: minTarget = task.target if task.target < minDownstreamTarget and task.target > edge: minDownstreamTarget = task.target for task in self.tasks[:vehicleControl.getCapacity() - self.load]: if task.source < minSource: minSource = task.source if task.source < minDownstreamSource and task.source > edge: minDownstreamSource = task.source if minDownstreamTarget != "z": minTarget = minDownstreamTarget elif minDownstreamSource < minTarget: minTarget = minDownstreamSource elif minTarget < edge and minSource < minTarget: minTarget = minSource if minTarget == "z": minTarget = "cyberin" if minTarget != vehicleControl.getPosition(self.id): vehicleControl.leaveStop(self.id, delay=wait) vehicleControl.stopAt(self.id, minTarget)