if (newTime - lastTime > tiempoDeMuestreo): # Chequeo si tengo que cambiar de episodio if muestrasPorEpisodio == muestrasTomadas: episodio = episodio + 1 muestrasTomadas = 0 if episodio == 8: Experiment.Finalizar() sys.exit(0) # Reinicio sistema pygame.quit() Experiment.Inicializar(False, True) # Levanto nueva Q Q = NetworkReader.readFrom(archivoQ + str(episodio) + ".xml") muestrasTomadas = muestrasTomadas + 1 estado = Experiment.GetEstado() if episodio == 0: # Episodio 0 - Random accion = ActionFunctions.GetSiguienteAccionRandom(estado) else: accion = ActionFunctions.GetSiguienteAccionGreedy(estado, Q) Experiment.EjecutarAccion(accion) lastTime = newTime
# Inicializo el sistema con el que trabajo Experiment.Inicializar(True, True) muestrasTomadas = 0 # El primer episodio toma mas muestras, corre NFQ mas veces y arranca desde arriba if (episodio == 0): Experiment.setAnguloInicial(0.01) NFQIteration._epochs = epochsNFQ_Episodio0 muestrasTotales = muestrasEpisodio0 else: NFQIteration._epochs = epochsNFQ muestrasTotales = muestrasPorEpisodio # Estado y acciones iniciales estado = Experiment.GetEstado() accion = ActionFunctions.GetSiguienteAccionEpsilonGreedy(estado, nfq.Q) lastTime = time.time() Experiment.EjecutarAccion(accion) # Itero hasta obtener una determinada cantidad de muestras while muestrasTomadas < muestrasTotales: # Chequeo que haya pasado el tiempo necesario para # tomar la siguiente muestra newTime = time.time() if newTime - lastTime > tiempoDeMuestreo: # Leo el estado del sistema