chromosome.cs

来自「Computational Intelligence IRIS dataset 」· CS 代码 · 共 87 行

CS
87
字号
using System;
using System.Collections.Generic;
using System.Text;

namespace CIProject
{
    public class Chromosome
    {
        public Chromosome(int size)
        {
            geneCount = size;
            genes = new double[geneCount];
            for (int index = 0; index < geneCount; index++)
            {
                genes[index] = 0.0;
            }
        }

        public Double this[int index]
        {
            get
            {
                return genes[index];
            }
            set
            {
                genes[index] = value;
            }
        }

        public Chromosome[] CrossOver(int centromere, Chromosome c)
        {
            if (c.geneCount != geneCount)
            {
                return null;
            }
            Chromosome c1 = new Chromosome(geneCount);
            Chromosome c2 = new Chromosome(geneCount);
            for (int index = 0; index < centromere; index++)
            {
                c1[index] = c[index];
            }
            for (int index = centromere; index < geneCount; index++)
            {
                c1[index] = genes[index];
            }
            for (int index = 0; index < centromere; index++)
            {
                c2[index] = genes[index];
            }
            for (int index = centromere; index < geneCount; index++)
            {
                c2[index] = c[index];
            }
            return new Chromosome[] { c1, c2 };
        }

        public void Mutation()
        {
            Random random = new Random();
            int i1 = random.Next(0, geneCount);
            int i2 = random.Next(0, geneCount);
            while (i1 == i2)
            {
                i2 = random.Next(0, geneCount);
            }

            Double gene = this.genes[i1];
            this.genes[i1] = this.genes[i2];
            this.genes[i2] = gene;
        }

        public Double[] ToArray()
        {
            double[] array = new double[geneCount];
            for (int i = 0; i < geneCount; i++)
            {
                array[i] = genes[i];
            }
            return array;
        }

        private int geneCount;
        private Double[] genes;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?