Exemple #1
0
        private static void EpsilonGreedyWithContext <TContext>(int numActions, TContext testContext, TestPolicy <TContext> policy, IExplorer <int, int> explorer)
            where TContext : RegularTestContext
        {
            string uniqueKey = "ManagedTestId";
            var    uniqueId  = uniqueKey;
            TestRecorder <TContext> recorder = new TestRecorder <TContext>();
            //MwtExplorer<TContext> mwtt = new MwtExplorer<TContext>("mwt", recorder);
            var mwtt = MwtExplorer.Create("mwt", numActions, recorder, explorer, policy);

            testContext.Id = 100;

            int expectedAction = policy.MapContext(testContext).Value;

            int chosenAction = mwtt.ChooseAction(uniqueId, testContext);

            Assert.AreEqual(expectedAction, chosenAction);

            chosenAction = mwtt.ChooseAction(uniqueId, testContext);
            Assert.AreEqual(expectedAction, chosenAction);

            var interactions = recorder.GetAllInteractions();

            Assert.AreEqual(2, interactions.Count);

            Assert.AreEqual(testContext.Id, interactions[0].Context.Id);

            // Verify that policy action is chosen all the time
            explorer.EnableExplore(false);
            for (int i = 0; i < 1000; i++)
            {
                chosenAction = mwtt.ChooseAction(uniqueId, testContext);
                Assert.AreEqual(expectedAction, chosenAction);
            }
        }
        private static void BootstrapWithContext <TContext>(uint numActions, TContext testContext1, TContext testContext2, TestPolicy <TContext>[] policies, IExplorer <TContext> explorer)
            where TContext : TestContext
        {
            string uniqueKey = "ManagedTestId";

            var recorder = new TestRecorder <TContext>();
            var mwtt     = new MwtExplorer <TContext>("mwt", recorder);

            uint expectedAction = policies[0].ChooseAction(testContext1);

            uint chosenAction = mwtt.ChooseAction(explorer, uniqueKey, testContext1);

            Assert.AreEqual(expectedAction, chosenAction);

            chosenAction = mwtt.ChooseAction(explorer, uniqueKey, testContext2);
            Assert.AreEqual(expectedAction, chosenAction);

            var interactions = recorder.GetAllInteractions();

            Assert.AreEqual(2, interactions.Count);

            Assert.AreEqual(testContext1.Id, interactions[0].Context.Id);
            Assert.AreEqual(testContext2.Id, interactions[1].Context.Id);

            // Verify that policy action is chosen all the time
            explorer.EnableExplore(false);
            for (int i = 0; i < 1000; i++)
            {
                chosenAction = mwtt.ChooseAction(explorer, uniqueKey, testContext1);
                Assert.AreEqual(expectedAction, chosenAction);
            }
        }