強化学習にて、学習中のリワード以外の値の推移をプロットする方法
2 views (last 30 days)
Show older comments
強化学習の環境を製作しています。
強化学習マネージャでリワードの値の推移はエピソード毎に表示されますが、リワードにはシステムを安定に動かすための報酬をたくさん含めており、このシステムの純粋なパフォーマンスではありません。
このシステムの純粋なパフォーマンスをエピソード毎に、リワードとは別にプロットさせたいと思っています。
Bは計算時間
maxStepsはシミュレーションの終了時間
dataはシステムのパフォーマンス
xは前回値からエピソードの値を引き継いでいます。
MatlabFunctionにて、エピソードが完走する1STEP前にエピソードNoとdataの値をプロットし、一回目以降にhold onで重ねてプロットしようとしています。
MatlabFunctionでは2回目以降のプロットが重ねられずに最初の一回しか表示されません。
なにかいい方法ありますでしょうか?
function y = fcn(t,maxSteps,data,x)
t = round(t)
j = t == maxSteps-1;
if j
if x == 1
plot(x,data,"kx")
xlim([0 x+1])
ylim([0 2])
x = x + 1
else
hold on
plot(x,data,"kx")
xlim([0 x+1])
ylim([0 2])
hold off
x = x + 1
end
end
y = x
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1468856/image.png)
0 Comments
Answers (1)
Shivansh
on 7 Sep 2023
Hi Shromaneko,
迅速に対応できるよう、この返信は英語で行われます。
I understand that you want to plot the values of episode number and data one step before the episode finishes. Currently, you can plot the first one without overlapping the second and subsequent plots. You can modify your current code by creating a new figure for the first episode and then using the hold on to plot the subsequent plots.
function y = fcn(t, maxSteps, data, x)
t = round(t);
j = t == maxSteps - 1;
if j
if x == 1
figure; % Create a new figure for the first episode
end
plot(x, data, 'kx');
xlim([0 x+1]);
ylim([0 2]);
hold on; % Enable hold on for subsequent plots
x = x + 1;
end
y = x;
end
By using the above code, you will be able to visualize the overlaid plots.
To learn more about 'figure', please refer to the following documentation Create figure window - MATLAB figure - MathWorks India.
0 Comments
See Also
Categories
Find more on Training and Simulation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!