我正在尝试在一种情况下将项目从列表复制到另一个列表。我有三个清单。第一个列表包含例如 10 个点列表,第二个列表包含每个列表的总距离(成本或适应度)(10 个列表 -> 10 个总距离)。
这是一张图片:第一个列表包含 10 个列表(每个列表包含点)-第二个列表“健身” 第三个列表是空的,应该在一个条件下填充项目。首先,我将第二个列表中的所有值加起来。上面的数字示例:totalFitness = 4847 + 5153 + 5577 + 5324...
将第一个列表中的点列表添加到第三个列表的条件是:例如 ----------> (Fitness[0] / totalFitness) <= ratio。
但它不起作用,在这里你可以看到我尝试过的代码:
class RunGA
{
public static List<List<Point3d>> createGenerations(List<List<Point3d>> firstGeneration, List<int> firstFitness, int generationSize)
{
List<List<Point3d>> currentGeneration = new List<List<Point3d>>();
int totalFitness;
int actualFitness;
totalFitness = firstFitness[0] + firstFitness[1];
double ratio = 1 / 10;
for(int k = 2; k < firstFitness.Count; k++)
{
actualFitness = firstFitness[k];
totalFitness += actualFitness;
}
for(int i = 0; i < firstFitness.Count; i++)
{
double selected = firstFitness[i] / totalFitness;
if(selected < ratio)
{
currentGeneration.Add(firstGeneration[i]);
}
}
return currentGeneration;
}
}
第三个列表仍然是空的。如果我将条件更改为:if(selected <= ratio)
那么第一个列表中的整个点列表将被复制到第三个列表中。但是我要复制的是:具有“最佳”适应度的点列表。
我做错了什么?我完全不知道,我已经尝试了一些更改,但它仍然无法正常工作。如果您能认为我是初学者,我将不胜感激。