![]() |
|
|
|||||||
| Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |||
|
Neuer Benutzer
short
Registriert seit: 27.11.2009
Fachbeiträge: 18
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
|
Hallo zusammen,
ich habe mal ein Programm entwickelt für eine Routenoptimierung. Das Ganze ist GUI basiert aber nicht mit irgendwelchen Maps oder so. Die Routen werden einfach in Form einer Tabelle am Ende darfestellt. Funktioniert soweit auch alles super, sobald ich jedoch 2 Städt 2 mal bereisen will führt mein algorithmus dazu, dass eben diese Städte plötzlich durch andere ersetzt werden. Bsp.: schwerin, Kiel, Bremen, Köln Lübeck und Hamburg 2 mal werden bereist. Am ende meines Algo kann es dazu kommen, dass plötzlich Hamburg und schwerin 2 mal bereist werden. könnt ihr mir helfen? hier der Code:
|
||
|
|
| #2 (permalink) | |||||
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.745
Abgegebene Danke: 0
Erhielt 1.640 Danke für 1.485 Beiträge
|
Ich würd' sagen da fehlen zu viele Informationen über Kontext und andere Klassen. Aber nur nebenbei:
|
||||
|
|
| Danke sagt: |
Armin0102 (27.11.2009)
|
| #3 (permalink) | |||
|
Neuer Benutzer
short
Themenstarter
Registriert seit: 27.11.2009
Fachbeiträge: 18
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
|
ok ich werde mal alles kommentieren was man so wissen müsste:
|
||
|
|
| #4 (permalink) | |||||
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.745
Abgegebene Danke: 0
Erhielt 1.640 Danke für 1.485 Beiträge
|
Ja, ich meinte solche Sachen wie dass man z.B. nicht weiß, was "RouteList" genau macht, und ob nicht vielleicht dort der Fehler liegt. Dass man das ganze nicht testen und nachvollziehen kann, und man nur eine sehr grobe Vorstellung von dem Problem bekommt ist... (ja, da gewöhnt man sich in solchen Foren dran
)Aber noch ein Punkt, der auch zur Lösungsfindung beitragen könnte:
In den Klassen "City" und "RouteList" sollte die Methode "toString" so überschrieben sein, dass sie hilfreiche Informationen ausgibt - bei "City" reicht vermutlich der Name (und ggf. die Position), bei "RouteList" wäre eine Ausgabe in der Form Hamburg -> München -> Berlin -> Huntertupfing vermutlich hilfreich, damit man durch die System.out.printlns schrittweise nachvollziehen kann, wie die Route sich ändert. Wenn man sieht, dass diese Klasse eigentlich alles richtig macht, und auf einmal doch die Route falsch ist, liegt der Fehler in der RouteList. Andernfalls erkennt man an den Debug-Ausgaben, zu welchem Zeitpunkt der Fehler auftritt, und kann den Fehler genauer eingrenzen. |
||||
|
|
| Danke sagt: |
Armin0102 (27.11.2009)
|
| #5 (permalink) | |
|
Neuer Benutzer
short
Themenstarter
Registriert seit: 27.11.2009
Fachbeiträge: 18
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
|
danke dir für deine Mühe ich werd mir das mal so angucken und den fehler so suchen, wenn es nicht klappt stell ich auch mal alle beteiligten KLassen hier mit rein damit du auch weißt was los ist^^ aber eine frage noch, wie überschreibe ich denn eine toString methode in einer Klasse die ja nur eine linkedlist enthält und die dazugehörigen methoden?
|
|
|
| #7 (permalink) | |||||||||||||||
|
Neuer Benutzer
short
Themenstarter
Registriert seit: 27.11.2009
Fachbeiträge: 18
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
|
also irgendwie finde ich den Fehler nicht. Mit deinen syso´s habe ich zwar erkannt das die klasse des Algorithmus selbst der schuldige ist, jedoch versteh ich beim besten willen nicht warum.
Hier also einmal alle Klassen die beteiligt sind der Reihe nach ![]() Algo:
City:
CityList:
Route:
RouteList:
Entfernungsberechner:
MainTest:
danke für jede hilfe |
||||||||||||||
|
|
| #11 (permalink) | |
|
Neuer Benutzer
short
Themenstarter
Registriert seit: 27.11.2009
Fachbeiträge: 18
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
|
ja das soll ja auchso sein! aber bei meinem programm kommt es zu dem phenomen, dass doppelt verkommende städte einfach getauscht werden. Das soll heißen gebe ich wie oben Lübeck und Kiel 2 mal ein, so müssten diese im ergebnis auch 2 mal bereist werden! es kommt aber vor das in manchen ergebnissen statt kiel und lübeck plötzlich kiel hamburg oder lübeck bremen oder bremen hannover
|
|
|
| #12 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.745
Abgegebene Danke: 0
Erhielt 1.640 Danke für 1.485 Beiträge
|
Ich bezweifle, dass mir in nächster Zeit so langweilig sein wird, dass ich deinen Code debugge. Schau' dir an, was der Routenoptimierer macht, und bei welchem Schritt das erste mal ein Fehler auftaucht...
|
|
|
| #13 (permalink) | |
|
Neuer Benutzer
short
Themenstarter
Registriert seit: 27.11.2009
Fachbeiträge: 18
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
|
naja danke für deine Hilfe soweit, ich werde mir das mal nochmal angucken und gegebenen falls das ganze umproggn. Hab da schon so eine idee. Aber sag mal könntest du mir wenn du so einfach mal über den code guckst sagen was man da hätte besser schreiben können? syntaktisch schöner und aussagekräftiger?
|
|
|
| #14 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.745
Abgegebene Danke: 0
Erhielt 1.640 Danke für 1.485 Beiträge
|
Musst ja nicht "das ganze Umproggn"
Mit der Ausgabe müßte man den Fehler doch eingrenzen können?!Ansonsten sieht das IMHO schon ganz vernünftig aus. Statt der Serialization hätte ich zwar Copy-Konstruktoren verwendet, aber das ist nichts "strukturelles".... |
|
|
| #15 (permalink) | |||
|
Neuer Benutzer
short
Themenstarter
Registriert seit: 27.11.2009
Fachbeiträge: 18
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
|
habe das problem ohne umproggn gelöst^^ es lag an der Mutations - Methode! da wurde ja 2 mal .set aufgerufen und diese methode war in der klasse routeList definiert. hier fand bei jedem mal eine überprüfung statt und es konnte halt passieren, das ein .set() durch ging und der andere nicht^^ dadruch hat sich dann dieListe anders mutiert als gewollt. nun habe ich dies geändert und es läuft super. ich danke dir für deine denk anregungen^^ hat mir geholfen.
jetzt stehe ich aber dummerweise vor dem nächsten Problem. Mein nächster Algo soll ALLE möglichen Routen für eine gegebene Städteliste bilden und die beste(kürzeste) auswählen.Bis jetzt habe ich es erstmal so gemacht das 2 for schleifen jeweils 2 aufeinander folgende Städte aus der Liste holen und diese als Route in eine RouteList speichern. so bekomme ich Alle möglichkeiten auch 2mal die selbe stadt, wobei die distance zwischen diesen dann null ist hier der code dazu:
so nun versuche ich aus dieser routeList alle sinnvollen und richtigen Lösungen zu generieren da hapert es noch ein wenig. wenn ich beispiels weiße aus der routeList hamburg -> kiel auswähle so muss ich auf jeden fall als nächstes alle möglichkeiten durchsuchen, wo kiel als start stadt steht und so weiter. |
||
|
|
| #16 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.745
Abgegebene Danke: 0
Erhielt 1.640 Danke für 1.485 Beiträge
|
Wenn ich das richtig sehe, brauchst zu zu einer gegebenen Menge von Städten
H Hamburg B Berlin M München S Stuttgart Alle möglichen Kombinationen: HBMS, HMBS, HSBM, HSMB, BHMS... Wenn dem so ist, schau dir mal das "PermutationIterable" aus Combinatorics an. EDIT: Du weißt aber hoffentlich, dass das dann exponentielle Laufzeit hat, d.h. schon bei 6 oder 8 Städten oder so ziemlich lange dauern kann.... |
|
|
| #17 (permalink) | |
|
Neuer Benutzer
short
Themenstarter
Registriert seit: 27.11.2009
Fachbeiträge: 18
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
|
ja das weiß ich, das ist auch auf die aufgabe^^ ich bastel ja an einer Routenoptimierung. Es gibt zwei algo´s der eine berechnet genau(ist der, der potenziel ist) und einer bestimmt eine nährungslösung in dem mutationen des ergebnisses in einer bestimmten anzahl durchgeführt werden. Ich möchte das so bestimmen das abhängig von der anzahl der städte die der benutzer zu einer route amchen will ein algo ausgewählt wird. was würdest du sagen reicht die grenze von 10 städten für den genauen(exponentiellen) algo aus oder ist das noch zu gering, ich möchte eine möglichst geringe Wartezeithaben vlt so 2-3 sekunden.
ach und danke für den hinweis mit der combinatorik |
|
|
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
| Lesezeichen |
|
|