Schmigalla

Mit diesem Programm kann man Schmigalla’s Dreiecksverfahren vom Computer ausführen lassen. Verfügbar ist es via Java WebStart. Wenigstens beim ersten Start wird sich die Laufzeitumgebung beschweren, ich sei nicht vertrauenswürdig. Das muss dann jeder für sich selbst entscheiden, aber wenn man das Programm benutzen möchte muss man mir vertrauen… Eine weitere Voraussetzung ist Java 1.5 oder neuer.

Benutzung

Der Startbildschirm sieht so aus:

Eingabe der Intensitätsmatrix

Eingabe der Intensitätsmatrix

In diesem können die Transportintensitäten zwischen den einzelnen Anlagen definiert werden, indem man diese in den Teil der Matrix oberhalb der Hauptdiagonalen einträgt. Der Rest der Matrix ist implizit Null. Mit dem “+” unten links kann man neue Zeilen / Spalten hinzufügen. Diese werden im Moment mit Zufallswerten gefüllt. Bitte beachten. Dies ist nur ein Relikt aus der Entwicklung, welches mir beim “schnell mal testen” geholfen hat. Bei Bedarf kann ich das gerene noch abstellen. Mit “laden” kann man CSV – Dateien direkt einlesen. Diese können z.B. aus Excel exportiert werden. Ein Klick auf “los” startet die Berechnung:

Die gefundenen Lösungen

Die gefundenen Lösungen

Hier werden sämtliche gefundenen Lösungen vorgehalten. Die erste Lösung ist jene, welche der klassische Schmigalla liefert. Danach startet eine wetere Suche nach verfeinerungen (siehe Funktionsweise). Alle Lösungen welche wenigstens nicht schlechter sind als die beste bisher bekannte Lösung werden in der Liste links vermerkt und können in Ruhe studiert werden.Der Algorithmus hat terminiert, wenn unter dem Reiter “Fortschritt” nichts mehr passiert. Für realistische Problemgrößen wird man so lange allerdings nicht warten wollen. Aber mal über Mittag laufen lassen kann sich schon lohnen.

Dateiimport

Das Programm kann CSV – Dateien importieren. Diese müssen einigen Regeln genügen:

  1. als Trenner zwischen den Werten sollte ein Komma, kein Semikolon stehen
  2. der Trenner zwischen Vor- und Nachkommaanteil einer Zahl muss ein Punkt, kein Komma sein
  3. auf der Hauptdiagonalen müssen Nullen stehen, keine “x”, auch wenn das Programm das dann anders anzeigt

Eigentlich sind die ersten zwei Regeln überflüssig, denn eine CSV – Datei muss diesen Regeln ohnehin genügen, damit sie sich als CSV bezeichnen darf. Warum schreibe ich das hier trotz dem nochmal hin? Weil Excel, zumindest in der Standardeinstellung, sie selbstverständlich nicht an diese Regeln hält. Man kann aber irgendwo im exportieren – Dialog jedoch entsprechende Einstellungen vornehmen. Eine gültige Eingabe – Datei würde z.B. so aussehen:

"", "Anlage 1", "Anlage 2", "Anlage 3"
0.0, 1.0, 2.0, 3.0
0.0, 0.0, 4.0, 5.0
0.0, 0.0, 0.0, 6.0

Dateiexport

Da die Sache mit dem Datei – Import zugegebener Maßen etwas wackelig ist, gibt es nun endlich auch einen funktionierenden “speichern” – Knopf. Dieser schreibt genau die Dateien, die das Programm anschließend auch wieder einlesen kann. Damit hat der Ärger mit Excel ein Ende: einfach die Daten von Anfang an im Programm verwalten, und mit diesem Speichern und wieder Laden. Und die gespeicherten CSV – Dateien dürfte Excel auch ohne Probleme lesen können — beim Lesen ist es so weit ich weiß weniger zickig als beim Schreiben.

Funktionsweise

