Redeproblemet er et NP-komplet optimeringsproblem , der i det væsentlige kan reduceres til et rygsækproblem . Problemet er et heltals lineært programmeringsproblem . Problemet opstår i mange områder af industrien. Forestil dig, at du arbejder i en papirmasse- og papirfabrik, og du har et antal papirruller med fast bredde, men forskellige kunder har brug for forskelligt antal ruller af forskellig bredde. Hvordan skærer man papir for at minimere spild?
Ifølge Confederation of European Paper Manufacturers [1] genererede 1.331 papirmaskiner i regionen i 2012 et gennemsnitligt spild på 56 millioner euro (ca. 73 millioner amerikanske dollars) hver. En besparelse på selv 1 % vil være meget betydelig.
Standardformuleringen af indlejringsproblemet (men ikke den eneste) forudsætter en liste med m ordrer, hver ordre kræver stykker. Vi danner alle mulige nesting-kombinationer ("klippekort") og forbinder med hvert kort en positiv heltalsvariabel , der angiver, hvor mange gange kortet blev brugt. Lad os skrive det lineære programmeringsproblem ned:
, heltalhvor - hvor mange gange ordren vises på kortet og - prisen (ofte tabt) på kortet . Den præcise karakter af begrænsningerne kan føre til lidt forskellige matematiske karakteristika. De angivne grænser er minimumsgrænser ( mindst en given mængde skal produceres, men det er ikke udelukket, at der vil blive produceret mere). Hvis , er det nødvendigt at minimere antallet af afskårne stykker af kildematerialet. Hvis begrænsningerne fra uligheder erstattes af ligheder, kaldes problemet containerisering . I en mere generel formulering er begrænsningerne tosidede (og i dette tilfælde kan tabsminimeringsløsningen afvige fra løsningen med det mindste antal kildematerialestykker):
Denne problemformulering gælder ikke kun for det endimensionelle tilfælde. Mange variationer er mulige, for eksempel er målet ikke at minimere spild, men at maksimere det samlede antal producerede varer.
Generelt vokser antallet af mulige kort eksponentielt med m , antallet af ordrer. Efterhånden som antallet af ordrer stiger, er det muligvis ikke praktisk at angive mulige redemønstre.
Alternativt kan postgenerering bruges . Denne metode løser indlejringsproblemet ved at starte med et par kort. Metoden genererer nye kort, hvis det er nødvendigt, under løsningsprocessen. I det endimensionelle tilfælde dukker der nye kort op, når man løser et yderligere optimeringsproblem, rygsækproblemet , som bruger information om de dobbelte variable i et lineært programmeringsproblem . Rygsækproblemet har velkendte metoder til at løse det, såsom branch and bound-metoden og dynamisk programmering . Generering af doven kolonner kan være meget mere effektiv end den oprindelige tilgang, især når opgavens størrelse vokser. Forsinket kolonnegenerering som anvendt på redeproblemet blev første gang brugt af Gilmour og Gomory i en række artikler udgivet i 1960'erne [2] [3] . De viste, at denne tilgang med garanti vil føre til en (fraktionel) optimal løsning uden at skulle opregne alle mulige kort på forhånd.
Gilmour og Gomorys oprindelige metode var ikke heltal, så løsningen kunne indeholde fraktionerede komponenter, for eksempel skulle et bestemt kort bruges 3,67 gange. Afrunding til nærmeste heltal virker ofte ikke i den forstand, at det resulterer i en suboptimal løsning og underproduktion eller overproduktion for nogle ordrer (og mulig overtrædelse af begrænsninger, hvis de er tosidede). Denne mangel overvindes i nye algoritmer, der gør det muligt at finde optimale løsninger (i betydningen at finde en løsning med minimalt spild) af meget store problemer (generelt større end nødvendigt i praksis [4] [5] ).
Redeproblemet er ofte ekstremt degenereret, da et stort antal løsninger er mulige med samme mængde tab. Denne degeneration opstår fra evnen til at omarrangere dele, skabe nye redemønstre, men ikke ændre de resulterende tab. Dette giver en hel samling af relaterede opgaver, der opfylder de samme begrænsninger, såsom:
Papirmaskinen kan producere et ubegrænset antal ruller (emner), hver 5600 mm bred. Du skal have følgende 13 sidste ruller:
Bredde | Ruller |
---|---|
1380 | 22 |
1520 | 25 |
1560 | 12 |
1710 | fjorten |
1820 | atten |
1880 | atten |
1930 | tyve |
2000 | ti |
2050 | 12 |
2100 | fjorten |
2140 | 16 |
2150 | atten |
2200 | tyve |
Der er 308 mulige redemønstre til denne lille opgave. Den optimale løsning kræver 73 originale ruller og har 0,401 % spild. Det kan påvises, at minimumsantallet af reder for denne mængde affald er 10. Det kan også beregnes, at der findes 19 så forskellige løsninger, hver med 10 reder og 0,401 % affald. En sådan løsning er vist nedenfor og i figuren:
Antal kort | nedskæringer |
---|---|
2 | 1820 + 1820 + 1820 |
3 | 1380 + 2150 + 1930 |
12 | 1380 + 2150 + 2050 |
7 | 1380 + 2100 + 2100 |
12 | 2200 + 1820 + 1560 |
otte | 2200 + 1520 + 1880 |
en | 1520 + 1930 + 2150 |
16 | 1520 + 1930 + 2140 |
ti | 1710 + 2000 + 1880 |
2 | 1710 + 1710 + 2150 |
73 |
Redeopgaver kan klassificeres på forskellige måder [9] . En måde er indlejringsdimensioner: Ovenstående eksempel illustrerer endimensionel indlejring (1D). Andre industrielle anvendelser til 1D-nesting er at skære rør, kabler og stålstænger. Todimensionelle problemer bruges i produktionen af møbler, tøj og glas. Der er ikke mange 3D-nesting-applikationer, men relaterede 3D - pakningsproblemer har mange industrielle applikationer , især distribution af genstande i forsendelsescontainere ( se f.eks. Keplers hypotese .
En industriel anvendelse af redeproblemet til masseproduktionsanlæg opstår, når basismaterialet fremstilles i store ruller og derefter skæres i mindre stykker (se opskæring ). Dette sker for eksempel ved fremstilling af papir- og polymerfilm samt ved fremstilling af flade metalplader (jern eller bronze). Der er mange variationer og yderligere begrænsninger på grund af fremstillings- eller procesbegrænsninger, kundekrav og kvalitetsproblemer. Nogle eksempler:
Indlejringssoftware til papirindustrien er leveret af ABB Group , Greycon , Honeywell og Tieto .
Indlejringsalgoritmen for stålindustrien blev formuleret af Robert Gongorra i 1998, og SONS (Steel Optimization Nesting Software) udviklede software til at forbedre stålpladeudnyttelsen og reducere spild.
Opgaven med guillotineskæring er opgaven med at skære glasplader i rektangler af specifikke dimensioner, ved kun at bruge snit, der løber langs hele arkets længde (eller bredde).
Det relaterede problem med at bestemme (for det endimensionelle tilfælde) den bedste størrelse af den originale rulle, der opfylder kravene; kendt som sortimentsproblemet [10] .
Skæreproblemet blev først formuleret af Kantorovich i 1939 [11] . I 1951, selv før computere blev bredt tilgængelige, foreslog L. V. Kantorovich og V. A. Zalgaller [12] en metode til at løse problemet med økonomisk brug af materiale under skæring ved hjælp af lineær programmering. Den foreslåede teknik blev senere kaldt Column Generation Method .
Navn | Licens | Kort beskrivelse |
---|---|---|
VP Solver | GPL | Gratis software "Vector Packing Solver" ( VPSolver ), der kan bruges til at optimere 1D-nesting. Løsningsmetoden er baseret på formuleringen af flowet i grafen. |