Пример #1
0
 def cyberCarArrived(self, vehicleID, edge):
     step = vehicleControl.getStep()
     footEdge = edge.replace("cyber", "footmain")
     wait = 0
     load = []
     for person, target in self.cyberCarLoad.get(vehicleID, []):
         if target == footEdge:
             statistics.personUnloaded(person, step)
             wait += WAIT_PER_PERSON
         else:
             load.append((person, target))
     while self.personsWaitingAt.get(footEdge, []) and len(load) < vehicleControl.getCapacity():
         person, target = self.personsWaitingAt[footEdge].pop(0)
         vehicleControl.leaveStop(person)
         statistics.personLoaded(person, step)
         load.append((person, target))
         wait += WAIT_PER_PERSON
     vehicleControl.leaveStop(vehicleID, delay=wait)
     if edge == "cyberout" or edge == "cyberin":
         row = -1
     else:
         row = int(edge[5])
     if row < DOUBLE_ROWS - 1:
         vehicleControl.stopAt(
             vehicleID, "cyber%sto%s" % (row + 1, row + 2))
     else:
         vehicleControl.stopAt(vehicleID, "cyberout")
     self.cyberCarLoad[vehicleID] = load
Пример #2
0
 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)
Пример #3
0
 def cyberCarArrived(self, vehicleID, edge):
     step = vehicleControl.getStep()
     footEdge = edge.replace("cyber", "footmain")
     wait = 0
     load = []
     for person, target in self.cyberCarLoad.get(vehicleID, []):
         if target == footEdge:
             statistics.personUnloaded(person, step)
             wait += WAIT_PER_PERSON
         else:
             load.append((person, target))
     while self.personsWaitingAt.get(
             footEdge, []) and len(load) < vehicleControl.getCapacity():
         person, target = self.personsWaitingAt[footEdge].pop(0)
         vehicleControl.leaveStop(person)
         statistics.personLoaded(person, step)
         load.append((person, target))
         wait += WAIT_PER_PERSON
     vehicleControl.leaveStop(vehicleID, delay=wait)
     if edge == "cyberout" or edge == "cyberin":
         row = -1
     else:
         row = int(edge[5])
     if row < DOUBLE_ROWS - 1:
         vehicleControl.stopAt(vehicleID,
                               "cyber%sto%s" % (row + 1, row + 2))
     else:
         vehicleControl.stopAt(vehicleID, "cyberout")
     self.cyberCarLoad[vehicleID] = load
 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)