package mdpsSolution;
import java.util.Arrays;
import mdps.MDP;
import mdps.QValueFunction;
public class TableLookupQValueFunction implements QValueFunction {
double[][]values;
TableLookupQValueFunction(MDP mdp, double initialValue) {
values = new double[mdp.numStates()][mdp.numActions()];
for (int i = 0; i < mdp.numStates(); i++) {
Arrays.fill(values[i], initialValue);
}
}
public void updateValue(int state, int action, double value) {
values[state][action] = value;
}
public double getValue(int state) {
double[] actVals = values[state];
double maxVal = Double.NEGATIVE_INFINITY;
for (int i = 0; i < actVals.length; i++) {
if (actVals[i] > maxVal)
maxVal = actVals[i];
}
return maxVal;
}
public double getValue(int state, int action) {
return values[state][action];
}
public String toString() {
String str = "";
for (int i = 0; i < values.length; i++) {
str += Arrays.toString(values[i]);
}
return str;
}
}