Exemple #1
0
        public void TestRandomRestartHillClimberIncrementingRestartPoint()
        {
            comparer  = new MaximizingComparer <TestIntegerEvaluableState>();
            generator = new TestExponentialIntegerSuccessorGenerator();

            var climberConfiguration = new ClimberConfiguration <TestIntegerEvaluableState, int>()
                                       .ComparesUsing(comparer)
                                       .GeneratesSuccessorsWith((c) => generator.GetSuccessors(c));

            randomizer = new TestIntegerRandomizerSimulator();
            climber    = new RandomRestartHillClimber <TestIntegerEvaluableState, int>(5, randomizer, climberConfiguration);

            RunTest(climber, 1, 10000);
        }
Exemple #2
0
        public void TestRandomRestartHillClimberSameRestartPointEachTime()
        {
            comparer   = new MaximizingComparer <TestIntegerEvaluableState>();
            generator  = new TestLinearIntegerSuccessorGenerator();
            randomizer = new TestIntegerEvaluableStateNonRandomizer();

            var climberConfiguration = new ClimberConfiguration <TestIntegerEvaluableState, int>()
                                       .ComparesUsing(comparer)
                                       .GeneratesSuccessorsWith((c) => generator.GetSuccessors(c));

            randomizer = new TestIntegerEvaluableStateNonRandomizer();
            climber    = new RandomRestartHillClimber <TestIntegerEvaluableState, int>(5, randomizer, climberConfiguration);

            RunTest(climber, 2, 100);
        }
Exemple #3
0
        private void RunTest(RandomRestartHillClimber <TestIntegerEvaluableState, int> climber, int initialStateValue, int expectedOptimalValue)
        {
            TestIntegerEvaluableState initialState = new TestIntegerEvaluableState(initialStateValue);
            TestIntegerEvaluableState resultState  = new TestIntegerEvaluableState(initialStateValue);


            Dictionary <int, Tuple <TestIntegerEvaluableState, TestIntegerEvaluableState> > localWinners = new Dictionary <int, Tuple <TestIntegerEvaluableState, TestIntegerEvaluableState> >();

            void OnClimberRestartEvent(object source, ClimberCompleteEvent <TestIntegerEvaluableState, int> e)
            {
                localWinners[e.CLimberIndex] = new Tuple <TestIntegerEvaluableState, TestIntegerEvaluableState>(e.InitialState, e.OptimizedState);
            }

            climber.ClimberCompleteEvent += OnClimberRestartEvent;

            resultState = climber.Optimize(initialState);

            Assert.AreEqual(expectedOptimalValue, resultState.Value);
        }