コード例 #1
0
        public void Mutation(IntArrayChromosomes intChromosomes, double mutationrate, List <int> _elitelist, int chromosomeMaxNumber)
        {
            Random random = new Random();

            for (int i = 0; i < POPULATION; i++)
            {
                double rndnum = random.NextDouble();
                if (rndnum <= mutationrate && !_elitelist.Contains <int>(i))
                {
                    intChromosomes.SetChromosome(i, random.Next(0, CHROMOSOMESIZE), random.Next(0, chromosomeMaxNumber));
                }
            }
        }
コード例 #2
0
ファイル: CellAutomataGA.cs プロジェクト: TNK2718/SWARM2
 // 染色体を初期状態にセットする
 public void SetUpChromosomes()
 {
     System.Random random = new System.Random();
     for (int i = 0; i < POPULATION; i++)
     {
         for (int j = 0; j < CHROMOSOME_SIZE / 20; j++)
         {
             int rule = 0;
             for (int k = 0; k < MOORE_NEIGHBORHOOD; k++)
             {
                 rule += random.Next(0, 2) * FastPower(CELL_STATE_SIZE, k);
             }
             rule += random.Next(0, CELL_STATE_SIZE) * FastPower(CELL_STATE_SIZE, MOORE_NEIGHBORHOOD);
             intArrayChromosomes.SetChromosome(i, j, rule);
         }
     }
 }
コード例 #3
0
ファイル: CellAutomataGA.cs プロジェクト: TNK2718/SWARM2
 // 突然変異
 public void Mutation(IntArrayChromosomes intChromosomes, double mutationrate, int chromosomeMaxNumber)
 {
     System.Random random = new System.Random();
     for (int i = 0; i < POPULATION; i++)  // Change
     {
         double rndnum = random.NextDouble();
         if (rndnum <= mutationrate)
         {
             int startIndex = random.Next(0, (int)(CHROMOSOME_SIZE * (1 - MUTATION_RANGE)));
             for (int j = startIndex; j < startIndex + CHROMOSOME_SIZE * MUTATION_RANGE; j++)
             {
                 intChromosomes.SetChromosome(
                     i, random.Next(0, CHROMOSOME_SIZE), random.Next(0, chromosomeMaxNumber));
             }
         }
     }
 }