Exemplo n.º 1
0
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()
Exemplo n.º 2
0
#!/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()
Exemplo n.º 3
0
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)