📄 chromosome.cs
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -