public override DimensionSet <BinaryRepresentation> PickImprovement( IEnumerable <DimensionSet <BinaryRepresentation> > neighbourhood, DimensionalFunction function, double currentMinimum) { return(neighbourhood.FirstOrDefault(n => function.GetValue(n, new BinarySetToDoubleSetConverter()) < currentMinimum)); }
public SimulatedAnnealingMinimumBuilder WithFunction(DimensionalFunction function) { this.function = function ?? throw new ArgumentNullException( "The simulated annealing minimum builder needs a non-null function to work with!"); return(this); }
public override DimensionSet <double> PickImprovement( IEnumerable <DimensionSet <double> > neighbourhood, DimensionalFunction function, double currentMinimum) { return(neighbourhood.FirstOrDefault(n => function.GetValue(n) < currentMinimum)); }
public override DimensionSet <double> Convert(Chromosome source, DimensionalFunction function) { var doubles = source.Representations.Select((x, dimension) => BinaryHelper.DecodeBinary(x, function.GetDomain().GetDefinitionForDimension(dimension + 1), function.Precision)); return(new DimensionSet <double>(doubles)); }
public override DimensionSet <BinaryRepresentation> PickImprovement( IEnumerable <DimensionSet <BinaryRepresentation> > neighbourhood, DimensionalFunction function, double currentMinimum) { DimensionSet <BinaryRepresentation> bestImprovement = null; foreach (var neighbour in neighbourhood) { var value = function.GetValue(neighbour, new BinarySetToDoubleSetConverter()); if (currentMinimum <= value) { continue; } currentMinimum = value; bestImprovement = neighbour; } return(bestImprovement); }
public override DimensionSet <double> PickImprovement( IEnumerable <DimensionSet <double> > neighbourhood, DimensionalFunction function, double currentMinimum) { DimensionSet <double> bestImprovement = null; foreach (var neighbour in neighbourhood) { var value = function.GetValue(neighbour); if (currentMinimum <= value) { continue; } currentMinimum = value; bestImprovement = neighbour; } return(bestImprovement); }
public GeneticMinimumBuilder WithOptimizingFunction(DimensionalFunction function) { this.optimizingFunction = function ?? throw new InvalidOperationException("Function should not be null!"); return(this); }
public abstract DimensionSet <double> Convert(TSource source, DimensionalFunction function);
public abstract DimensionSet <BinaryRepresentation> PickImprovement( IEnumerable <DimensionSet <BinaryRepresentation> > neighbourhood, DimensionalFunction function, double currentMinimum);