Rucksackproblem - Höchstkomplex!

Hallo,

Ich habe die Aufgabe, eine Optimierung zu schreiben. Diese ist höchstkomplex und wahrscheinlich nicht ganz lösbar, da es zuviel Zeit beanspruchen würde alles zu berechnen. Es gibt momentan eine Lösung, diese ist aber nicht wirklich brauchbar, da sie viel zu lange rechnet und erst noch schlechte ergebnisse bringt.

Wenn ein Mod möchte, darf er diese Fragestellung gerne als Programmieraufgabe stellen. :)

Es geht um folgendes:

Eisenstücke müssen in verschiedene Längen geschnitten werden. Es muss nun die optimale Kombination gefunden werden, die möglichst wenig Rest gibt. Es interessiert in der ganzen Berechnung nur die Länge der Objekte.
Die Berechnung sollte immer auf cm genau sein.

Aufgabenstellung:
-------------------------------------
Es sind n Stücke vom Ausgangsmaterial gegeben. Dieses Ausgangsmaterial kann auch verschiedene Längen haben. Die mindestlänge des Ausgangsmaterial ist 50cm, die längsten Stücke 24m.

Nun wird eine Liste gegeben, in welcher steht, wie viele Stücke von welcher Länge produziert werden müssen. Das sind durchaus mehrere verschiedene Positionen mit jeweils anderer Länge und Stückzahl.


Welches ist die optimale Verteilung auf die Ausgangsstücke?
-------------------------------------

Eine fiktive, konkrete Ausgangslage ist folgende:
.................
Es sind 20 Stücke von 16m sowie 30 Stücke von 18m Eisen gegeben.

Es müssen nun;
8 Stücke 14m
14 Stücke 5m
10 Stücke 6.5 m

aufgeteilt werden.
.................

So wie ich das bis jetzt gesehen habe, kann man nicht alle Kombinationen durch rechnen, da der Zeitaufwand explodiert. Standardlösungen die man im Netz findet, rechnen meistens alles durch, ohne Erfolg.

Hat da jemand einen guten Ansatz?


mfg
90nop
 
Ich kann da nur zu genetischen Algorithmen raten. Man wird zwar am Anfang etwas rumprobieren müssen (Starteinstellungen suchen) - dafür bekommt man eine suboptimale Lösung sehr schnell raus.
Hier gibt es einmal den genetisch-heuristischen Ansatz (bitte nicht nach den Zeiten beurteilen - denn der genetische Algorithmus eignet sich gerade nicht zur Berechnung der optimalsten Lösung -> der Schritt von 99% Optimum auf 100% ist der aufwändigste) sowie Permutationsansatz (von Lesco): Ein Schachbrett - acht Damen
 
Den ersten versuch würde ich mit nem constraintsolver machen. http://www.eclipse-clp.org/

Wenn dir das zu langsam ist, würd ich das Problem folgendermaßen angehen:
nimm dir das größte eingangsstück und wende darauf den rucksackalgorithmus an. das ganze dann in ner schleife, bis du alle zielstücke produziert hast, oder dein eingangsmaterial verbraucht ist.
Diese herangehensweise liefert zwar nicht die optimale Lösung, aber es sollte recht schnell ne suboptimale dabei rauskommen.
 
Zurück
Oben