千家信息网

matlab中小球不落地的示例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下matlab中小球不落地的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!训练1000次之后的ag
千家信息网最后更新 2026年11月02日matlab中小球不落地的示例分析

小编给大家分享一下matlab中小球不落地的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

训练1000次之后的agent效果

在利用之前FrozenLake环境训练当中那种面向对象方式管理程序时发现训练后期运行速度变慢、而且是肉眼可观察到的变慢,所以采用了matlab另一种程序文件管理方式packages

以+和名称命名文件夹形成一个包、在包内可以新建函数或者前面用到的class

这里就直接使用函数文件、调用函数时需要写明包的名字、比如env.step()

可以观察到在训练1000后运行速度也不会出现肉眼可见的变化

这种方式比起面向对象模式简单游戏环境搭建要更容易上手


在传参和调用的时候采取结构体变量存储原先的对象参数、也就是原先那种一个文件夹下十几个函数文件一个main文件模式下的全局变量、比如

function self = step(self,action)

% 一步动作

self.done = 0;

self.reward=0;

temp_w=self.agent(5)+5*(2-action);

if temp_w<5

temp_w=5;

end

if temp_w>25

temp_w=25;

end

self.reward=0;

ballPos = self.observation(1:2);

ballVel = self.observation(3:4);

if ballPos(1) > self.weight

ballPos(1) = self.weight;

ballVel(1) = -ballVel(1); % 边界

elseif ballPos(1) < 0.1

ballPos(1) = 0.1;

ballVel(1) = -ballVel(1);

elseif ballPos(2) >= self.height

ballPos(2) = self.height;

ballVel(2) = -ballVel(2); % 顶部墙

self.score=self.score+1;

elseif ballPos(2) < 1

if abs(self.agent(5) - ballPos(1)) <= 5 % 底部方块

ballVel(2) = -ballVel(2);

self.reward=10;

else % 方块没接住球

self.reward=-1;

self.done=1;

end

end

ballPos = ballPos + ballVel;

self.observation=[ballPos;ballVel;temp_w];

end

这是agent执行一个动作的函数、把这个环境中所以变量存储在self参数中、在env.step(env,A)中传递进来、最后再返回出去

对比原先的oop模式、可以看出就是再传参的时候显式的传入整个环境

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

matlab强化学习Sarsa与Sarsa(lambda)对比


最后就是这个训练程序了、依然采用q-table、所以没有太多变化、将之前提出的几个优化想法都加进来

% 强化学习

ccc

% rng('default');

env0=env.single_pong(30,30,0.001);

single_pong_rl=rl.rl_q_table(env0.actions,0.9,0.2,0.9);

fig.fig=figure(1);

fig.base=0;

%%

for episode =1:env0.max_episodes*1

fig.show = ~mod(episode,1);

env0=env.reset(env0);

fig=env.render(env0,fig);

while 1

A = rl.choose_action(single_pong_rl,env0.agent);

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

single_pong_rl=rl.learn(single_pong_rl,env0, A); % 更新

rl.dump(single_pong_rl,fig.show);

env0.agent=env0.observation;

fig=env.render(env0,fig);

if env0.done

break

end

end

end

%%

clear fig A episode

close all

save(filename);


以上是"matlab中小球不落地的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

文件 函数 训练 环境 学习 动作 变量 对象 方式 模式 程序 篇文章 中小 示例 分析 落地 内容 参数 就是 文件夹 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 以房互联网科技 世界互联网领先科技成果 亿人帮互联网科技 成都狮子座互联网科技 多迪互联网科技有限公司 盛创互联网科技有限公司 互联网科技博主是什么意思 千方科技属于互联网企业吗 互联网与医疗科技 链环科技传统企业怎么转型互联网 乌鲁木齐新华智原互联网科技学校 互联网科技和法律行业 启辰互联网科技 中天科技中国工业互联网 互联网营销推广黑科技 本届互联网大会上的黑科技 国产互联网科技公司 福仕德教育科技互联网 科技互联网专业工作会议发言稿 山东蛋芒互联网科技有限公司 伟宏互联网科技 湖南永感互联网科技有限公司 互联网科技有限公司图片 互联网 卓越科技 互联网与未来科技 中国互联网有什么科技含量 福州新华互联网科技学校 知乎 恒生科技指数 中概互联网 互联网科技大会大佬 互联网科技创新方面的资料
0