AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zuschnittsproblem

Ein Thema von Bjoerk · begonnen am 16. Dez 2011 · letzter Beitrag vom 17. Dez 2011
 
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Zuschnittsproblem

  Alt 16. Dez 2011, 19:57
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

Das ist ein Beispiel
Hallo Jens, ich hab' so ein Programm auch bereits, das teilt allerdings die Mattenpositionen in
gewisse Typen ein und errechnet so den verbleiben Rest.

Delphi-Quellcode:
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;
Nun wollte ich das ganze etwas allgemeiner halten,
sozusagen für alle möglichen Abmessungen,

also eine statt einer
function GetRest(Rest, FCurrent.First.Subtyp) sowas:

GetRest(Rest, FCurrent.First.Width, FCurrent.First.Height).
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 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-2025 by Thomas Breitkreuz