コード例 #1
0
        public Matrix Crossover(Matrix partner)
        {
            var child = new Matrix(rowCount, columnCount);

            var randomRow    = SyncRandom.NextInt(0, rowCount);
            var randomColumn = SyncRandom.NextInt(0, columnCount);

            for (var rowIndex = 0; rowIndex < rowCount; rowIndex++)
            {
                for (var columnIndex = 0; columnIndex < columnCount; columnIndex++)
                {
                    child.matrix[rowIndex, columnIndex] = (rowIndex < randomRow) || (rowIndex == randomRow && columnIndex <= randomColumn) ?
                                                          matrix[rowIndex, columnIndex] :
                                                          partner.matrix[rowIndex, columnIndex];
                }
            }

            return(child);
        }
コード例 #2
0
 private Runner GetRandomRunner(Runner[] fromRunners) => fromRunners[SyncRandom.NextInt(0, fromRunners.Length)].Clone();