Beispiel #1
0
        public double GetMinForDimension(int dimension)
        {
            double center = _sample.GetValueForDimension(dimension);
            double min    = center - (_parentProblem.GetStepForDimension(dimension) / 2);

            if (min < _parentProblem.GetMinForDimension(dimension))
            {
                min = _parentProblem.GetMinForDimension(dimension);
            }
            return(min);
        }
Beispiel #2
0
        private List <Configuration> GenerateFirstSamples(IOptimizationProblem problem)
        {
            List <Configuration> returnList = new List <Configuration>();
            int dimensionsCount             = problem.DimensionsCount;

            returnList.Add(new Configuration(dimensionsCount));

            for (int i = 0; i < dimensionsCount; i++)
            {
                double min  = problem.GetMinForDimension(i);
                double max  = problem.GetMaxForDimension(i);
                double step = problem.GetStepForDimension(i);

                List <Configuration> newConfigurations = new List <Configuration>();

                foreach (Configuration conf in returnList)
                {
                    for (double j = min; j < max; j += step)
                    {
                        Configuration configuration = conf.Clone();
                        configuration.SetValueForDimension(i, j);
                        newConfigurations.Add(configuration);
                    }

                    conf.SetValueForDimension(i, max);
                }

                returnList.AddRange(newConfigurations);
            }

            return(returnList);
        }