Beispiel #1
0
        /// <summary>
        /// Konstruktor
        /// </summary>
        /// <param name='size'>Größe der Population</param>
        /// <param name='genomeSize'>Größe des einzelnen Genomes</param>
        public Population(int size, int genomeSize, double minAllelValue, double maxAllelValue, Helper.Enums.Encryption encryption)
        {
            _encryption = encryption;
            // Erzeuge Listen mit fester Kapazität
            curGeneration = new List<Genome>(size);
            oldGeneration = new List<Genome>(size);
            totalSize = size;
            Genome tmp;

            for(int i = 0; i < size; i++)
            {
                if (_encryption == Helper.Enums.Encryption.None)
                    throw new NotImplementedException(); //todo Genome mit Integerwerten
            //				else if (_encryption == Helper.Enums.Encryption.Binary)
            //				{
            //					throw new NotImplementedException(); //todo
            //				}
            //				else if (_encryption == Helper.Enums.Encryption.Real)
                else
                {
                    tmp = new GenomeReal(genomeSize, minAllelValue, maxAllelValue);
                    // um Duplikate bei der Erzeugung der Population zu vermeiden
                    while(curGeneration.Contains(tmp))
                    {
                        //Console.WriteLine(String.Format("Duplikat: {0}\r\ni = {1}", tmp.AsString(),i));
                        tmp = new GenomeReal(genomeSize, minAllelValue, maxAllelValue);
                    }
                    curGeneration.Add(tmp);
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Konstruktor
        /// </summary>
        /// <param name='problem'>Anzuwendendes Problem</param>
        public Evolution(Problem problem)
        {
            countGene = problem.countGene;
            maxGenerations = problem.maxGenerations;
            countIndividuals = problem.countIndividuals;
            countChilds = problem.countChilds;
            recombinationProbability = problem.recombinationProbability;
            InvertOnMutate = problem.InvertOnMutate;
            minAllelValue = problem.minAllelValue;
            maxAllelValue = problem.maxAllelValue;
            SelPropType = problem.SelPropType;
            SelType = problem.SelType;
            Encryption = problem.Encryption;
            TournamentMemberCount = problem.TournamentMemberCount;

            sb = problem.Output;

            bestFitness = double.MaxValue;
            averageFitness = double.MaxValue;
            bestFitnessGeneration = 0;
            bestSolutions = new List<double>();
            bestSolutionsGeneration = new List<int>();
            bestList = new List<Genome>(maxGenerations-1);

            CalcFitness = problem.CalcFitnessDefault;

            switch (Encryption)
            {
                case Helper.Enums.Encryption.None :
                {
                    Recombine = problem.RecombineDefault;
                    Mutate = problem.MutateDefault;
                    break;
                }
                case Helper.Enums.Encryption.Binary :
                {
                    Recombine = problem.RecombineBinary;
                    Mutate = problem.MutateBinary;
                    break;
                }
                case Helper.Enums.Encryption.Real :
                {
                    Recombine = problem.RecombineReal;
                    Mutate = problem.MutateReal;
                    break;
                }
            }
        }