![]() |
Zuschnittsproblem
Hat jemand eine Idee für einen Algorithmus, um zu prüfen, ob ein Rechteck in ein anderes Rechteck noch hinein passt, in dem sich mehrere solcher schon befinden.
![]() Anders ausgedrückt, wieviel Kisten unterschiedlicher Abmessungen passen in einen Container.. |
AW: Zuschnittsproblem
Klingt verdächtig nach dem Rucksackproblem:
![]() |
AW: Zuschnittsproblem
Zitat:
![]() |
AW: Zuschnittsproblem
Zitat:
Und was heißt das ?? :cyclops::gruebel: |
AW: Zuschnittsproblem
Werter Kollege,
ich habe auch schon mal nach solch einer Lösung gesucht. Aber mehr aus Interesse. In meiner Studienzeit habe ich mal eine 1-dimensionale Optimierung programmiert, um KVH-Stangen zu optimieren. Das 2-dimensionale Problem ist etwas schwieriger. Es gibt aber einige Anbieter im Netz, die für dies Problem Programmkomponenten anbieten. Gruss Jens ![]() |
AW: Zuschnittsproblem
Zitat:
gewisse Typen ein und errechnet so den verbleiben Rest.
Delphi-Quellcode:
Nun wollte ich das ganze etwas allgemeiner halten,
procedure TForm1.BuildCurrentResult(CurrentTyp: integer);
var Rest: integer; Item: TMattenResultItem; begin FCurrent.SortBySubtyp; // Vorsortierung FCurrentResult.Clear; while FCurrent.Count > 0 do begin Rest:= 1; // Ganze Matte Platz am Anfang Item:= ClearMattenResultItem; Item.Typ:= CurrentTyp; Item.GVerschnitt:= FCurrent.First.GG; while Rest <> 0 do // kommt in eine Matte begin SetCurrentItem(Rest); // Größte Position auf Index Null tauschen if GetRest(Rest, FCurrent.First.Subtyp) then // ********** begin Inc(Item.SubtypCount); Item.Subtyp[Item.SubtypCount-1]:= FCurrent.First.Subtyp; Item.Pos[Item.SubtypCount-1]:= FCurrent.First.Pos; Item.GVerschnitt:= Item.GVerschnitt-FCurrent.First.G; FCurrent.DelFirst; if FCurrent.Count = 0 then Rest:= 0; // Break, alle Positionen abgearbeitet end else Rest:= 0; // Break, diese Postion dann in eine neue Matte end; FCurrentResult.AddItem(Item); end; end; sozusagen für alle möglichen Abmessungen, also eine statt einer
Delphi-Quellcode:
sowas:
function GetRest(Rest, FCurrent.First.Subtyp)
Delphi-Quellcode:
GetRest(Rest, FCurrent.First.Width, FCurrent.First.Height).
|
AW: Zuschnittsproblem
Also mein Code war etwas umfangreicher. Die einzelnen Hölzer wurden erst nach Länge (lang->kurz) sortiert und dann nacheinander probiert, ob sie in die Stange rein passt. Das ergab gute Ergebnisse.
Ich glaube aber, dass die 2.Dimension mehr Aufwand erfordert. .. eben noch mal bei MB geguckt. Dort gibt es aber bei dem Einpassen auch eine Vereinfachung. Die sortieren vor und fangen mit der größten an. Die legen auch erst die längste Matte drauf. Seitlich daneben legen sie immer eine, die gleich lang oder kürzer ist. Hier ein ![]() |
AW: Zuschnittsproblem
Zitat:
|
AW: Zuschnittsproblem
Ich habe das mal in meiner
![]() Vielleicht findest Du da ja noch eine Anregung... |
AW: Zuschnittsproblem
Zitat:
danke für deinen Link. Auch damit wird’s eigentlich zum Kinderspiel: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz