Пример #1
0
        public void InvalidCoefficients_ThrowError(double r, double e, double c, double s, bool errorExpected)
        {
            var hyps = NelderMeadHyperParameters.GetDefaultHyperParameters();

            var numUpdates = 0;

            numUpdates +=
                hyps.UpdateHyperParameterValue(NelderMeadHyperParameters.Reflection_Coefficient, r)
                    ? 1 : 0;
            numUpdates +=
                hyps.UpdateHyperParameterValue(NelderMeadHyperParameters.Expansion_Coefficient, e)
                    ? 1 : 0;
            numUpdates +=
                hyps.UpdateHyperParameterValue(NelderMeadHyperParameters.Contraction_Coefficient, c)
                    ? 1 : 0;
            numUpdates +=
                hyps.UpdateHyperParameterValue(NelderMeadHyperParameters.Shrinkage_Coefficient, s)
                    ? 1 : 0;

            if (errorExpected)
            {
                if (numUpdates == 4)
                {
                    Assert.Throws <ArgumentOutOfRangeException>(() =>
                                                                new NelderMeadSimplexOperationsManager(hyps));
                }
            }
            else
            {
                Assert.Equal(4, numUpdates);
                new NelderMeadSimplexOperationsManager(hyps);
            }
        }
Пример #2
0
        public static OptimiserBuilder GetBuilder(
            DecisionSpace problemSpace,
            double?simplexCreationStepSize = null)
        {
            var hyps = NelderMeadHyperParameters.GetDefaultHyperParameters();

            if (simplexCreationStepSize != null)
            {
                hyps.UpdateHyperParameterValue(
                    NelderMeadHyperParameters.Simplex_Creation_Step_Size,
                    simplexCreationStepSize);
            }

            return(new NelderMeadBuilder(problemSpace, hyps));
        }
Пример #3
0
        public NelderMeadTests()
        {
            var hyps = NelderMeadHyperParameters.GetDefaultHyperParameters();

            hyps.UpdateHyperParameterValue(
                NelderMeadHyperParameters.Simplex_Creation_Step_Size, Step_Size);
            var fitnessCalc = new FitnessCalculatorSingleObjective(
                v => v.ElementAt(0),
                v => 1000.0);

            optimiser = new NelderMead(
                fitnessCalc,
                DecisionVector.CreateFromArray(
                    DecisionSpace.CreateForUniformDoubleArray(Number_Of_Dimensions, double.MinValue, double.MaxValue),
                    Enumerable.Repeat(0.0, Number_Of_Dimensions)),
                hyps);
        }