Reinforcement learning DDPG Agent semi active control issue
Mostra commenti meno recenti
Dear Matlab community,
i have implemented a reinforcement learning agent (DDPG) for controlling a semi-active suspension system in Simulink for my master thesis. The Simulink model is a half car model with two tires connected to a chassis body and the agent should control the variable dampers of the front and back axis. But every learning session with a huge number of episodes the DDPG Agent only learns a suboptimal control strategy. Mostly the results are the lowest possible damping ratio for the back axis and the maximum for the front axis with just tiny control adjustments (example in the picture).
Description of the Model:
- 13 continuous Observation
- 2 continuous Actions
- Reward function with negative quadratic chassis and pitch acceleration
- Resetfunction loads a pseudorandom road profile each episode
- Damping ratio from 900 to 4300 Ns/m
- Each episode last 10 seconds
I have tried with all these changes and the results are mostly the same:
- ‘NumHiddenUnit’ 25 and 256
- Learn rate Actor = 1e-3 and 1e-4
- With and without parallel computing
- 300, 1500 and 2000 episodes
My questions:
- What is wrong with my agent that he only makes small control steps?
- Is it possible, that my DDPG Agent doenst explore enough?
Sorry for my bad english and i thank you all for the help.

%% Agent creation
% Actionspace
actInfo = rlNumericSpec([2 1], ...
'LowerLimit', hfmParam.dA.value(1), ...
'UpperLimit', hfmParam.dA.value(2));
% Observationspace
obsInfo = rlNumericSpec([13 1], ...
'LowerLimit', [-inf -inf -inf -inf -inf -inf -inf -inf -inf -inf -inf -inf 0]', ...
'UpperLimit', [inf inf inf inf inf inf inf inf inf inf inf inf 40]');
%% Enviroment
env = rlSimulinkEnv(mdl, agentBlock, obsInfo, actInfo);
env.ResetFcn = @(in)localResetFcn(in);
% Agent options
agentOpts = rlDDPGAgentOptions('SampleTime', tS);
knnOpts = rlAgentInitializationOptions('NumHiddenUnit', obsInfo.Dimension(1)*2-1);
% Agent
agent = rlDDPGAgent(obsInfo, actInfo, knnOpts, agentOpts);
critic = getCritic(agent);
critic.Options.LearnRate = 1e-3;
agent = setCritic(agent, critic);
actor = getActor(agent);
actor.Options.LearnRate = 1e-4;
agent = setActor(agent, actor);
Risposta accettata
Più risposte (0)
Categorie
Scopri di più su Reinforcement Learning in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
