迷宫_随机实验_边做边学深度强化学习:PyTorch程序设计实践

  • 0、相关文章
  • 1、导入所使用的包
  • 2、 定义迷宫
  • 3、定义迷宫动作
  • 4、策略参数θ转换为行动策略π
  • 5、定义随机移动函数
  • 6、定义使智能体移动到目标的函数
  • 7、智能体移动到目标
  • 8、运行路径可视化
  • 9、最终结果
  • 10、代码下载
  • 10、参考资料

0、相关文章

迷宫_Sarsa算法_边做边学深度强化学习:PyTorch程序设计实践(2)

1、导入所使用的包

# 导入所使用的包
import numpy as np
import matplotlib.pyplot as plt

2、 定义迷宫

fig = plt.figure(figsize=(5, 5))
ax = plt.gca()# 画出红色的墙壁
plt.plot([1, 1], [0, 1], color='red', linewidth=2)
plt.plot([1, 2], [2, 2], color='red', linewidth=2)
plt.plot([2, 2], [2, 1], color='red', linewidth=2)
plt.plot([2, 3], [1, 1], color='red', linewidth=2)# 画出表示状态的文字S0-S8
plt.text(0.5, 2.5, 'S0', size=14, ha='center')
plt.text(1.5, 2.5, 'S1', size=14, ha='center')
plt.text(2.5, 2.5, 'S2', size=14, ha='center')
plt.text(0.5, 1.5, 'S3', size=14, ha='center')
plt.text(1.5, 1.5, 'S4', size=14, ha='center')
plt.text(2.5, 1.5, 'S5', size=14, ha='center')
plt.text(0.5, 0.5, 'S6', size=14, ha='center')
plt.text(1.5, 0.5, 'S7', size=14, ha='center')
plt.text(2.5, 0.5, 'S8', size=14, ha='center')
plt.text(0.5, 2.3, 'START', ha='center')
plt.text(2.5, 0.3, 'GOAL', ha='center')# 设定画图的范围
ax.set_xlim(0, 3)
ax.set_ylim(0, 3)
ax.set_title("Random")
plt.tick_params(axis='both', which='both', bottom='off', top='off',labelbottom='off', right='off', left='off', labelleft='off')# 当前位置S0用绿色圆圈画出
line, = ax.plot([0.5], [2.5], marker="o", color='g', markersize=60)

3、定义迷宫动作

