专栏首页帮你学MatLabmatlab强化学习Q-Learning与Sarsa对比

matlab强化学习Q-Learning与Sarsa对比

Q-Learning强化学习FrozenLake求解

观察下一步选取哪一个动作会带来最大的奖励, 但是在真正要做决定时, 却不一定会选取到那个带来最大奖励的动作, Q-learning 只是估计了一下接下来的动作值

Sarsa

实践派, 说到做到, 在这一步估算的动作也是接下来要做的动作, 在环境中每走一步, 更新一次自己的行为准则

% 强化学习Sarsa

ccc

rng('default');

env=two_dimensional_env(4,4,0.01);

two_dimensional_rl=rl_q_table(env.actions,0.9,0.1,0.9);

% pause(2)

for episode =1:env.max_episodes

env = env.reset();

env.render();

A = two_dimensional_rl.choose_action(env.agent);

while 1

env = env.step(A); % 采取动作获得状态和奖励

A_ = two_dimensional_rl.choose_action(env.observation);

two_dimensional_rl=two_dimensional_rl.learn(env, A, A_); % 更新

two_dimensional_rl.dump();

env.agent=env.observation;

A=A_;

env.render();

if env.done

break

end

end

end

探索环境没有变化,只是在绘图时用

set(0,'CurrentFigure',self.fig)

ax = axes('Parent',self.fig);

代替原先夺取焦点的语句

强化学习方法对象需要改动的是

function obj=learn(obj,env, A, A_)

q_predict_arr = obj.find_line(env.agent);

q_predict = q_predict_arr(A);

if env.done ~= 1

line = obj.find_line(env.observation);

q_target = env.reward + obj.gamma * line(A_); % 没有结束

else

q_target = env.reward; % 一局结束了

end

% 更新QLearning table

table_line = obj.find_line(env.agent);

table_line(A) = table_line(A) + obj.alpha * (q_target - q_predict);

obj.q_table(StrHelper.arr2str(env.agent)) = table_line;

end

相关工具方法在

https://github.com/sickle12138/MatGamer

本文分享自微信公众号 - 帮你学MatLab(MatLab_helper),作者:伏毅

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MATLAB强化学习toolbox

    新版本MATLAB提供了Reinforcement Learning Toolbox可以方便地建立二维基础网格环境、设置起点、目标、障碍,以及各种agent模型

    万木逢春
  • matlab倒立摆强化学习训练

    Actor(玩家):为了得到尽量高的reward,实现一个函数:输入state,输出action。用神经网络来近似这个函数。目标任务就是如何训练神经网络,让它的...

    万木逢春
  • MATLAB强化学习 PG 算法

    采用 policy gradient 学习方法训练agent,并行训练的参数也需要调整

    万木逢春
  • NDK学习笔记(二)使用JNI同原生代码通信 原

    任何使用JNI的操作都需要两次或者三次函数调用,因此要实现大量的原生方法并让它们同Java类保持同步很容易编程一件非常艰辛的工作。

    LeoXu
  • iOS 自动打包 - fastlane (二)

    .env 是非常简单的配置文件,简单到什么程度呢? 它只支持一维K/V格式的配置项,而且 key 和 value 都只能是字符串。

    大壮
  • [PHP] 框架中.env文件的加载过程

    现在很多框架使用根目录的.env文件来配置环境变量,php本身是不会去解析这个文件的,需要使用php代码读取和解析这个文件放入环境变量中

    陶士涵
  • python Fabric使用详解及示例

    abric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括...

    py3study
  • jni小细节操作

    曾大稳
  • laravel 学习之路 配置config

    laravel 的配置项是在根目录下的 /config 目录中,还有一个是根目录下的 .env文件

    风清醉
  • Python 中更优雅的环境变量设置方案

    在运行一个项目的时候,我们经常会遇到设置不同环境的需求,如设置是开发环境、测试环境还是生产环境,或者在某些设置里面可能还需要设置一些变量开关,如设置调试开关、日...

    崔庆才

扫码关注云+社区

领取腾讯云代金券