コード例 #1
0
        public Population(int size, IFitnessFunction fitnessFunction, IReproduction reproductionFunction, INodeMutator mutator, ISelection selection)
        {
            this.populationSize = size;
            this.fitnessFunction = fitnessFunction;
            this.reproductionFunction = reproductionFunction;
            this.mutator = mutator;
            this.selector = selection;

            this.fitnessFunction.Initialise();

            // Create the initial population
            for (int i = 0; i < size; i++)
            {
                try
                {
                    NodeContext zeroContext = new NodeContext();
                    zeroContext.AvailableCollections = fitnessFunction.GetCollections();
                    zeroContext.AvailableInputs = fitnessFunction.GetInputs();

                    INode candidateNode = NodeFactory.GenerateNode(zeroContext);

                    // Make sure we have a decent candidate (i.e. not too large)
                    double fitness = this.fitnessFunction.CalculateFitness(candidateNode);
                    if (fitness == Double.MaxValue) continue;

                    this.population.Add(NodeFactory.GenerateNode(zeroContext));
                }
                catch (StackOverflowException)
                {
                }
            }
        }
コード例 #2
0
 public NSGA2(IReproduction <TChromosome> crossover,
              IEvaluator <TChromosome> evaluator,
              IReinsertion <TChromosome> reinsertion)
 {
     _crossover   = crossover;
     _evaluator   = evaluator;
     _reinsertion = reinsertion;
 }
コード例 #3
0
 public NSGA2(IReproduction <TChromosome> crossover,
              IReproduction <TChromosome> mutation,
              IEvaluator <TChromosome> evaluator,
              IReinsertion <TChromosome> reinsertion) :
     this(crossover, evaluator, reinsertion)
 {
     _mutation = mutation;
 }
コード例 #4
0
ファイル: RabbitFactory.cs プロジェクト: sdenisen/.net
 public RabbitFactory(IReproduction reproduction, Fitness.Fitness fitness, int dnaElementsCount)
 {
     if (dnaElementsCount <= 0)
     {
         throw new ArgumentException("value of dnaElementsCount is wrong. must be positive value.");
     }
     _reproduction     = reproduction;
     _dnaElementsCount = dnaElementsCount;
     _fitness          = fitness;
 }
コード例 #5
0
        //---------------------------------------------------------------------

        /// <summary>
        /// Initializes the instance and its associated site variables.
        /// </summary>
        protected void Initialize(int timestep,
                                  double[,] establishProbabilities)
        {
            this.timestep      = timestep;
            this.nextTimeToRun = timestep;

            SiteVars.Initialize();
            defaultReproduction = new Seeding(WardSeedDispersal.Algorithm);
            SiteVars.Reproduction.ActiveSiteValues = defaultReproduction;
            Reproduction.SetEstablishProbabilities(establishProbabilities);
        }
コード例 #6
0
		//---------------------------------------------------------------------

		/// <summary>
		/// Initializes the instance and its associated site variables.
		/// </summary>
		protected void Initialize(int       timestep,
		                          double[,] establishProbabilities)
		{
			this.timestep = timestep;
			this.nextTimeToRun = timestep;

			SiteVars.Initialize();
			defaultReproduction = new Seeding(WardSeedDispersal.Algorithm);
			SiteVars.Reproduction.ActiveSiteValues = defaultReproduction;
			Reproduction.SetEstablishProbabilities(establishProbabilities);
		}
コード例 #7
0
        public TwoIslandsPopulation(int size, IFitnessFunction fitnessFunction, IReproduction reproductionFunction, INodeMutator mutator, ISelection selection)
        {
            this.populationSize = size;
            this.fitnessFunction = fitnessFunction;
            this.reproductionFunction = reproductionFunction;
            this.mutator = mutator;
            this.selector = selection;

            this.fitnessFunction.Initialise();

            // The main population needs initializing
            this.IntialisePopulation(this.mainPopulation);

            this.IntialisePopulation(this.secondaryPopulation);
        }