Beispiel #1
0
def run(episodeNum):
    episodeNum = int(episodeNum)

    setupMultithreading()
    results = multiprocessing.Queue()
    finished = multiprocessing.Queue()

    processes = []
    for _ in range(localConstants.REPEATS):
        for percentage in np.linspace(0.1, 1.0, num=10):
            processes.append(
                multiprocessing.Process(target=threadRun,
                                        args=(percentage, episodeNum, results,
                                              finished)))

    results = executeMulti(processes,
                           results,
                           finished,
                           numResults=episodeNum * len(processes))

    # plotting.plotMulti("Competing Agents", results=results, ylabel="Job #", xlabel="Episode #")  # , save=True)
    plotting.plotMultiWithErrors("Competing Agents",
                                 results=results,
                                 ylabel="Job #",
                                 xlabel="Episode #")  # , save=True)
	localConstants.REPEATS = 16
	numEpisodes = int(numEpisodes)
	# , ]minimalTableAgent
	systemState = extendedSystemState
	# agentsToTest = [minimalTableAgent, randomAgent] # minimalTableAgent, , localAgent]

	numPhases = int(3e1)
	for agent, offPolicy in [(minimalDeepAgent, True), (minimalDeepAgent, False), (minimalTableAgent, False)]: 
		for production in [True, False]:
			for pretrain in [True, False]:
				for _ in range(localConstants.REPEATS):
					for centralised in [True]:
						# if not (not centralised and agent is randomAgent):
						processes.append(multiprocessing.Process(target=runThread, args=(
							len(processes), agent, systemState, production, offPolicy, pretrain, numPhases, numEpisodes, results, finished)))

	results = executeMulti(processes, results, finished, numResults=len(
		processes) * numPhases * numEpisodes, assembly=assembleResults, chooseBest=1.0)

	plotting.plotMultiWithErrors("experiment6", title="experiment 6", results=results, ylabel="Job #", xlabel="Episode #")  # , save=True)


if __name__ == "__main__":
	setupMultithreading()
	try:
		run(1e2)
	except:
		traceback.print_exc(file=sys.stdout)

		print("ERROR")