【matlab】强化深度学习⼯具箱例程调⽤汇总及编程实例
前⾔
前段时间帮导师申请项⽬时涉及到了智能化,因为⾏⽂过于天马⾏空导师要求将⼤致思路仿真出来试试,于是就⼜到了强⼤的MATLAB,在⽹上⼀顿搜索后发现最新的强化学习以及深度学习的⼯具箱只有2019年以后的matlab才有,⽤我的2018b只能跑⼀些简简单单的问题还做不到可视化。
装好以后不断学习发现matlab⾃⾝是有很多例程的,于是从官⽹的页⾯⾥⼀个⼀个分类带标题标注好整理了⼀个程序,虽然没啥技术含量但是确实挺⽅便的。
前排友情提⽰注释:
快捷键Ctrl+R是注释
Ctrl+T是反注释
RLToolbox_example
%强化学习⼯具箱学习,调⽤相关例⼦
%深度学习的部分也有
%2020年4⽉18⽇
%王江江
% 在Matlab命令窗⼝中执⾏以下命令可以打开相关⽰例。有些可能只有2020a才有,2019b也不够
clear all;
%% =================================强化学习========================================
cd 'D:\Program Files\Polyspace\R2019b\examples\rl\main';
%% ⽹格寻路训练 Q-Learning 智能体解决⽹格世界问题
% openExample('rl/BasicGridWorldExample')
% BasicGridWorldExample
%% MDP环境中的培训强化学习代理马尔可夫决策过程
% openExample('rl/RLGenericMDPExample')
% RLGenericMDPExample
%% 训练策略梯度智能体以平衡车杆系统
% openExample('rl/MATLABCartPolePGExample')
% /MATLABCartPolePGExample
%% 训练 DQN 智能体⽤于车道保持辅助
% openExample('rl/TrainDQNAgentForLaneKeepingAssistExample')
% TrainDQNAgentForLaneKeepingAssistExample
%% 训练DQN代理以使⽤ **并⾏** 计算进⾏车道保持辅助  simulink
%Train DQN Agent for Lane Keeping Assist Using Parallel Computing
% openExample('deeplearning_shared/TrainDQNAgentForLKAUsingParallelComputingExample')
%% 在Simulink中训练深度确定性策略梯度(DDPG)代理以保持车道保持(LKA)
% openExample('rl/TrainDDPGAgentWithSupervisedActorForLaneKeepingExample')
% TrainDDPGAgentWithSupervisedActorForLaneKeepingExample
%% 训练,验证和测试模仿汽车车道保持辅助系统的模型预测控制器⾏为的深度神经⽹络
% openExample('rl/ImitateMPCControllerForLaneKeepAssistExample')
% ImitateMPCControllerForLaneKeepAssistExample
%% 训练使⽤Simscape Multibody建模的四⾜机器⼈,使⽤深度确定性策略梯度(DDPG)代理进⾏⾏⾛
% openExample('rl/RLQuadrupedRobotExample')
% RLQuadrupedRobotExample
%% Cart-Pole MATLAB Environment 平衡倒⽴
% openExample('rl/CreateMATLABEnvironmentUsingCustomFunctionsExample')
% CreateMATLABEnvironmentUsingCustomFunctionsExample
%% 训练⾓⾊批评(AC)代理以平衡⽤MATLAB建模的⼩车杆系统
% openExample('rl/MATLABCartPoleParACExample')
% openExample('rl/MATLABCartPoleParACExample')
% MATLABCartPoleParACExample
%% 训练⾓⾊批评(AC)代理以平衡⽤MATLAB建模的⼩车杆系统不同
% openExample('rl/MATLABCartPoleACExample')
% MATLABCartPoleACExample
%% 训练深度Q学习⽹络(DQN)代理以平衡在MATLAB中建模的⼩车系统
% openExample('rl/MATLABCartPoleDQNExample')
% MATLABCartPoleDQNExample
%% 训练策略梯度(PG)代理以平衡⽤MATLAB建模的购物车系统
% openExample('rl/MATLABCartPolePGExample')
% MATLABCartPolePGExample
%% 训练深度Q学习⽹络(DQN)代理以摆动并平衡Simulink中建模的钟摆
% openExample('rl/SimulinkPendulumSwingupDQNExample')
% SimulinkPendulumSwingupDQNExample
%% 训练深度确定性策略梯度(DDPG)代理以摆动并平衡Simulink中建模的钟摆
% openExample('rl/SimulinkPendulumSwingupDDPGExample')
% SimulinkPendulumSwingupDDPGExample
%% 如何将其转换为强化学习环境界⾯,并在此环境中训练深度确定性策略梯度(DDPG)代理。
% openExample('rl/SimulinkPendulumBusDDPGExample')
% SimulinkPendulumBusDDPGExample
%% 训练深度确定性策略梯度(DDPG)代理以摆动并平衡以Simscape?Multibody为模型的系统
% openExample('rl/SimscapeCartpoleDDPGExample')
% SimscapeCartpoleDDPGExample
%% ⽔箱控制
% openExample('rl/WaterTankEnvironmentModelExample')
% WaterTankEnvironmentModelExample
%% 在Simulink中训练深度Q学习⽹络(DQN)代理以保持车道保持(LKA)
% openExample('rl/TrainDQNAgentForLaneKeepingAssistExample')
% TrainDQNAgentForLaneKeepingAssistExample
%% 训练深度确定性策略梯度(DDPG)代理程序以控制在MATLAB中建模的⼆阶动态系统
% openExample('rl/DoubleIntegDDPGExample')
% DoubleIntegDDPGExample
%% ⽤基线训练策略梯度(PG)代理以控制在MATLAB中建模的⼆阶动态系统
% openExample('rl/MATLABDoubleIntegPGExample')
% MATLABDoubleIntegPGExample
%% 训练⾃定义线性⼆次调节(LQR)代理以控制在MATLAB中建模的离散时间线性系统
% openExample('rl/TrainCustomLQRAgentExample')
% TrainCustomLQRAgentExample
tool工具箱
%% 为强化学习策略定义⾃定义培训循环
% openExample('rl/TrainRLPolicyUsingCustomTrainLoopExample')
% TrainRLPolicyUsingCustomTrainLoopExample
%% ================================深度学习=========================================== % cd 'D:\Program Files\Polyspace\R2019b\examples\deeplearning_shared\main';
%% 训练 DQN 智能体将摆向上摆动并平衡
% openExample('deeplearning_shared/CreateAgentUsingDNDAndTrainUsingImageObsExample')
% CreateAgentUsingDNDAndTrainUsingImageObsExample
%% 训练 DDPG 智能体⽤于⾃适应巡航控制
% openExample('deeplearning_shared/TrainDDPGAgentForACCExample')
% TrainDDPGAgentForACCExample
%% 训练智能体控制飞⾏机器⼈
%% 训练智能体控制飞⾏机器⼈
% openExample('deeplearning_shared/TrainDDPGAgentToControlFlyingRobotExample')
% TrainDDPGAgentToControlFlyingRobotExample
%% 训练深度确定性策略梯度(DDPG)代理为Simulink中建模的飞⾏机器⼈⽣成轨迹 simulink
% openExample('deeplearning_shared/TrainDDPGAgentToControlFlyingRobotExample')
% TrainDDPGAgentToControlFlyingRobotExample
%% 训练双⾜机器⼈⾛路
% openExample('deeplearning_shared/TrainBipedRobotToWalkUsingDDPGAgentExample')
% TrainBipedRobotToWalkUsingDDPGAgentExample
%% 训练深层确定性策略梯度(DDPG)代理以摆动并通过MATLAB中建模的图像观察平衡摆锤
% openExample('deeplearning_shared/TrainDDPGAgentToSwingUpAndBalancePendulumWithImageObsExample')
% TrainDDPGAgentToSwingUpAndBalancePendulumWithImageObsExample
%% 使⽤Deep Network Designer应⽤程序创建⼀个深度Q学习⽹络(DQN)代理,以摆动并平衡在MATLAB中建模的钟摆
% openExample('deeplearning_shared/CreateAgentUsingDNDAndTrainUsingImageObsExample')
% CreateAgentUsingDNDAndTrainUsingImageObsExample
%% ⽔箱控制simulink
% openExample('deeplearning_shared/CreateSimulinkEnvironmentAndTrainAgentExample')
% CreateSimulinkEnvironmentAndTrainAgentExample
%% 在Simulink中训练⽤于⾃适应巡航控制(ACC)的深度确定性策略梯度(DDPG)代理
% openExample('deeplearning_shared/TrainDDPGAgentForACCExample')
% TrainDDPGAgentForACCExample
%% 在Simulink中训练深度确定性策略梯度(DDPG)代理以进⾏路径跟踪控制(PFC)
% openExample('deeplearning_shared/TrainDDPGAgentForPFCExample')
% TrainDDPGAgentForPFCExample
%% 在Simulink中训练深度确定性策略梯度(DDPG)代理以进⾏路径跟踪控制(PFC)
% openExample('deeplearning_shared/TrainDDPGAgentForPFCExample')
% TrainDDPGAgentForPFCExample
cd ('D:\OneDrive - 徐州开放⼤学\Documents\MATLAB\Examples\R2019b\nnet\ClassifyImagesFromWebcamUsingDeepLearningExample');
%% 该⽰例显⽰了如何使⽤预训练的深度卷积神经⽹络GoogLeNet对来⾃⽹络摄像头的图像进⾏实时分类。
% openExample('ClassifyImagesFromWebcamUsingDeepLearningExample')
% ClassifyImagesFromWebcamUsingDeepLearningExample
%% 这个例⼦展⽰了如何使⽤预训练的深度卷积神经⽹络GoogLeNet对图像进⾏分类。
% openExample('ClassifyImageUsingPretrainedNetworkExample')
% ClassifyImageUsingPretrainedNetworkExample
%% 该⽰例显⽰了如何创建和训练⽤于深度学习分类的简单卷积神经⽹络。
% openExample('CreateSimpleDeepLearningClassificationNetworkExample')
% CreateSimpleDeepLearningClassificationNetworkExample
%% 本⽰例说明如何创建简单的长期短期记忆(LSTM)分类⽹络。
% openExample('CreateSimpleSequenceClassificationNetworkExample')
% CreateSimpleSequenceClassificationNetworkExample
%% 此⽰例显⽰了如何微调经过预训练的GoogLeNet⽹络,以对新的图像集合进⾏分类。
% openExample('GetStartedWithDeepNetworkDesignerExample')
% GetStartedWithDeepNetworkDesignerExample
%% 此⽰例显⽰了如何使⽤转移学习来重新训练ResNet-18(⼀种预训练的卷积神经⽹络)以对⼀组新图像进⾏分类。
% openExample('MinimalTransferLearningExample')
% MinimalTransferLearningExample
%% 本⽰例说明如何使⽤长短期记忆(LSTM)⽹络预测时间序列数据。
% openExample('TimeSeriesForecastingUsingDeepLearningExample')
% TimeSeriesForecastingUsingDeepLearningExample
%% 此⽰例显⽰了如何使⽤转移学习来训练卷积神经⽹络以对⼀组新图像进⾏分类。
% openExample('TransferLearningUsingGoogLeNetExample')
% TransferLearningUsingGoogLeNetExample
%% ==============================2020a才有===================================
%% 训练,验证和测试模仿飞⾏机器⼈⾮线性模型预测控制器⾏为的深度神经⽹络(DNN)⽆
% 然后将深度神经⽹络的⾏为与原始控制器的⾏为进⾏⽐较
% openExample('control_deeplearning/ImitateNonlinearMPCControllerForFlyingRobotExample')
%% 训练具有离散动作空间的近端策略优化(PPO)代理程序,将⽕箭降落在地⾯上⽆
% openExample('rl/TrainPPOAgentToLandRocketExample')
% TrainPPOAgentToLandRocketExample
我都已经把标题加上去了,也分好了类,第⼆⾏是单纯打开实时脚本,第三⾏是直接运⾏结果了,我的版本是matlab2019b,但是还是有两个是只有2020a才能跑的。
RLToolbox_test
另外还有⼀个调好的利⽤Q-learning实现⼆维⽹格的强化学习的代码,也是当时的然后调好的,⾥⾯的注释也都很清楚,是否实时显⽰是否进⾏训练都可以通过改代码来实现,其他的例程也可以通过类似于这样的⽅式来学习⼯具箱的相关操作,之后才能解决⾃⼰的问题哈哈(后话了,最近⼜沦为⼯具⼈没时间学习)。
%强化学习测试程序利⽤Q-learning实现⼆维⽹格的强化学习,
%通过⼯具箱实现训练和可视化版本太低,本来没⼯具箱
%2020年4⽉17⽇
clear all;
cd 'D:\AEEEE\NPU\program\Deep Reinforcement Learning';
path(path,'Q_prince')  %修改⽂件的搜索路径
% 在Matlab命令窗⼝中执⾏以下命令可以打开相关⽰例。
% 参数 "rl" ⽆效并没有安装Reinforcement Learning Toolbox
% openExample('rl/BasicGridWorldExample')
%% 创建环境:
clear
%创建⼀个GridWorld对象
GW = createGridWorld(4,4);
%设置终点和障碍
GW.TerminalStates = '[4,4]';
GW.ObstacleStates = ["[2,3]";"[2,4]";"[3,3]"];
%更新障碍状态的状态转换矩阵
updateStateTranstionForObstacles(GW);
%设置障碍状态上的跳转规则
GW.T(state2idx(GW,"[1,4]"),:,:) = 0;
GW.T(state2idx(GW,"[1,4]"),state2idx(GW,"[3,4]"),:) = 1;
%在奖赏转换矩阵中定义奖赏
nS = numel(GW.States);
nA = numel(GW.Actions);
GW.R = -1*ones(nS,nS,nA);
GW.R(state2idx(GW,"[1,4]"),state2idx(GW,"[3,4]"),:) = 5;
GW.R(:,state2idx(GW,"[2,2]"),:) = 0;
GW.R(:,state2idx(GW,"[3,2]"),:) = -5;
GW.R(:,state2idx(GW,GW.TerminalStates),:) = 10;
%创建环境
env = rlMDPEnv(GW);
%% 模型设置和训练
%要创建Q-learning代理,⾸先使⽤⽹格世界环境中的观察和操作规范创建Q矩阵
qTable = rlTable(getObservationInfo(env),getActionInfo(env));
% qRepresentation = rlQValueRepresentation(qTable,getObservationInfo(env),getActionInfo(env)); qRepresentation = rlRepresentation(qTable);
%设置学习率
qRepresentation.Options.LearnRate = 1;
agentOpts = rlQAgentOptions;
%设置折扣因⼦
agentOpts.DiscountFactor = 0.8;
%配置epsilon-贪⼼概率
agentOpts.EpsilonGreedyExploration.Epsilon = 0.3;
qAgent = rlQAgent(qRepresentation,agentOpts);
%指定培训选项
trainOpts = rlTrainingOptions;
%最多训练100次,每次最多持续30个步长
trainOpts.MaxStepsPerEpisode = 30;
trainOpts.MaxEpisodes= 100;
%当连续30次获得超过100的平均累积奖赏时,停⽌训练(事实上不可能达到)
trainOpts.StopTrainingCriteria = "AverageReward";
%如果有必要,可以设置平均累积奖赏终⽌条件
%trainOpts.StopTrainingValue = 10;
%trainOpts.ScoreAveragingWindowLength = 20;
%训练可能需要⼏分钟才能完成。
%为了节省时间,可以通过将doTraining设置为false来加载经过预处理数据
%要实际完成训练,就要把doTraining设为true
doTraining = true;
if doTraining
trainingStats = train(qAgent,env,trainOpts);
else
load('BasicGridWorldqAgent.mat')
end
%% 测试仿真
%设置起始位置
env.ResetFcn = @() state2idx(GW,"[1,1]");
plot(env)
env.Model.Viewer.ShowTrace = true;
env.Model.Viewer.clearTrace;
simOpts = rlSimulationOptions(...
'MaxSteps',10,...
'NumSimulations',1);
%开始模拟仿真

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。