09.09.2016, 04:18 (Dieser Beitrag wurde zuletzt bearbeitet: 09.09.2016, 04:18 von Ego.)
Hallo Linda,
ich nehme an, dass du mit Luffys Lösung nicht ganz zufrieden bist, da hier nicht eine Optimale Verteilung durchgeführt wird, sondern "nur" berechnet wird wieviel Stangen ich kaufen muss um die Gesamtlänge abzudecken. Daher auch die Frage nach dem Verschnitt.
Ich habe die Frage nach einer Optimalen Verteilung von Zuschnitten in diesem Forum schon mehrfach gehört (erst gestern).
Zu meiner ersten Überlegung eine Lösung mit dem Excel-Solver zu ermitteln habe ich keine Idee wie das Modell aussehen könnte.
Daher habe ich vorhin ein kleines Programm geschrieben, dass iterativ ein optimales Ergebnis ermittelt. In deinem Beispiel könnte man die vier Stangen a 10cm auch durch zwei Stangen a 20cm ersetzen.
Aber bei dem iterativen Verfahren kann die Rechenzeit exponentiell mit der Anzahl der Zuschnitte steigen. Das bedeutet, dass sich bei jedem zusätzlichen Zuschnitt die Rechenzeit mehr als verdoppeln kann.
Für welche "maximale" Anzahl an Zuschnitten würdest du denn eine Optimierung wünschen. Wenn die Zahl zu hoch ist, brauchst du dich erst gar nicht in mein Lösungsversuch einzudenken.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
ja es können schon bis zu 100-200 verschiedene Schnitte sein.
Die sind vom Maß selbst auch total verschieden also eine einfache Zahl ist eher selten...
Es sollte von den angegebenen Schnitten, jene zusammensuchen die gemeinsam dann am wenigsten Verschnitt haben.
Man sollte eventuell auch auswählen können welche Stangenlänge verwendet werden darf (z.B. bei einer Rechnung 10, 15, 20, 25, 30... bei einer anderen Rechnung dann nur 10, 20,30.... oder sogar nur eine.
Vielleicht dass man den Verschnitt auch prozentuell anpassen könnte das wäre dann Optimal.
(PS: Meine Zahlen sind dann so ca 1456, 3456, 5928... also "große" ungerundete Zahlen)
wäre echt super wenn mir hier jemand eine Lösung findet :):)
Der Excel Solver unterstüzt maximal 200 Variablen somit glaube ich nicht das das Probelem mit dem Excel Solver zu lösen ist. Zur Rechenzeit ist zu sagen das es nach ersten nachdenken zu den NP vollständigen Problemen gehört, und somit eine exponentieller Anstieg an Rechenzeit nicht vermeidbar ist. Ich würde vorschlagen das ganze in C zu Programmieren oder einen spezielles Solver Programm zu verwenden.
für die Berechnung einer optimalen Verteilung von Stücken in dreistelliger Anzahl macht mein itteratives Programm keinen Sinn (da zu rechenaufwendig). Da sollte man lieber Luffys Vorschlag nehmen.
Mein Programm ist eher für eine zweistellige Anzahl von Stücken und da auch nur in den höheren Zahlen wenn durch möglichst wenig unterschiedliche Stangen- und Stücklängen der Verzweigungsbaum sehr stark begrenzt werden kann.
Eine Berücksichtigung von Verschnitt ist meines Erachtens in einer Optimierung nicht sinnvoll. Wenn man die Stangen nicht jederzeit nachkaufen kann, kann man einen Verschnitt ja nach der Optimierung addieren.
Eine Berücksichtigung der Schnittbreite ist sinvoll, da man aus einer 40cm Stange nicht vier 10cm Stücke erhält. Das kann aber auch durch addieren der Schnittbreite auf Stangen- und Stücklängen berücksichtigt werden.
Vielleicht kannst du ja einmal ausprobieren ob eine Optimierung für dich für kleiner Projekte eine Hilfe sein kann. Oder du kommst auf eine Idee wie man grössere Projekte in kleine optimierbare Teilprojekte aufteilen kann.
Daher in der Anlage das Programm.
Minimiert wird der Preis der angschnittenen Stangen.
Um ein Gefühl für die Dauer der Optimierung zu bekommen solltest du beim Test mit kleineren Stückzahlen und wenig unterschiedlichen Längen beginnen. Es kann auch vorkommen, dass nach einer Reduzierung der Stückzahlen die Berechnung länger dauert.
In meinem Programm habe ich bisher nur den Iterationskern geschrieben und mir noch keine Gedanken über Vernünftige Ein- und Ausgaben gemacht.
Hier einige Erklärungen:
In dem Bereich B6:F14 werden die benötigten Stücke und die zu berücksichtigenden Stangen eingetragen. Eine höher Anzahl von Stangen gleicher Länge hat meines Erachtens nur einen kleinen Einfluss auf die Dauer der Berechnung.
In dem Bereich unter B17:F17 wird das Ergebnis der Berechnung eingetragen. Wichtig sind die Spalten E und F. Hier wird angezeigt aus welcher Stange das Stück geschnitten wird. Da das Progamm noch nichts anzeigt wenn keine Lösung gefunden werden kann, solltest du diesen Bereich vor jeder Berechnung löschen.
Am Ende der Berechnung wird in einer MessageBox der Zeitraum zwischen Starrt und Ende der Berechnung ausgegeben.
Zur Information: Die Berechnung der aktuell eingestellten Aufgabe benötigt auf meinem Rechner 11 Sekunden.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.