Unrecognized method, property, or field 'randi' for class 'rl.util.r​lFiniteSet​Spec'.

2 Ansichten (letzte 30 Tage)
I am trying to sample an action from the actionspace which is in the predefined MATLAB environment 'BasicGridWorld'.
env = rlPredefinedEnv('BasicGridWorld');
obsInfo = getObservationInfo(env);
actInfo = getActionInfo(env);
a= actInfo.randi()
However the actInfo belongs to the class rl.util.rlFiniteSetSpec which does not support rand or randi method and is of type string.
I suppose I have to first convert it to type num and then randomly select 1 out of the 4 actions from that class?
Is this approach correct?

Antworten (1)

Geoff Hayes
Geoff Hayes am 1 Apr. 2022
@Ankita Tondwalkar - from here, actInfo is an array of rlNumericSpec objects | array of rlFiniteSetSpec objects. I think that you need to first determine the length of the array and then choose an integer between one and that length using randi.
  1 Kommentar
Ankita Tondwalkar
Ankita Tondwalkar am 2 Apr. 2022
@Geoff Hayes I did the following and this work.
A = ["N";"S";"E";"W"]
B= []
s = strrep(A,"N","1")
s1= strrep(s,"S","2")
s2= strrep(s1,"E","3")
s3 = strrep(s2,"W","4")
B = [s3]
Actions = cell2mat(arrayfun(@str2num,B,'uni',0))
randomIndex = randi(length(Actions), 1)
selected_A_value = Actions(randomIndex)

Melden Sie sich an, um zu kommentieren.


Find more on Engines & Motors 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!

Translated by