한 조건에서 목록의 항목을 다른 목록으로 복사하려고합니다. 세 가지 목록이 있습니다. 첫 번째 목록에는 예를 들어 10 개의 점 목록이 포함되고 두 번째 목록에는 각 목록의 총 거리 (비용 또는 적합성)가 포함됩니다 (10 개의 목록 -> 10 개의 총 거리). 여기에 사진 한 조건의 목록에서 항목 복사
: - 두 번째 목록 '피트니스'
제 3 목록 제리스트 지적 목록을 추가 조건 totalFitness : 위 숫자 예 예 ------ ----> (피트니스 [0]/totalFitness) < = 비율.
가 작동하지 않습니다하지만, 여기 당신은 내가 노력 코드를 볼 수 있습니다
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)
으로 변경하면 첫 번째 목록의 전체 지점 목록이 세 번째 목록에 복사됩니다. 그러나 내가 복사하고자하는 것은 : '최고의'적합성을 가진 점수의 목록입니다.
내가 잘못하고있는 것은 무엇입니까? 나는 단서가없고 이미 몇 가지 변화를 시도했지만 아직 작동하지 않습니다. 내가 초보자라고 생각하면 고맙겠습니다.
디버거를 사용하여 코드를 단계별로 실행하는 방법을 배워야 할 수도 있습니다. 좋은 디버거를 사용하면 한 줄씩 프로그램을 실행하고 예상 한 곳에서 벗어난 곳을 볼 수 있습니다. 프로그래밍을 할 때 필수적인 도구입니다. 추가 읽기 : ** [작은 프로그램을 디버깅하는 방법] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** –
LINQ Union, Where, Sum, Aggregate methods 확실히 이것을 달성하는 데 도움이 될 것입니다. – Aybe