我有一个List,我已经在控制台项目的main方法中填充了.我这一人群传递给其目的是要采取人口的两名成员和分解的方式来创建稍后将加入人口两个新的唯一成员重新组合它们的方法.
然而,当我操纵两个原始成员来创建两个新的独特成员时,两个原始成员在初始人口中改变(因此改变了初始人口).这意味着当我去添加新成员时,我得到重复的条目列表.
我没有做任何过于复杂的事情我认为我只是在做一些愚蠢的事情.
有没有人知道为什么会这样?
以下是调用以选择初始化两个人口成员的方法:
public static List<Chromosome<Gene>> runEpoch(Random rand, List<Chromosome<Gene>> population, SelectionMethod selectionMethod)
{
int populationSize = population.Count;
int selectionCount = (int)Math.Truncate((population.Count * 0.75));
if (selectionMethod == SelectionMethod.Tournament)
{
for (int i = 0; i < selectionCount; i++)
{
Chromosome<Gene> parent = selection.runTournament(rand, population);
Chromosome<Gene> parentTwo = selection.runTournament(rand, population);
//Checks for the presence of incestuous mating. In some cases incestuous mating causes a stack overflow to occur that the program can not recover from
if (parent != parentTwo)
{ …Run Code Online (Sandbox Code Playgroud)