DQN算法控制模拟旋转摆(Matlab代码实现)
创始人
2024-06-03 01:22:03
0

       目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

本期我们尝试用DQN控制倒立摆。倒立摆是非常经典的控制问题,如果DQN能够有效实现倒立摆的控制,也就意味着DQN等强化学习算法适用于更复杂的动力学控制问题,即就是说,采用相似的思想,我们可以将强化学习算法用于机械臂控制、卫星姿态控制等工程问题上。

像往常一样,想要实现倒立摆的强化学习控制,我们可以把这样一个大问题拆解成几个相对独立的问题解决。第一是使用MatLab实现倒立摆的数值仿真建模;第二则是修改DQN算法,使之能够与倒立摆环境相适应;第三则是改善程序的整体框架,使它更简洁、更易于维护。

第一个问题中,倒立摆的动力学方程可以整理为常微分方程;同时,为了更好地与之前我们掌握的神经网络工具箱结合,我们使用MatLab的Ode45()函数实现动力学仿真。

第二个问题,我们需要根据倒立摆问题调整神经网络和DQN算法的相关参数,使之能够满足控制需求。这其中,神经网络的输入、输出参数需要得到调整;DQN算法中的回报(reward)需要修改;训练循环的计数方式以及训练周期等内容也需要调整。

最后,由于整个程序中加入了倒立摆的数值仿真,不仅参数和常数增多,程序也相对网格迷宫程序复杂了很多。因此,我们需要优化程序的编写,以提高程序的易读性和维护性。

📚2 运行结果

主函数部分代码:

close all

clear all

clc

% Add DeepLearnToolbox to path

addpath(genpath('DeepLearningToolbox'));

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  UWAGA  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

pokazanie = 0; % 1 -- prezentacja działania już nauczonej sieci(bez uczenia), sieci przechowywane są w pliku "savedAgents")

               % 0 -- nauka sieci od początku

nazwa_sieci = "siec(300sesji)"; % (przykład) jeśli wybrana została wyżej opcja 1;  % TUTAJ WPISUJEMY NAZWĘ NAZWĘ GOTOWEJ SIECI np. 'matlab1'              

               

% Parametry wahadła (wartości te zostały zidentyfikowane na

% podstawie prawdziwego modelu, można je modyfikować)

tau1 = 0.036;                    % moment siły pojedyńczej akcji (maksymalny moment naszego rzeczywistego silnika wynosi 0.267)

                                 % dla tau1 = 0 wahadło nie będzie miało żadnego pobudzenia 

                                 %(można testować zachowanie się wachadła tylko dla zadanych warnunków początkowych) 

                                 

tau2 = 0;                        % zakłócenie wahadła (moment siły) % stała wartość lepiej robić to w simulinku blokiem jakiejś funkcji

L1 = 0.05;                       % długość ramienia od osi silnika

L2 = 0.1;                        % długość wahadła

l1 = 0.022;                      % długość punktów mas ramienia 1 od środka osi silnika (miejsce położenia łożysk, jest to większość masy ramienia 1)

l2 = L2/2;                       % odległość środka masy ramienia 2 od jego osi obrotu 

m1 = 0.045;                      % masa środków masy ramienia 1

m2 = 0.015;                      % masa ramienia 2

J1 = 2*m1*l1^2;                  % moment bezwładności ramienia 1 (dwa łożyska składające symetrycznie w tej samej odległości od osi obrotu silnika się) nie zmieniać

J2 = 1/3*m2*L2^2;                % moment bezwładności ramienia 2 nie zmieniać

b1 = -5*10^(-3);                 % tłumienie obrotu ramienia 1

b2 = -5*10^(-5);                 % tłumienie obrotu ramienia 2

g = 9.81;                        % przyśpieszenie ziemskie

J1_dash = J1;            

J2_dash = J2;

J0_dash = J1_dash + m2*L1^2;

🎉3 参考文献

[1]蒋国飞,吴沧浦.基于Q学习算法和BP神经网络的倒立摆控制[J].自动化学报,1998(05):88-92.DOI:10.16383/j.aas.1998.05.014.

👨‍💻4 Matlab代码

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...