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); } }
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)); }
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); }