Exemple #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
 def checkBoarding(self):
     step = vehicleControl.getStep()
     wait = 0
     running = []
     for task in self.running:
         if task.target == self.position:
             statistics.personUnloaded(task.person.id, step)
             self.load -= 1
             wait += WAIT_PER_PERSON
             self.costMatrix[(task.source,
                              task.target)] = step - task.startStep
             self.totalEstimatedCost -= task.estCost
         else:
             running.append(task)
     self.running = running
     if self.load < vehicleControl.getCapacity():
         tasks = []
         for task in self.tasks:
             if task.source == self.position and self.load < vehicleControl.getCapacity(
             ):
                 vehicleControl.leaveStop(task.person.id)
                 statistics.personLoaded(task.person.id, step)
                 self.load += 1
                 wait += WAIT_PER_PERSON
                 task.startStep = step
                 self.running.append(task)
             else:
                 tasks.append(task)
         self.tasks = tasks
     self._findNextTarget(wait)
Exemple #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 checkBoarding(self):
     step = vehicleControl.getStep()
     wait = 0
     running = []
     for task in self.running:
         if task.target == self.position:
             statistics.personUnloaded(task.person.id, step)
             self.load -= 1
             wait += WAIT_PER_PERSON
             self.costMatrix[(task.source, task.target)] = step - task.startStep
             self.totalEstimatedCost -= task.estCost
         else:
             running.append(task)
     self.running = running
     if self.load < vehicleControl.getCapacity(): 
         tasks = []
         for task in self.tasks:
             if task.source == self.position and self.load < vehicleControl.getCapacity():
                 vehicleControl.leaveStop(task.person.id)
                 statistics.personLoaded(task.person.id, step)
                 self.load += 1
                 wait += WAIT_PER_PERSON
                 task.startStep = step
                 self.running.append(task)
             else:
                 tasks.append(task)
         self.tasks = tasks
     self._findNextTarget(wait)