public void testPassiveADPAgent() { PassiveADPAgent<CellWorldPosition, String> agent = new PassiveADPAgent<CellWorldPosition, String>( fourByThree, policy); // Randomizer r = new JavaRandomizer(); Randomizer r = new MockRandomizer(new double[] { 0.1, 0.9, 0.2, 0.8, 0.3, 0.7, 0.4, 0.6, 0.5 }); MDPUtilityFunction<CellWorldPosition> uf = null; for (int i = 0; i < 100; i++) { agent.executeTrial(r); uf = agent.getUtilityFunction(); } Assert.AreEqual(0.676, uf.getUtility(new CellWorldPosition(1, 1)), 0.001); Assert.AreEqual(0.626, uf.getUtility(new CellWorldPosition(1, 2)), 0.001); Assert.AreEqual(0.573, uf.getUtility(new CellWorldPosition(1, 3)), 0.001); Assert.AreEqual(0.519, uf.getUtility(new CellWorldPosition(1, 4)), 0.001); Assert.AreEqual(0.746, uf.getUtility(new CellWorldPosition(2, 1)), 0.001); Assert.AreEqual(0.865, uf.getUtility(new CellWorldPosition(2, 3)), 0.001); // AreEqual(-1.0, uf.getUtility(new // CellWorldPosition(2,4)),0.001);//the pseudo random genrator never // gets to this square Assert.AreEqual(0.796, uf.getUtility(new CellWorldPosition(3, 1)), 0.001); Assert.AreEqual(0.906, uf.getUtility(new CellWorldPosition(3, 3)), 0.001); Assert.AreEqual(1.0, uf.getUtility(new CellWorldPosition(3, 4)), 0.001); }
public void testPassiveADPAgent() { PassiveADPAgent <CellWorldPosition, String> agent = new PassiveADPAgent <CellWorldPosition, String>( fourByThree, policy); // Randomizer r = new JavaRandomizer(); Randomizer r = new MockRandomizer(new double[] { 0.1, 0.9, 0.2, 0.8, 0.3, 0.7, 0.4, 0.6, 0.5 }); MDPUtilityFunction <CellWorldPosition> uf = null; for (int i = 0; i < 100; i++) { agent.executeTrial(r); uf = agent.getUtilityFunction(); } Assert.AreEqual(0.676, uf.getUtility(new CellWorldPosition(1, 1)), 0.001); Assert.AreEqual(0.626, uf.getUtility(new CellWorldPosition(1, 2)), 0.001); Assert.AreEqual(0.573, uf.getUtility(new CellWorldPosition(1, 3)), 0.001); Assert.AreEqual(0.519, uf.getUtility(new CellWorldPosition(1, 4)), 0.001); Assert.AreEqual(0.746, uf.getUtility(new CellWorldPosition(2, 1)), 0.001); Assert.AreEqual(0.865, uf.getUtility(new CellWorldPosition(2, 3)), 0.001); // AreEqual(-1.0, uf.getUtility(new // CellWorldPosition(2,4)),0.001);//the pseudo random genrator never // gets to this square Assert.AreEqual(0.796, uf.getUtility(new CellWorldPosition(3, 1)), 0.001); Assert.AreEqual(0.906, uf.getUtility(new CellWorldPosition(3, 3)), 0.001); Assert.AreEqual(1.0, uf.getUtility(new CellWorldPosition(3, 4)), 0.001); }
static void passiveADPAgentDemo() { System.Console.WriteLine("======================="); System.Console.WriteLine("DEMO: Passive-ADP-Agent"); System.Console.WriteLine("======================="); System.Console.WriteLine("Figure 21.3"); System.Console.WriteLine("-----------"); CellWorld <double> cw = CellWorldFactory.CreateCellWorldForFig17_1(); CellWorldEnvironment cwe = new CellWorldEnvironment( cw.GetCellAt(1, 1), cw.GetCells(), MDPFactory.createTransitionProbabilityFunctionForFigure17_1(cw), CommonFactory.CreateRandom()); IMap <Cell <double>, CellWorldAction> fixedPolicy = CollectionFactory.CreateInsertionOrderedMap <Cell <double>, CellWorldAction>(); fixedPolicy.Put(cw.GetCellAt(1, 1), CellWorldAction.Up); fixedPolicy.Put(cw.GetCellAt(1, 2), CellWorldAction.Up); fixedPolicy.Put(cw.GetCellAt(1, 3), CellWorldAction.Right); fixedPolicy.Put(cw.GetCellAt(2, 1), CellWorldAction.Left); fixedPolicy.Put(cw.GetCellAt(2, 3), CellWorldAction.Right); fixedPolicy.Put(cw.GetCellAt(3, 1), CellWorldAction.Left); fixedPolicy.Put(cw.GetCellAt(3, 2), CellWorldAction.Up); fixedPolicy.Put(cw.GetCellAt(3, 3), CellWorldAction.Right); fixedPolicy.Put(cw.GetCellAt(4, 1), CellWorldAction.Left); PassiveADPAgent <Cell <double>, CellWorldAction> padpa = new PassiveADPAgent <Cell <double>, CellWorldAction>( fixedPolicy, cw.GetCells(), cw.GetCellAt(1, 1), MDPFactory.createActionsFunctionForFigure17_1(cw), new ModifiedPolicyEvaluation <Cell <double>, CellWorldAction>(10, 1.0)); cwe.AddAgent(padpa); output_utility_learning_rates(padpa, 20, 100, 100, 1); System.Console.WriteLine("========================="); }