Why fixed values are not working in randomstart function of trainDDPGrobot program?

4 visualizaciones (últimos 30 días)
I am new to reinforcement learning and have run the programs given in online ramp course of reinforcement learning. In the randomstart function I made only a single change as given in the code below but the program is giving the error shown in the attached image. I have seen the documentation of environment reset function, where all examples are given with random numbers. But I want all input variables i.e. x0, y0, theta0, v0, and w0 to be fix and should be picked from the already stored vectors, When I tried with a constant value of only a single variable x0 (given in line#3 of the program given below), the program is generating an error. Line # 4 in the program given below was the one in the original program (% now), while I have added line # 5 in its replacement, which is not working. How can I fix it?
function in = randomstart(in)
mdl = "whrobot";
a=0.5;
% in = setVariable(in,"x0",((-1)^randi([0 1]))*(2.5 + 3.5*rand),"Workspace",mdl);
in = setVariable(in,"x0",a,"Workspace",mdl);
in = setVariable(in,"y0",2.6 + 3.4*rand,"Workspace",mdl);
in = setVariable(in,"theta0",pi*(2*rand-1),"Workspace",mdl);
in = setVariable(in,"v0",randn/3,"Workspace",mdl);
in = setVariable(in,"w0",randn/3,"Workspace",mdl);
disp(x0)
end

Respuesta aceptada

Aneela
Aneela el 21 de Ag. de 2024
Editada: Aneela el 21 de Ag. de 2024
The error “Unrecognized function or variable x0” is because of the following:
  • “x0” is not defined in the current workspace but is rather defined as a variable inside the simulation environment using the “setVariable” function.
  • When “x0” is displayed using “disp(x0)”, MATLAB cannot find “x0” in the current workspace because it’s not explicitly defined here.
To display “x0”, store it in a local variable before calling “setVariable”. The following code stores the value of “a” in a local variable ”x0_value”:
function in = randomstart(in)
mdl = "whrobot";
a = 0.5;
% Set x0 and store its value in a local variable
x0_value = a; %will be stored in the current workspace
in = setVariable(in, "x0", x0_value, "Workspace", mdl);
in = setVariable(in, "y0", 2.6 + 3.4*rand, "Workspace", mdl); %will be stored in the simulation environment
in = setVariable(in, "theta0", pi*(2*rand-1), "Workspace", mdl);
in = setVariable(in, "v0", randn/3, "Workspace", mdl);
in = setVariable(in, "w0", randn/3, "Workspace", mdl);
disp(x0_value);
end
Refer to the following MathWorks documentation for more information on “setVariable”: https://www.mathworks.com/help/simulink/slref/simulink.simulationinput.setvariable.html

Más respuestas (0)

Categorías

Más información sobre Sequence and Numeric Feature Data Workflows en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by