private void CalculateFitness(TimeTable timeTable)
{
int score = 0, DAYS_NUM = 5;
score = timeTable.Exams.SelectMany(exam => exam.Students)
.GroupBy(s => s)
.Select(g => Connections(g.Count()))
.Sum();
timeTable.Fitness = score;
}
int Connections(int corners)
{
// 0+1+2+...+(corners-1)
return corners * (corners - 1)/2;
}
Antwort
Ist das nicht Ihre Funktion entspricht dies:
score = timeTable.Exams.SelectMany(exam=>exam.Students)
.GroupBy(s=>s)
.Select(g=>Connections(g.Count()))
.Sum();
mit Helferfunktion
int Connections(int corners)
{
//Formula for number of sides in a complete graph
//http://en.wikipedia.org/wiki/Complete_graph
// 0+1+2+...+(corners-1)
return corners*(corners-1)/2;
}
Dies sollte in timeTable.Exams.Sum(exam=>exam.Student.Count())
lineare Laufzeit sein, während Ihr quadratische sieht mich.
Ok Zeitplan ist eine Liste von Prüfungsobjekten mit jeder Prüfung, die eine Liste von Studenten enthält. Ich möchte die Anzahl der Prüfungen zählen, die Studenten mit der gleichen ID enthalten. Dies würde mir effektiv eine Anzahl von Konflikten geben. Wie auch immer, mein aktueller Code bewegt sich sehr langsam, wenn ich versuche, das Ergebnis dem Stundenplan zuzuordnen. Fitness –
@user: Gibt dein Code andere Ergebnisse als meins? Ich berechne, in wie vielen Prüfungen jeder Student ist, und benutze dann die "Connections" -Funktion, um schnell die Kollisionszahl für jeden Schüler zu berechnen, und summiere sie dann. – CodesInChaos
Ich bekomme eine mehrdeutige Referenz auf g.count –
- 1. Engpass mit Sockets Ansatz?
- 2. MongoDB Nebenläufigkeit Engpass
- 3. NodeJS JSON.stringify() Engpass
- 4. Ist PowerShell ein Engpass
- 5. Method Auflösung um in C++
- 6. C++ Operator Überladung Auflösung Ambiguität
- 7. Engpass in CA :: Transaction :: commit()
- 8. Wie finden Leistung Engpass in iPhone
- 9. Leistung Engpass Url.Action - kann ich es umgehen?
- 10. C++ Überlastungs Auflösung, benutzerdefinierte Umwandlung und Funktionsschablone
- 11. C++ Operator == und implizite Konvertierung Auflösung
- 12. C++ Standard, überladene Funktion Auflösung/Matching
- 13. Bild speichern Auflösung in C# speichern
- 14. Unity + C# - "Auflösung der Abhängigkeit fehlgeschlagen"
- 15. Engpass bei der Zufallsgenerierung mit mehreren Threads
- 16. Derselbe Treiber für mehrere Netzwerkkarten - Performance-Engpass?
- 17. C++ mit extern „C“ in Namespacepräfix Auflösung und Optimierungsstufe Abhängigkeit
- 18. Idee zur Auflösung von impliziten Includes in C, C++
- 19. Erratische Lochtyp-Auflösung
- 20. Überladung der Auflösung
- 21. Wie Debuggen Unity-Auflösung?
- 22. virtueller Funktionsaufruf Auflösung
- 23. Fehler bei impliziter Auflösung?
- 24. Medienabfragen für Tablet Min-Auflösung und Max-Auflösung
- 25. C#: Behalten Sie die Größe trotz unterschiedlicher Auflösung mit Graphics.DrawImage
- 26. Wie passt man C# -Anwendung in jede Auflösung
- 27. Ändern Sie die Auflösung eines JPEG-Bildes mit C#
- 28. Portable Weise in C++, um Desktop-Auflösung zu erhalten
- 29. Get native Auflösung des Bildschirms
- 30. Verwenden Sie visualvm, um Portal Engpass zu finden
die variable Zuweisung ist der Engpass Ihrer Anwendung? – BrokenGlass
Es ist schwierig, Verbesserungen vorzuschlagen, ohne die beteiligten Typen, die Beziehungen usw. zu kennen. Ich bin mir sicher, dass es einen besseren Ansatz gibt, aber wir können nicht wirklich viel ohne weitere Details helfen. –
Ich glaube nicht ... das ist eine App für körperliche Fitness, also sollte sie Leuten helfen, die Flaschenhals haben. – Crisfole