Das Programm arbeitet mit einem klassischen Backtracking – Algorithmus. Die Reihenfolge, in welcher die Möglichkeiten ausprobiert werden, entspricht genau der Heuristik welche Schmigalla ’86 vorgeschlagen hat (kann gerade keine Referenz finden, das Buch liegt hier im Institut irgendwo rum — falls es Dich interessiert kann ich mal nachfragen). Da das Absuchen des gesamten Lösungsraumes für realistisch große Probleme lange dauert, wird die jeweils beste gefundene Lösung als Zwischenergebnis ausgegeben. Die erste gefundene Lösung entspricht dabei dem, was hin und wieder produziert wird, wenn man “Schmigalla von Hand macht”. Wobei ich aber aus seinem Buch nicht herausgelesen habe, dass das von Herr Schmigalla jemals so vorgesehen war. Ich weiß auch nicht, wer zu erst auf die Idee kam, Schmigalla von Hand auszuführen…

Bisschen tricky bei dem Problem ist, dass es gerne passiert, dass man Kombinationen mehrmals betrachtet (da die Reihenfolge, in welcher die Maschinen aufgestellt werden, für die Güte der Lösung egal ist — für den Alg. sind es aber verschiedene Wege zum Ziel, welche er auch gesondert betrachtet. Um diese Problematik ein wenig zu lockern habe ich einen Cache eingebaut, in welchem Konstellationen mit wenigen platzierten Maschinen gemerkt werden — wenn eine Stellung im Cache gefunden wird, so braucht diese nicht nochmals betrachtet werden. Das kann sicher noch verbessert werden (Spiegelungen/Rotationen erkennen, …).

Da eine optimale Lösung für ein Teilproblem nicht notwendigerweise auch Bestandteil der Gesamtlösung ist, verschließt sich das Problem leider der dynamischen Programmierung. Daher würde ich vermuten, dass es kein signifikant schnelleres exaktes Verfahren gibt. Nicht exakte Verfahren habe ich nicht betrachtet, aber da geht bestimmt noch einiges.

Dem Programm bei der Arbeit zuschauen

Dem Programm bei der Arbeit zuschauen

Haftungsausschluss

Ich habe dieses Programm in meiner Freizeit nach bestem Wissen und Gewissen erstellt und bin für Kritik sowie Verbesserungsvorschläge dankbar. Jedoch garantiere ich für nichts. Ich stelle dieses Programm “wie es ist” zur freien Benutzung zur Verfügung. Jegliche Gewärleistung — implizit oder explizit — betreffs der Marktgängigkeit oder auch nur der Tauglichkeit für irgend einen Einsatzzweck ist hiermit ausdrücklich ausgeschlossen. Dies schließt auch jeden denkbaren Folgeschaden, welcher aus der Benutzung dieser Software entsteht, ein. Wirklich, ich garantiere für gar nichts. Echt. Aber selbst nachrechnen ist erlaubt.



  1. franka 3.4.09 / 4pm

    Hallo,
    ich bin Studentin und muss den Schmigalla in Excel anwenden. Kannst du mir diesen Backtracking Algorithmus zuschicken? Das würde mir eine Menge Einarbeitungszeit bringen… Und ich habs nicht allzu gut mit Programmieren…

    Danke im Voraus!!!

    Grüße
    Franka

  2. Waldheinz 3.4.09 / 7pm

    Hallo Franka,

    um den Schmigalla – Algorithmus in Excel ausführen zu können, müsste man ihn in VB Script o.ä. neu implementieren. Wenn Du das tatsächlich vor hast, empfehle ich Dir als Grundlage das entsprechende Buch von Schmigalla. Ich weiß darüber leider nur noch, dass es aus dem Jahr ’86 war, aber der Titel ist mir entfallen. Aber eigentlich glaube ich nicht, dass es sinnvoll ist das ganze direkt im Excel laufen zu lassen – dafür ist Excel einfach nicht gemacht. Was spricht denn dagegen, die Berechnung von diesem Programm vornehmen zu lassen?

    Gruß,
    Matthias

  3. Joachim 4.21.09 / 2pm

    Hallo,

    wie komme ich an das Programm?

  4. Waldheinz 4.22.09 / 3pm

    Hallo,

    du klickst einfach auf den orangefarbenen “Launch” Knopf ganz oben. Wenn bei Dir Java 1.5 oder neuer installiert ist, sollte es dann los gehen. Solltest Du kein Java installiert haben, kann man das hier runter laden.

  5. Andreas 6.11.09 / 6pm

    Wie kann ich einen Kommentar freischalten?
    Gruß
    Andreas

  6. Waldheinz 6.12.09 / 4pm

    Einen Kommentar freischalten kann nur das Ministerium für Bildung und Wahrheit. Also ich. :-)

  7. nicnaec 9.10.09 / 2pm

    Hallo Waldheinz,

    ich buckel hier an einer CSV rum aber es will nicht so recht. geht

    Von/Nach,Masch1,Masch2,Masch3,
    Masch1,0,0.5,0,0,
    Masch2,0,0,0.5,

    ? muss da ein Komma ans Zeilenende? das ist so bockig

  8. Waldheinz 2.15.10 / 11pm

    Hallo nicnaec,

    die Antwort kommt vielleicht ein ganz klein wenig spät — aber ich habe die Seite mal aktualisiert und ein funktionierendes Beispiel für eine CSV – Datei eingefügt.

  9. » Schmigalla kann speichern Waldheinz 2.15.10 / 11pm

    [...] dass eine Google – Suche nach “Schmigalla” tatsächlich meinen kleines Programm zur Lösung eben dieses Problems als ersten Treffer liefert. Das nahm ich dann doch zum Anlass, da [...]

  10. Robert 7.28.10 / 9pm

    Hallo,
    ist es vlt. möglicht das du den Sourcecode zu dem Programm öffentlich machst?
    Am Komfortabelsten wäre es wahrscheinlich bei GoogleCode oder ähnlichen Webplatformen.

    Gruß
    Robert

  11. Waldheinz 8.4.10 / 8pm

    Hallo Robert,

    also möglich wäre das. Was hättest Du denn damit vor?

  12. Erik 6.20.11 / 4pm

    Hallo, Funktioniert das Programm auch unter MAC.OS ??

  13. STefan 6.25.11 / 12pm

    noch eine Frage: dürfen unterhalb der Diagonale auch Daten eingetragen sein (Rückflüsse)

  14. MC 9.27.11 / 11am

    EXCEL – CSV Problematik – Lösung

    Servus,

    ich habe das Programm im Rahmen meiner Diplomarbeit verwendet. Ich hoffe das geht in Ordnung, denn es steht ja das es zur freien Verfügung ist.

    Der Grund warum Excel in Deutschland das “;” anstatt des “,” als Trennzeichen verwendet ist: In Deutschland wird das Komma bereits bei Dezimalzahlen verwendet. Wenn man z.B. 3 Zahlen mit 1,25 3,72 4,56 hat würde beim “,” als Trennzeichen folgender Salat rauskommen: 1, 25, 3, 72, 4, 56. Daher das “;”

    Dies kann man aber ändern, bei Windows / (Und Vista vermutlich auch): Start -> Systemsteuerung -> Zeit. Sprache, Region-> Tastaturen und Eingabemethoden -> Fenster “Regionen und Sprachen” öffnet sich ->Reiter “Formate” anklicken-> weitere Einstellungen -> Dezimaltrennzeichen auf “.” ändern, Listentrennzeichen auf “,” ändern -> OK -> Übernehmen -> Aus Excel eine CSV Datei mit “,” als Trennzeichen ausgeben :-D

    Noch eine Frage von mir: Hat das Programm Grenzen? Ich habe etwa 2500 Anlagen die ich damit rechnen lasse, paar mal kam nichts vernünftiges bei raus (viele fehlten), einmal kam das Ausgangsschmigalla heraus aber ohne den BT Algorithmus… Kapazitätsgrenze?

  15. Dr. Faulhammer 10.9.11 / 10am

    Ich habe zufällig diese Seite gelesen.
    Als Student und Doktorand von Prof. Schmigalla hätte ich weitere Unterlagen zur Verfügung; ein Exemplar seiner Schrift “Optimale Maschinenanordnung” könnte ich auch abgeben.
    Gruß Dr. F.

  16. Waldheinz 10.9.11 / 11am

    Hallo Erik,

    ja, das Programm sollte auch unter OSX laufen, habe es teils am Mac entwickelt.

  17. Hüsner 11.3.11 / 5pm

    so ein scheiß Programm! Haben wohl komplette Dachlatten entwickelt.

Have your say




Safari hates me