def getInvalidFields(self): invalidFields = [] # Datatype checking if (not DatatypeUtils.isIntegerString(self.view.stepsVar.get())): invalidFields.append( "'Groesse des Ringpuffers' muss eine Ganzzahl sein (zum Beispiel: 1)!" ) if (not DatatypeUtils.isFloatString(self.view.alphaVar.get())): invalidFields.append( "'Alpha' muss eine Kommazahl sein (zum Beispiel: 1.0)!") if (not DatatypeUtils.isFloatString(self.view.gammaVar.get())): invalidFields.append( "'Gamma' muss eine Kommazahl sein (zum Beispiel: 1.0)!") if (not DatatypeUtils.isFloatString(self.view.epsilonVar.get())): invalidFields.append( "'Epsilon' muss eine Kommazahl sein (zum Beispiel: 1.0)!") if (not DatatypeUtils.isFloatString(self.view.lambdaVar.get())): invalidFields.append( "'Lambda' muss eine Kommazahl sein (zum Beispiel: 1.0)!") # Value checking # TODO! return invalidFields
def startApplication(self): if (not self.validateData('Fehlerhafte Einstellungen!', 'Einige Einstellungswerte sind ungueltig: ')): return singleStepModus = DatatypeUtils.stringToBoolean(self.view.singleStep.get()) if singleStepModus: print("single step modus active ") PacmanGlobals.singleSteps = singleStepModus else: PacmanGlobals.singleSteps = singleStepModus PacmanGlobals.logIt = DatatypeUtils.stringToBoolean(self.view.logIt.get()) numGhostsValue = DatatypeUtils.stringToInteger(self.view.numGhostsVar.get()) PacmanGlobals.numGhostAgents = numGhostsValue debugModeSet = DatatypeUtils.stringToBoolean((self.view.displayDebugVar.get())) PacmanGlobals.debugModeBool = debugModeSet self.saveSettingsToConfigFile() self.view.destroy() #arguments = self.getArgumentString() #subprocess.call("python pacman.py " + arguments, shell=True) argumentArray = self.getArgumentArray() startByLauncher(argumentArray)
def processGames(self): maxNumTraining = DatatypeUtils.stringToInteger(self.view.numTrainingVar.get()) increment = DatatypeUtils.stringToInteger(self.view.incrementVar.get()) #from pympler import tracker #memory_tracker = tracker.SummaryTracker() for numTraining in range(0, maxNumTraining, increment): self.processGame(numTraining) GameState.getAndResetExplored()
def getArgumentArray(self, numTrainings): argumentValues = [] argumentValues.append("-x " + str(numTrainings)) numGamesValue = DatatypeUtils.stringToInteger(self.view.numGamesVar.get()) + numTrainings argumentValues.append("--numGames=" + str(numGamesValue)) argumentValues.append("--numghosts=" + self.view.numGhostsVar.get()) argumentValues.append("--layout=" + self.view.layoutVar.get()) argumentValues.append("--pacman=" + self.view.pacmanVar.get()) if (DatatypeUtils.stringToBoolean(self.view.fixRandomSeedVar.get())): argumentValues.append("--fixRandomSeed") argumentValues.append("--textGraphics") argumentValues.append("--quietTextGraphics") return argumentValues
def getInvalidFields(self): invalidFields = [] # Datatype checking if (not DatatypeUtils.isIntegerString(self.view.stepsVar.get())): invalidFields.append("'Groesse des Ringpuffers' muss eine Ganzzahl sein (zum Beispiel: 1)!") if (not DatatypeUtils.isFloatString(self.view.alphaVar.get())): invalidFields.append("'Alpha' muss eine Kommazahl sein (zum Beispiel: 1.0)!") if (not DatatypeUtils.isFloatString(self.view.gammaVar.get())): invalidFields.append("'Gamma' muss eine Kommazahl sein (zum Beispiel: 1.0)!") if (not DatatypeUtils.isFloatString(self.view.epsilonVar.get())): invalidFields.append("'Epsilon' muss eine Kommazahl sein (zum Beispiel: 1.0)!") if (not DatatypeUtils.isFloatString(self.view.lambdaVar.get())): invalidFields.append("'Lambda' muss eine Kommazahl sein (zum Beispiel: 1.0)!") # Value checking # TODO! return invalidFields
def startApplication(self): if (not self.validateData('Fehlerhafte Einstellungen!', 'Einige Einstellungswerte sind ungueltig: ', False)): return numGhostsValue = DatatypeUtils.stringToInteger(self.view.numGhostsVar.get()) PacmanGlobals.numGhostAgents = numGhostsValue self.saveSettingsToConfigFile() self.view.destroy() if not os.path.exists(OUTPUT_DIR): os.makedirs(OUTPUT_DIR) self.writeConfiguration() self.processGames()
def getInvalidFields(self): invalidFields = [] # Datatype checking if (not DatatypeUtils.isIntegerString(self.view.numTrainingVar.get())): invalidFields.append("'Anzahl der Trainings' muss eine Ganzzahl sein (zum Beispiel: 1)!") if (not DatatypeUtils.isIntegerString(self.view.numGamesVar.get())): invalidFields.append("'Anzahl der Spiele' muss eine Ganzzahl sein (zum Beispiel: 1)!") if (not DatatypeUtils.isIntegerString(self.view.numGhostsVar.get())): invalidFields.append("'Anzahl der Geister' muss eine Ganzzahl sein (zum Beispiel: 4)!") if (not DatatypeUtils.isString(self.view.layoutVar.get())): invalidFields.append("'Spielfeld' muss eine Zeichenkette sein (zum Beispiel: mediumClassic)!") if (not DatatypeUtils.isString(self.view.pacmanVar.get())): invalidFields.append("'Pacman-Agent' muss eine Zeichenkette sein (zum Beispiel: KeyboardAgent)!") if (not DatatypeUtils.isBooleanString(self.view.fixRandomSeedVar.get())): invalidFields.append("'Feste Random-Seed' muss ein Wahrheitswert sein (True oder False)!") if (not DatatypeUtils.isFloatString(self.view.zoomVar.get())): invalidFields.append("'Zoomfaktor' muss eine Kommazahl sein (zum Beispiel: 1.0)!") if (not DatatypeUtils.isFloatString(self.view.frameTimeVar.get())): invalidFields.append("'Spielgeschwindigkeit' muss eine Kommazahl sein (zum Beispiel: 0.1)!") if (not DatatypeUtils.isBooleanString(self.view.textGraphicsVar.get())): invalidFields.append("'Ausgabe als Text' muss ein Wahrheitswert sein (True oder False)!") if (not DatatypeUtils.isBooleanString(self.view.quietTextGraphicsVar.get())): invalidFields.append("'Minimale Ausgabe' muss ein Wahrheitswert sein (True oder False)!") # Value checking (numTraining) if (DatatypeUtils.isIntegerString(self.view.numTrainingVar.get())): numTrainingValue = DatatypeUtils.stringToInteger(self.view.numTrainingVar.get()) if (numTrainingValue < 0): invalidFields.append("'Anzahl der Trainings' muss groesser oder gleich " + str(0) + " sein!") # Value checking (numGames) if (DatatypeUtils.isIntegerString(self.view.numGamesVar.get())): numGamesValue = DatatypeUtils.stringToInteger(self.view.numGamesVar.get()) if (numGamesValue < 1): invalidFields.append("'Anzahl der Spiele' muss groesser oder gleich " + str(1) + " sein!") # Value checking (numGhosts) if (DatatypeUtils.isIntegerString(self.view.numGhostsVar.get())): numGhostsValue = DatatypeUtils.stringToInteger(self.view.numGhostsVar.get()) if (numGhostsValue < 0): invalidFields.append("'Anzahl der Geister' muss groesser oder gleich " + str(0) + " sein!") layout = self.view.layoutVar.get() mapNumGhosts = self.getMapNumGhosts(layout) if (mapNumGhosts > 5): mapNumGhosts = 5 if (numGhostsValue > mapNumGhosts): invalidFields.append("'Anzahl der Geister' muss fuer Spielfeld '" + layout + "' kleiner oder gleich " + str(mapNumGhosts) + " sein!") # Value checking (zoom) if (DatatypeUtils.isFloatString(self.view.zoomVar.get())): zoomValue = DatatypeUtils.stringToFloat(self.view.zoomVar.get()) if (zoomValue > MAX_ZOOM): invalidFields.append("'Zoomfaktor' muss kleiner oder gleich " + str(MAX_ZOOM) + " sein!") if (zoomValue < MIN_ZOOM): invalidFields.append("'Zoomfaktor' muss groesser oder gleich " + str(MIN_ZOOM) + " sein!") # Value checking (frameTime) if (DatatypeUtils.isFloatString(self.view.frameTimeVar.get())): frameTimeValue = DatatypeUtils.stringToFloat(self.view.frameTimeVar.get()) if (frameTimeValue > MAX_SPEED): invalidFields.append("'Spielgeschwindigkeit' muss kleiner oder gleich " + str(MAX_SPEED) + " sein!") if (frameTimeValue < MIN_SPEED): invalidFields.append("'Spielgeschwindigkeit' muss groesser oder gleich " + str(MIN_SPEED) + " sein!") return invalidFields
def getInvalidFields(self, justLaunched): invalidFields = [] # Datatype checking if (not DatatypeUtils.isIntegerString(self.view.numTrainingVar.get())): invalidFields.append("'Maximale Anzahl der Trainings' muss eine Ganzzahl sein (zum Beispiel: 100)!") if (not DatatypeUtils.isIntegerString(self.view.incrementVar.get())): invalidFields.append("'Abstufungen der Trainings' muss eine Ganzzahl sein (zum Beispiel: 10)!") if (not DatatypeUtils.isIntegerString(self.view.numGamesVar.get())): invalidFields.append("'Anzahl der Wertungsspiele' muss eine Ganzzahl sein (zum Beispiel: 20)!") if (not DatatypeUtils.isString(self.view.outputFilenameVar.get())): invalidFields.append("'Ausgabedatei' muss eine Zeichenkette sein (zum Beispiel: output_001.csv)!") if (not DatatypeUtils.isIntegerString(self.view.numGhostsVar.get())): invalidFields.append("'Anzahl der Geister' muss eine Ganzzahl sein (zum Beispiel: 4)!") if (not DatatypeUtils.isString(self.view.layoutVar.get())): invalidFields.append("'Spielfeld' muss eine Zeichenkette sein (zum Beispiel: mediumClassic)!") if (not DatatypeUtils.isString(self.view.pacmanVar.get())): invalidFields.append("'Pacman-Agent' muss eine Zeichenkette sein (zum Beispiel: KeyboardAgent)!") if (not DatatypeUtils.isBooleanString(self.view.fixRandomSeedVar.get())): invalidFields.append("'Feste Random-Seed' muss ein Wahrheitswert sein (True oder False)!") # Value checking (numTraining) if (DatatypeUtils.isIntegerString(self.view.numTrainingVar.get())): numTrainingValue = DatatypeUtils.stringToInteger(self.view.numTrainingVar.get()) if (numTrainingValue < 0): invalidFields.append("'Maximale Anzahl der Trainings' muss groesser oder gleich " + str(0) + " sein!") # Value checking (increment) if (DatatypeUtils.isIntegerString(self.view.incrementVar.get())): incrementValue = DatatypeUtils.stringToInteger(self.view.incrementVar.get()) if (incrementValue < 0): invalidFields.append("'Abstufungen der Trainings' muss groesser oder gleich " + str(0) + " sein!") # Value checking (numGames) if (DatatypeUtils.isIntegerString(self.view.numGamesVar.get())): numGamesValue = DatatypeUtils.stringToInteger(self.view.numGamesVar.get()) if (numGamesValue < 1): invalidFields.append("'Anzahl der Spiele' muss groesser oder gleich " + str(1) + " sein!") # Value checking (outputFilename) if (DatatypeUtils.isString(self.view.outputFilenameVar.get()) and (not justLaunched)): if self.outputFileAlreadyExists(): invalidFields.append("Ausgabedatei '" + self.view.outputFilenameVar.get() + "' ist bereits vorhanden!") # Value checking (numGhosts) if (DatatypeUtils.isIntegerString(self.view.numGhostsVar.get())): numGhostsValue = DatatypeUtils.stringToInteger(self.view.numGhostsVar.get()) if (numGhostsValue < 0): invalidFields.append("'Anzahl der Geister' muss groesser oder gleich " + str(0) + " sein!") layout = self.view.layoutVar.get() mapNumGhosts = self.getMapNumGhosts(layout) if (mapNumGhosts > 5): mapNumGhosts = 5 if (numGhostsValue > mapNumGhosts): invalidFields.append("'Anzahl der Geister' muss fuer Spielfeld '" + layout + "' kleiner oder gleich " + str(mapNumGhosts) + " sein!") return invalidFields