91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-12-30 11:19:18 來源:億速云 閱讀:170 作者:小新 欄目:大數據

小編給大家分享一下matlab中小球不落地的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

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

訓練1000次之后的agent效果

在利用之前FrozenLake環境訓練當中那種面向對象方式管理程序時發現訓練后期運行速度變慢、而且是肉眼可觀察到的變慢,所以采用了matlab另一種程序文件管理方式packages

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

以+和名稱命名文件夾形成一個包、在包內可以新建函數或者前面用到的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中小球不落地的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平顺县| 隆德县| 巴东县| 石林| 中江县| 东安县| 甘南县| 吴江市| 沿河| 双流县| 丹阳市| 同德县| 石门县| 张家港市| 北碚区| 正定县| 建始县| 通海县| 库伦旗| 如皋市| 定陶县| 东平县| 江北区| 东宁县| 鹤岗市| 左权县| 大兴区| 体育| 蓬安县| 盐池县| 绵阳市| 鲁山县| 石门县| 泌阳县| 延吉市| 焉耆| 民和| 和田市| 德惠市| 石嘴山市| 昆山市|