def test_different_parameter(alpha_test, gamma_test, epsilon_test, epoch_test): g = Maze(maze_size=maze_size, trap_number=trap_number) r = Robot(g, alpha=alpha_test, epsilon0=epsilon_test, gamma=gamma_test) r.set_status(learning=True) runner = Runner(r, g) runner.run_training(epoch_test, display_direction=True) print("alpha: {}, gamma: {}, epsilon: {}, epoch: {}".format( alpha_test, gamma_test, epsilon_test, epoch_test)) runner.plot_results()
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Fri Oct 5 14:12:30 2018 @author: htaiwan """ from Maze import Maze from Robot import Robot from Runner import Runner epoch = 20 epsilon0 = 0.7 alpha = 0.5 gamma = 0.9 maze_size = (6,6) trap_number = 1 maze = Maze(maze_size=maze_size, trap_number=trap_number) robot = Robot(maze, alpha=alpha, epsilon0=epsilon0, gamma=gamma) robot.set_status(learning=True) runner = Runner(robot, maze) runner.run_training(epoch, display_direction=True) #runner.generate_movie(filename = "final.avi") # 你可以注释该行代码,加快运行速度,不过你就无法观察到视频了。 runner.plot_results()
epsilon0 = 1 # 初始探索概率 alpha = 0.5 # 公式中的 ⍺ gamma = 0.94 # 公式中的 γ maze_size = 11 # 迷宫size """ 使用 QLearning 算法训练过程 """ g = Maze(maze_size=maze_size) r = QRobot(g, alpha=alpha, epsilon0=epsilon0, gamma=gamma) runner = Runner(r) runner.run_training(epoch, training_per_epoch=int(maze_size * maze_size * 1.5)) # 生成训练过程的gif图, 建议下载到本地查看;也可以注释该行代码,加快运行速度。 # runner.generate_gif(filename="results/size5.gif") runner.plot_results() # 输出训练结果,可根据该结果对您的机器人进行分析。 ''' test_memory = ReplayDataSet(max_size=1e3) # 初始化并设定最大容量 actions = ['u', 'r', 'd', 'l'] test_memory.add((0,1), actions.index("r"), -10, (0,1), 1) # 添加一条数据(state, action_index, reward, next_state) print(test_memory.random_sample(1)) # 从中随机抽取一条(因为只有一条数据) ''' ''' os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE" # 允许重复载入lib文件 maze = Maze(maze_size=5) """选择keras版本或者torch版本的机器人, MinRobot是尽量选择reward值最小的动作,对象初始化过程中修改了maze的reward参数""" # robot = KerasRobot(maze=maze) robot = TorchRobot(maze=maze)