# 设定参数θ的初始值theta_0,用于确定初始方案# 行为状态0~7,列为用↑、→、↓、←表示的移动方向
theta_0 = np.array([[np.nan, 1, 1, np.nan],  # s0[np.nan, 1, np.nan, 1],  # s1[np.nan, np.nan, 1, 1],  # s2[1, 1, 1, np.nan],  # s3[np.nan, np.nan, 1, 1],  # s4[1, np.nan, np.nan, np.nan],  # s5[1, np.nan, np.nan, np.nan],  # s6[1, 1, np.nan, np.nan],  # s7、※s8是目标,无策略])

效果:

4、策略参数θ转换为行动策略π

def simple_convert_into_pi_from_theta(theta):'''简单计算百分比'''[m, n] = theta.shape  # 获取theta矩阵大小pi = np.zeros((m, n))for i in range(0, m):pi[i, :] = theta[i, :] / np.nansum(theta[i, :])  # 计算百分比pi = np.nan_to_num(pi)  # 将nan转换为0return pi

5、定义随机移动函数

# 1步移动后求得状态s
def get_next_s(pi, s):direction = ["up", "right", "down", "left"]# 根据概率pi[s,:]选择directionnext_direction = np.random.choice(direction, p=pi[s, :])# 移动后切换状态if next_direction == "up":s_next = s - 3 elif next_direction == "right":s_next = s + 1  elif next_direction == "down":s_next = s + 3  elif next_direction == "left":s_next = s - 1  return s_next

6、定义使智能体移动到目标的函数

def goal_maze(pi):s = 0  # 开始地点state_history = [0]  # 记录智能体移动轨迹的列表while (1):  # 循环,直至到达目标next_s = get_next_s(pi, s)state_history.append(next_s)if next_s == 8:  # 到达目标地点则终止for i in range(0,10):state_history.append(next_s)breakelse:s = next_sreturn state_history

7、智能体移动到目标

# 求初始策略π
pi_0 = simple_convert_into_pi_from_theta(theta_0)
state_history = goal_maze(pi_0)
print(state_history)
print("求解迷宫问题所需要的步数是:" + str(len(state_history) - 1))

8、运行路径可视化

# 参考URL http://louistiao.me/posts/notebooks/embedding-matplotlib-animations-in-jupyter-notebooks/
from matplotlib import animation
from IPython.display import HTMLdef init():'''初始化背景图像'''line.set_data([], [])return (line,)def animate(i):'''每一帧的画面内容'''state = state_history[i]  # 画出当前的位置x = (state % 3) + 0.5  # 状态的x坐标为状态数除以3的余数加0.5y = 2.5 - int(state / 3)  # 状态y坐标为2.5减去状态数除以3的商line.set_data(x, y)return (line,)# 用初始化函数和绘图函数来生成动画
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=len(state_history), interval=200, repeat=False)anim.save('result/maze_Random.gif',writer='pillow')
HTML(anim.to_jshtml())

9、最终结果

10、代码下载

跳转到下载地址

10、参考资料

[1]边做边学深度强化学习:PyTorch程序设计实践

迷宫_随机实验_边做边学深度强化学习:PyTorch程序设计实践(1)相关推荐

  1. 倒立摆_DQN算法_边做边学深度强化学习:PyTorch程序设计实践(5)

    倒立摆_DQN算法_边做边学深度强化学习:PyTorch程序设计实践(5) 0.相关系列文章 1.Agent.py 2.Brain.py 3.Environment.py 4.Val.py 5.Rep ...

  2. 网络安全_密码学实验_非对称加密算法RSA

    网络安全_密码学实验_非对称加密算法RSA 一.实验环境 二.非对称加密RSA 1.理解RSA算法原理 2.加密过程 解密过程 一.实验环境 PyCharm 2019.2.4 (Professiona ...

  3. 网络安全_密码学实验_对称加密算法DES

    网络安全_密码学实验_对称密码非对称密码_加密算法DES RSA 一.实验环境 二.对称加密DES 1.理解DES算法原理 2.加密过程 3.解密过程 三.运行结果 一.实验环境 PyCharm 20 ...

  4. 结构体实验报告总结_解读!清华、谷歌等10篇强化学习论文总结

    强化学习(Reinforcement Learning,RL)正成为当下机器学习中最热门的研究领域之一.与常见的监督学习和非监督学习不同,强化学习强调智能体(agent)与环境(environment ...

  5. 乐器演奏_深度强化学习代理演奏的蛇

    乐器演奏 Ever since I watched the Netflix documentary AlphaGo, I have been fascinated by Reinforcement L ...

  6. 深度强化学习和强化学习_强化强化学习背后的科学

    深度强化学习和强化学习 机器学习 ,强化学习 (Machine Learning, Reinforcement Learning) You're getting bore stuck in lockd ...

  7. 深度强化学习系列之(13): 深度强化学习实验中应该使用多少个随机种子?

    How Many Random Seeds Should I Use? Statistical Power Analysis in (Deep) Reinforcement Learning Expe ...

  8. 深度强化学习_深度学习理论与应用第8课 | 深度强化学习

    本文是博雅大数据学院"深度学习理论与应用课程"第八章的内容整理.我们将部分课程视频.课件和讲授稿进行发布.在线学习完整内容请登录www.cookdata.cn 深度强化学习是一种将 ...

  9. 通过图注意力神经网络进行多智能体游戏抽象_[读论文] AttnPath: 将图注意力机制融入基于深度强化学习的知识图谱推理中...

    论文原文:Incorporating Graph Attention Mechanism into Knowledge Graph Reasoning Based on Deep Reinforcem ...

最新文章

  1. matlab 线模式密度,环形腔窄线宽光纤激光器的研究
  2. 外贸网络推广浅析新建网站该如何更快速进入搜索结果首页?
  3. iOS NSString 字符串处理:截取字符串、匹配字符串、分隔字符串
  4. linux配置apache tomcat,linux下apache+tomcat的配置实现
  5. mysql添加字典子项_如何使用executemany在MySQL中插入Python字典列表
  6. dubbo 学习资料
  7. 3389远程批量服务器,3389远程桌面登陆器 支持3389远程批量连接
  8. Linux操作系统 (二)下载以及安装
  9. layer使用心得3
  10. 如何搭建一个前端脚手架
  11. 基于stm32的100KV高压发生器 倍压电路
  12. 开机出现 A disk read error occurred Press 时怎么办
  13. Win10设置:输入法快捷键【仅保留中英切换】,其他花里胡哨快捷键全部删除
  14. java map存储对象_java-在ConcurrentHashMap中存储复杂对象
  15. Aquaculture Equipment 水产养殖设备谷歌Google搜索量和海外市场竞争度分析
  16. Qt(C++)入门学习
  17. 详解i++和++i,通俗易懂
  18. 高端大气上档次的新型界面
  19. 将区块链带到第三世界:分布式电商BitCherry的格局与野心
  20. 手绘图分析(Sketch Analysis)

热门文章

  1. 伤害世界怎么自建服务器,伤害世界服务器架设方法_伤害世界Hurtworld怎么架设服务器_游戏堡...
  2. 机器学习和人工智能的关系
  3. linux美学设计,扁平化设计美学探讨
  4. NBA球员的选秀顺序和实际表现有多大差距?评估球员表现的VORP值又是怎么计算的?
  5. 2019年深度学习自然语言处理最新十大发展趋势
  6. Pip修改阿里云镜像
  7. 毕业设计-基于效果的图像超级分辨率重建
  8. 对于Java毕业设计选题的一些看法
  9. 计算机房屋出租系统毕业设计选题意义的说明
  10. 毛玻璃效果 php,CSS3教程之制作倾斜导航条和毛玻璃效果