// aka policy extraction
// given a utility function
// create the Utility Function depicted in Fig 17.3
MDPUtilityFunction<CellWorldPosition> uf = new MDPUtilityFunction<CellWorldPosition>();
uf.setUtility(new CellWorldPosition(1, 1), 0.705);
uf.setUtility(new CellWorldPosition(1, 2), 0.655);
uf.setUtility(new CellWorldPosition(1, 3), 0.611);
uf.setUtility(new CellWorldPosition(1, 4), 0.388);
uf.setUtility(new CellWorldPosition(2, 1), 0.762);
uf.setUtility(new CellWorldPosition(2, 3), 0.660);
uf.setUtility(new CellWorldPosition(2, 4), -1.0);
uf.setUtility(new CellWorldPosition(3, 1), 0.812);
uf.setUtility(new CellWorldPosition(3, 2), 0.868);
uf.setUtility(new CellWorldPosition(3, 3), 0.918);
uf.setUtility(new CellWorldPosition(3, 4), 1.0);
assertPolicyReccomends(cw, uf, 1, 1, CellWorld.UP);
assertPolicyReccomends(cw, uf, 1, 2, CellWorld.LEFT);
assertPolicyReccomends(cw, uf, 1, 3, CellWorld.LEFT);
assertPolicyReccomends(cw, uf, 1, 4, CellWorld.LEFT);