コード例 #1
0
        public void Mutate(float mutationRate)
        {
            for (var rowIndex = 0; rowIndex < rowCount; rowIndex++)
            {
                for (var columnIndex = 0; columnIndex < columnCount; columnIndex++)
                {
                    var rand = SyncRandom.NextFloat();

                    if (rand < mutationRate)
                    {
                        // Debug.WriteLine(string.Format("mutated {0}:{1}", rowIndex, columnIndex));
                        matrix[rowIndex, columnIndex] += SyncRandom.NextGaussian() / 5;

                        if (matrix[rowIndex, columnIndex] > 1)
                        {
                            matrix[rowIndex, columnIndex] = 1;
                        }
                        else if (matrix[rowIndex, columnIndex] < -1)
                        {
                            matrix[rowIndex, columnIndex] = -1;
                        }
                    }
                }
            }
        }
コード例 #2
0
 public void Randomize()
 {
     for (var rowIndex = 0; rowIndex < rowCount; rowIndex++)
     {
         for (var columnIndex = 0; columnIndex < columnCount; columnIndex++)
         {
             matrix[rowIndex, columnIndex] = SyncRandom.NextFloat(-1, 1);
         }
     }
 }