Hi.
I want to design a DQN agent to train in an environment that its observation variables consists of 5 continous double variable, a discreat variable with values [0 1] and two discreat variables with values [-1 0 1]. I define the observation info as:
rlNumericSpec([1 5], 'Name', 'X15'), ...
rlFiniteSetSpec([0 1], 'Name', 'X6'), ...
rlFiniteSetSpec([-1 0 1], 'Name', 'X7'), ...
rlFiniteSetSpec([-1 0 1], 'Name', 'X8')
ActionInfo = rlFiniteSetSpec([-2, -1, 0, 1, 2]);
Therefore, the reset and step functions returns Observation in the form:
Obs = {[X1; X2; X3; X4; X5], X6, X7, X8}
Then I define a deep neural network as follows:
featureInputLayer(8, 'Normalization', 'none', 'Name', 'state')
fullyConnectedLayer(100, 'Name', 'fc1')
reluLayer('Name', 'relu1')
fullyConnectedLayer(100, 'Name', 'fc2')
reluLayer('Name', 'relu2')
fullyConnectedLayer(5, 'Name', 'fc3')
critic = rlVectorQValueFunction(dnn,obsInfo,ActionInfo);
However, this code leads to following error:
The number of network input layers must be equal to the number of observation channels in the environment specification object.
Could you please help me to fix this issue? Is the definition of ObsInfo is correct for this type of problem? And also is the architecture of the network is ok?
Thank you.