def __init__(self, nodes, edges, stations, areas, interfaces, platforms, trainDictRaw, travPop, popMemory, param, runID, instanceID): #final instance flag if (instanceID >= Parameter.learningInstances): param.isFinalInstance = True else: param.isFinalInstance = False #last learning instance flag if (instanceID == Parameter.learningInstances - 1): lastLearningInstance = True else: lastLearningInstance = False #last final instance flag if (instanceID == Parameter.learningInstances + Parameter.finalInstances - 1): lastFinalInstance = True else: lastFinalInstance = False #all the following should go into an iteration/instance simEnv = simpy.Environment() pedNet = PedestrianNetwork(nodes, edges, stations, areas, interfaces, platforms, simEnv) transSys = TransitSystem(trainDictRaw, simEnv, pedNet, param) travPop = Population(travPop, pedNet, transSys, popMemory, param) travPop.addToSimulation(simEnv, pedNet, transSys, popMemory) transSys.addToSimulation(simEnv, pedNet) #reset number of required explorations numEpisodesToExplore = popMemory.resetExplorationSet() #run queueing network simEnv.run() #print missing interface specifications if Parameter.showWarnings: print(pedNet.interfaceDebugSet) #reset potentials for en-route path choice (required for post-processing and further instances) popMemory.resetAllPotentials() if Parameter.textOutput and param.isFinalInstance: instanceLog = "Run: %d, learningInstance: %d\n" % (runID, instanceID) instanceLog += "total relevant cost: %.2f (%d travelers)\n" % travPop.getTotTravDisutility( ) instanceLog += "number of episodes left to explore: %d\n\n" % numEpisodesToExplore instanceLog += travPop.generateLog() instanceLog += transSys.generateLog() instanceLog += popMemory.generatePathList() fileNameLog = param.fileNameLog + ("run_%d_instance_%d.txt" % (runID, instanceID)) with open(fileNameLog, 'w') as logFile: logFile.write(instanceLog) if (runID == 0 and instanceID == 0 and Parameter.verboseOutput): #fileNamePedList = Parameter.fileNamePathList + ".txt" fileNameGraph = Parameter.fileNameGraph + ".png" pedNet.generateGraph(fileNameGraph) #popMemory.generatePathList(fileNamePedList) if param.isFinalInstance: #generate simulation output self.simOutput = SimulationOutput(pedNet, transSys, travPop, param) if lastLearningInstance: print( "Run %d learning completed after %d instances (number of episodes left to explore: %d)" % (runID + 1, instanceID + 1, numEpisodesToExplore)) if lastFinalInstance: print("Run %d completed after %d instances" % (runID + 1, instanceID + 1))