protected AbstractFitnessFunction(FunctionParameters functionParams) { Dimension = functionParams.Dimension; Coefficients = new double[Dimension]; functionParams.Coefficients.CopyTo(Coefficients, 0); _optimization = PsoServiceLocator.Instance.GetService <IOptimization <double[]> >(); EvaluationsCount = 0; }
public static IFitnessFunction <double[], double[]> GetFitnessFunction(FunctionParameters parameters) { if (functionCache.ContainsKey(parameters.FitnessFunctionType)) { return(functionCache[parameters.FitnessFunctionType]); } if (parameters.FitnessFunctionType.Contains("bbob")) { var functionId = parameters.FitnessFunctionType; Problem problem; /* Iterate over all problems in the suite */ restartBbob(parameters.Dimension); while ((problem = benchmark.getNextProblem()) != null) { if (problem.Id != functionId) { continue; } var upper = problem.getLargestValuesOfInterest(); var bounds = problem.getSmallestValuesOfInterest() .Select((x, i) => new DimensionBound(x, upper[i])) .ToArray(); parameters.SearchSpace = bounds; var function = new FitnessFunction(problem.evaluateFunction); return(function); } } switch (parameters.FitnessFunctionType) { case "quadratic": return(new QuadraticFunction(parameters)); case "rastrigin": return(new RastriginFunction(parameters)); case "rosenbrock": return(new RosenbrockFunction(parameters)); default: throw new ArgumentException("Unknown function type."); } }
public RastriginFunction(FunctionParameters functionParams) : base(functionParams) { }
public QuadraticFunction(FunctionParameters functionParams) : base(functionParams) { }
public RosenbrockFunction(FunctionParameters functionParams) : base(functionParams) { }