概述
前言
前段时间帮导师申请项目时涉及到了智能化,因为行文过于天马行空导师要求将大致思路仿真出来试试,于是就又找到了强大的MATLAB,在网上一顿搜索后发现最新的强化学习以及深度学习的工具箱只有2019年以后的matlab才有,用我的2018b只能跑一些简简单单的问题还做不到可视化。
装好以后不断学习发现matlab自身是有很多例程的,于是从官网的页面里一个一个分类带标题标注好整理了一个程序,虽然没啥技术含量但是确实挺方便的。
前排友情提示注释:
快捷键Ctrl+R是注释
Ctrl+T是反注释
RLToolbox_example
%强化学习工具箱学习,调用相关例子
%深度学习的部分也有
%2020年4月18日
%王江江
% 在Matlab命令窗口中执行以下命令可以打开相关示例。有些可能只有2020a才有,2019b也不够
clear all;
%% =================================强化学习========================================
cd 'D:Program FilesPolyspaceR2019bexamplesrlmain';
%% 网格寻路训练 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')
% 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
%% 为强化学习策略定义自定义培训循环
% openExample('rl/TrainRLPolicyUsingCustomTrainLoopExample')
% TrainRLPolicyUsingCustomTrainLoopExample
%% ================================深度学习===========================================
% cd 'D:Program FilesPolyspaceR2019bexamplesdeeplearning_sharedmain';
%% 训练 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 - 徐州开放大学DocumentsMATLABExamplesR2019bnnetClassifyImagesFromWebcamUsingDeepLearningExample');
%% 该示例显示了如何使用预训练的深度卷积神经网络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:AEEEENPUprogramDeep 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);
%开始模拟仿真
sim(qAgent,env,simOpts)
结尾
最后补一个当时找到的MathWorks在GitHub上面官方的程序集,我下了好几个开源羡慕都挺有趣的,还有阿波罗登月着陆的可视化仿真。
最后
以上就是难过宝马为你收集整理的【matlab】强化/深度学习工具箱例程调用汇总及编程实例的全部内容,希望文章能够帮你解决【matlab】强化/深度学习工具箱例程调用汇总及编程实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复