Zuschnittoptimierung Heuristik oder Permutation

#8016757
Lesenswert?

Ich habe ein mathematisches Problem und weiß nicht wie ich das programmtechnisch umsetzen soll.

Ich habe Holz im Baumarkt, Fasebrett Fichte gehobelt 27,5 x 146 mm (DB 136 mm) in Längen: 450, 510, 540 cm. Verkauf nur im 4er Pack. Ich möchte den Zuschnitt optimieren, längstes Brett 16 x 2,8 m kürzestes Brett 16 x 1 m, dazwischen noch 10 x 1,8 m u.a.

Im Moment komme ich auf 5 Packs in verschiedenen Längen. Der Abfall beträgt ca. 13 % macht ungefähr 50 €.

Wie würde man das programmatisch angehen? Erstmal längsten und kürzesten Zuschnitt gegeneinander laufen lassen, und dann gegen die Baumarktlängen iterieren, und dann auf ganze Packs aufrunden? Es sind ca. 50 x Bretter zu sägen. Mit Permutation wird das Programm wohl ewig laufen.

Andere Ideen?

: Bearbeitet durch User
#8017870
Lesenswert?

Alexander schrieb:

Hat 5,5 m Abfall gespart, immerhin 20 €

Ich denke ich werde das mit in den Baumarkt nehmen, da sollen die dort ihre Restbestände mit eintragen.

Wenn man miserable Qualität zu überhöhten Preisen haben will dann kauft man Holz im Baumarkt.

Gute Qualität zu günstigerem Preis bekommt man beim lokalen Sägewerk. Die Einsparung ist bestimmt deutlich höher als 20€.

#8018331
Lesenswert?

Hab es mal überflogen. Sportliche Laufzeiten. Meine Hoffnung war dass es sowas schon fertig gibt, so wie es verschiedene Sortieralgorithmen schon fertig gibt (Bubblesort usw.) Dann muss man das Rad nicht neu erfinden.

Das Webtool aus Post #2 läuft auch fast 2 min. Findet aber nicht immer alles, manches kann man anschließend noch optimieren. Das zeigt mir dass wohl nicht alle möglichen Kombinationen durchprobiert werden, das funktioniert eher nach dem Prinzip was zuerst kommt malt zuerst.

#8021714
Lesenswert?

Aspire Vectric kann so etwas. Vectoren zeichnen. Größe angeben und es gibt da einen Optimierer. Nesting heißt er. Aber es gibt da vermutlich andere Vector basierte Programme die so etwas machen können. Prinzipiell ist das ein bekanntes Problem. Wurde vermutlich schon 100 fach gelöst. Besser oder schlechter.

Allerdings ist die Frage, wie gut der Algorithmus ist. Denn darauf kommt es an. Man hat ja nicht ewig Zeit, soll ja in absehbarer Zeit eine Ergebnis liefern. Das heißt ja auch, die Algorithmen werden nicht alle mögliche Varianten durchprobieren. Dafür gebe es keine Zeit. Hast ja auch schon geschrieben. Die Ergebnis wird dann halt etwas was, was relativ gut optimiert ist, aber nicht garantiert das beste. Man muss da irgendwelche Regeln setzten, uns sagen ich Probiere nicht alles durch, sondern versuche nur eine kleine Schnittmenge. Zum Beispiel Vectoren sortieren nach grösse und dann immer 1 Stück rein schieben und schauen dass der gut sitzt. Dann nächste. Man kann auch sagen, dass man die Schritte begrenzt wie lange man versucht zu optimieren.

Man kann irgendwie verstehen dass man 0.0001% mehr optimieren möchte, denn 1 Cent pro 1 Million Stücke sind dann doch viel Geld. Aber ich persönlich finde es einfach übertrieben. Man muss leider akzeptieren, dass es immer Abfall geben wird. Mit optimieren kommt man eventuell nicht mehr weiter, es muss da eher ein Technologiewechsel kommen. Zum Beispiel, anstatt Holz schneiden, eher Holz in Form gießen (Gussholz :) ). Ist ja nur reine Phantasie. Realistischer ist , du versucht aus den Abfall wieder etwas zu machen, da entsteht wieder Abfall. Am ende hast du Holz zum heizen.

Persönliche Seite #8032773
Lesenswert?

Hallo Micha E.

Micha E. schrieb:

ich hatte letztens auch ein ähnliches Problem gehabt. Gefunden habe ich https://www.cutlistoptimizer.com/ . Funktioniert einwandfrei. Probier es aus.

Gefährliche Geschichte, die Schnittbreite defaultmäßig auf Null zu setzten. 3mm wäre auf der sichereren Seite.

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de

#8034850
Lesenswert?

Alexander schrieb:

Das zeigt mir dass wohl nicht alle möglichen Kombinationen durchprobiert werden

Da die eigentliche Frage ja beantwortet wurde, aus Interesse: Ist das Problem NP-schwer (bzw. NPO) oder ist es (sicher) in P (bzw. einer der äquivalenten Klassen)? Gefühlt würde ich es in Richtung des Rucksackproblems einordnen, aber sicher kann ich das nicht herleiten.

[Nachtrag] Es dürfte eher das Behälterproblem sein. Das ist NP-vollständig und damit nicht optimal effizient lösbar (im komplexitätstheoretischen Sinn).

Damit wieder zurück zur Ausgangsfrage: Alexander schrieb im Beitrag #8016757:

Wie würde man das programmatisch angehen?

Der anscheinend beste Approximationsalgorithmus ist First-fit-decreasing bin packing (https://en.wikipedia.org/wiki/First-fit-decreasing_bin_packing).

Ich weiß, dass die Frage mit dem oben genannten Programm beantwortet wurde, aber mich hat es aus theoretischer Sicht interessiert.

[PPS] So steht es auch auf Seite 37 in

Rolf schrieb:

https://www.mansci.ovgu.de/mansci_media/publikationen/2008/FestschriftGehring.pdf

: Bearbeitet durch User

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren