Hallo zusammen,
nachdem ich nun schon einiges entwickelt habe komme ich nun zum Kern meines Programms - der Clusteranalyse! Ich versuch mal kurz die Clusteranalyse anzusprechen, ich hoffe es ist verständlich =)…
Ausgangspunkt solle eine solche Matrix sein! (Array?!)
- / 1 / 2 / 3
1 / 0 / 10 / 20
2 / 10/ 0 / 30
3 / 20 / 30 / 0
1, 2, 3 stehen für die verschiedenen Unternehmen bzw. die Start-Cluster!
Die Aufgabe ist jetzt in der Matrix den geringsten Wert zu finden und diese Unternehmen bzw. Start-Cluster miteinander zu verschmelzen. Also im obigen Beispiel Unternehmen 1 und 2, weil 10 der geringste Wert ist!
Ausgabe in der Konsole sollte dann später ungefähr so aussehen: (Beispiel)
1.Schritt (also noch keine Verschmelzung durchgeführt sondern erstmal nur die Unternehmen anzeigen): {1}; {2}; {3}
2.Schritt (Unternehmen 1 und 2 werden verschmelzt): {1,2}; {3}
Dadurch das die Unternehmen 1 und 2 verschmelzt wurden, muss auch die Matrix angepasst werden… denn es muss festgelegt werden inwieweit Unternehmen {3} nun von „Unternehmenscluster“ {1, 2} enfernt ist. Die Berechnung sieht folgender Maßen aus…
verbleibendes Cluster {3}
Abstand {1} zu {3} war 20
Abstand {2} zu {3} war 10 (alles entnommen aus oberer Matrix)
ich nehme immer den niedrigsten Wert, in diesem Fall also die 10!… also sieht die neue Matrix so aus…
- {1,2} / {3}
{1, 2} 0 / 10
{1, 2} 10 / 0
und auf dieser Basis soll dann weiter verschmolzen werden… bis nichts mehr da ist…!
Um jetzt nicht einfach zu fragen wie würdet ihr das machen, vielleicht Schritt für Schritt!
Die erste Frage die sich mir stellt bezieht sich somit auf das Array!
Der letzte Schritt bevor die Clusteranalyse durchgerechnet werden soll sind die Methoden „distanzBerechnungEukli“ oder „distanzBerechnungCity“ jenachdem was man an der Oberfläche auswählt! Danach sollte das angepasste Array an die Methode? übergeben werden die Clusteranalyse durchführt.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| public static void distanzBerechnungEukli(double[][] kunde) { double Ergebnis = 0; double Formel = 0; Console.WriteLine("Berechnung auf Basis Euklidischer Distanz!"); Console.WriteLine(""); for (int a = 0; a < kunde.Length; ++a) { Console.WriteLine(""); Console.WriteLine("Unternehmen: "+kunde[a][0]);
for (int b = 0; b < kunde.Length; ++b) { for (int i = 1; i < kunde[0].Length; ++i) { Formel = (Math.Pow(kunde[a][i] - kunde[b][i],2)); Ergebnis += Formel; } double Endergebnis = 0; Endergebnis = Math.Sqrt(Ergebnis); Console.WriteLine(Endergebnis); Endergebnis = 0; Ergebnis = 0; } } }
public static void distanzBerechnungCity(double[][] kunde) { double Ergebnis = 0; double Formel = 0;
Console.WriteLine("Berechnung auf Basis CityBlock Distanz!"); Console.WriteLine("");
for (int a = 0; a < kunde.Length; ++a) { Console.WriteLine(""); Console.WriteLine("Unternehmen: " + kunde[a][0]);
for (int b = 0; b < kunde.Length; ++b) { for (int i = 1; i < kunde[0].Length; ++i) { Formel = (Math.Abs(kunde[a][i] - kunde[b][i])); Ergebnis += Formel; }
double Endergebnis = 0; Endergebnis = Ergebnis; Console.WriteLine(Endergebnis); Endergebnis = 0; Ergebnis = 0; } } |
Jetzt meine Frage!
Die Werte die innerhalb der Methoden ausgegeben werden, werden zum jetzigen Zeitpunkt nicht in das Array geschrieben! Das heißt es findet ja nur eine Ausgabe statt die aber nicht das Array mit den neue Werten anpasst! Was muss ich innerhalb der beiden Methoden ungefähr tun damit diese neuen Werte in das Array übertragen werde und vorallendingen wie erhalte ich eine solche Matrix wie sie oben bei der weiteren Verrechnung der CLusteranalyse aufgeführt wird? Oder anders gefragt ist ein solche Matrix für die weitere Verrechnung nötig? oder gibt es vielleicht auch eine andere einfachere Lösung!
Oder reicht vielleicht sogar nur der Clone des Arrays aus um die Berechnung in der nächsten Methode durchzuführen?
Die Ausgabe der Methoden in der Konsole sieht so aus:
Unternehmen 0:
0
0,194
Unternehmen 1:
0,194
0
Würde mich über Tipps sehr freuen!
Moderiert von
Th69: Beitragsformatierung überarbeitet (Text aus zitiertem und editiertem Beitrag übernommen).