Commit a81d9c26 authored by Ioannis Papagiannopoulos's avatar Ioannis Papagiannopoulos Committed by Georgios Dagkakis

correction in findStationsForOperators method of Router

parent ffa8d1de
...@@ -354,12 +354,13 @@ class Router(ObjectInterruption): ...@@ -354,12 +354,13 @@ class Router(ObjectInterruption):
#======================================================================= #=======================================================================
def sortOperators(self): def sortOperators(self):
if self.candidateOperators: if self.candidateOperators:
# calculate the time the operators have been waiting
for op in self.candidateOperators: for op in self.candidateOperators:
op.criterion=0 op.waitingTime=0
if op.schedule: if op.schedule:
op.criterion=self.env.now-op.schedule[-1][-1] op.waitingTime=self.env.now-op.schedule[-1][-1]
# sort according to the time they concluded their last operation # sort according to the time they concluded their last operation
self.candidateOperators.sort(key=lambda x: x.criterion, reverse=True) self.candidateOperators.sort(key=lambda x: x.waitingTime, reverse=True)
#=========================================================================== #===========================================================================
...@@ -380,7 +381,7 @@ class Router(ObjectInterruption): ...@@ -380,7 +381,7 @@ class Router(ObjectInterruption):
operator.candidateEntities.append(station.currentEntity) operator.candidateEntities.append(station.currentEntity)
else: else:
for predecessor in station.previous: for predecessor in station.previous:
if predecessor in self.pendingQueues and not station in occupiedStations: if predecessor in self.pendingQueues and not station in occupiedStations and station.isInRoute(predecessor):
if predecessor.getActiveObjectQueue()[0] in self.pending\ if predecessor.getActiveObjectQueue()[0] in self.pending\
and not predecessor.getActiveObjectQueue()[0] in occupiedEntities: and not predecessor.getActiveObjectQueue()[0] in occupiedEntities:
operator.candidateEntities.append(predecessor.getActiveObjectQueue()[0]) operator.candidateEntities.append(predecessor.getActiveObjectQueue()[0])
...@@ -392,11 +393,10 @@ class Router(ObjectInterruption): ...@@ -392,11 +393,10 @@ class Router(ObjectInterruption):
if operator in self.preemptiveOperators: if operator in self.preemptiveOperators:
operator.candidateEntities.sort(key=lambda x: x.isCritical, reverse=True) operator.candidateEntities.sort(key=lambda x: x.isCritical, reverse=True)
# sort the candidate entities according to their responsible personnel # sort the candidate entities according to their responsible personnel
operator.candidateEntities.sort(key=lambda x:x.responsibleForCurrentStep()==operator) operator.candidateEntities.sort(key=lambda x:x.responsibleForCurrentStep()==operator,reverse=True)
# pick an entity and a station # pick an entity and a station
if operator.candidateEntities: if operator.candidateEntities:
operator.candidateEntity=operator.candidateEntities[0] operator.candidateEntity=operator.candidateEntities[0]
# if the entities currentStation is machine # if the entities currentStation is machine
if operator.candidateEntity.currentStation in self.pendingMachines: if operator.candidateEntity.currentStation in self.pendingMachines:
operator.candidateStation=operator.candidateEntity.currentStation operator.candidateStation=operator.candidateEntity.currentStation
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment