Häckningsproblemet är ett NP-komplett optimeringsproblem , som i huvudsak kan reduceras till ett ryggsäcksproblem . Problemet är ett heltalslinjärt programmeringsproblem . Problemet uppstår inom många branscher. Föreställ dig att du arbetar i ett massa- och pappersbruk och du har ett antal pappersrullar med fast bredd, men olika kunder behöver olika många rullar av olika bredd. Hur skär man papper för att minimera avfallet?
Enligt Confederation of European Paper Manufacturers [1] genererade 1 331 pappersmaskiner i regionen 2012 ett genomsnittligt avfall på 56 miljoner euro (cirka 73 miljoner US-dollar) vardera. Att spara till och med 1% kommer att vara mycket betydande.
Standardformuleringen av kapslingsproblemet (men inte det enda) förutsätter en lista med m beställningar, varje beställning kräver bitar. Vi bildar alla möjliga kapslingskombinationer (”klippkartor”) och associerar till varje karta en positiv heltalsvariabel , som anger hur många gånger kartan användes. Låt oss skriva ner det linjära programmeringsproblemet:
, heltalvar - hur många gånger beställningen förekommer på kortet och - priset (ofta förlorat) på kortet . Den exakta karaktären av begränsningarna kan leda till något annorlunda matematiska egenskaper. De angivna gränserna är minimigränser ( minst en given mängd måste produceras, men det är inte uteslutet att mer kommer att produceras). Om , det krävs för att minimera antalet skurna bitar av källmaterialet. Om begränsningarna från ojämlikheter ersätts av jämlikheter, kallas problemet containerizing . I en mer allmän formulering är begränsningarna tvåsidiga (och i det här fallet kan lösningen för förlustminimering skilja sig från lösningen med det minsta antalet källmaterialdelar):
Denna formulering av problemet är inte bara tillämplig på det endimensionella fallet. Många variationer är möjliga, till exempel är målet inte att minimera avfallet, utan att maximera det totala antalet producerade varor.
I allmänhet växer antalet möjliga kort exponentiellt med m , antalet order. När antalet beställningar ökar kan det inte vara praktiskt att lista möjliga häckningsmönster.
Alternativt kan postgenerering användas . Denna metod löser kapslingsproblemet genom att börja med några kort. Metoden genererar nya kartor vid behov under lösningsprocessen. I det endimensionella fallet dyker nya kartor upp när man löser ett ytterligare optimeringsproblem, ryggsäcksproblemet , som använder information om de dubbla variablerna i ett linjärt programmeringsproblem . Ryggsäcksproblemet har välkända metoder för att lösa det, som gren- och bindningsmetoden och dynamisk programmering . Generering av lata kolumner kan vara mycket effektivare än det ursprungliga tillvägagångssättet, särskilt när uppgiften blir större. Fördröjd kolumngenerering som tillämpats på häckningsproblemet användes först av Gilmour och Gomory i en serie artiklar publicerade på 1960-talet [2] [3] . De visade att detta tillvägagångssätt garanterat leder till en (fraktionell) optimal lösning utan att behöva räkna upp alla möjliga kartor i förväg.
Gilmour och Gomorys ursprungliga metod var inte heltal, så lösningen kunde innehålla bråkdelar, till exempel måste en viss karta användas 3,67 gånger. Avrundning till närmaste heltal fungerar ofta inte, i den meningen att det resulterar i en suboptimal lösning och underproduktion eller överproduktion för vissa beställningar (och eventuellt överträdelse av begränsningar om tvåsidigt). Denna brist övervinns i nya algoritmer som gör det möjligt att hitta optimala lösningar (i betydelsen att hitta en lösning med minimalt slöseri) av mycket stora problem (i allmänhet större än vad som behövs i praktiken [4] [5] ).
Häckningsproblemet är ofta extremt degenererat, eftersom ett stort antal lösningar är möjliga med samma mängd förluster. Denna degeneration uppstår från förmågan att ordna om delar, skapa nya häckningsmönster, men inte förändra de resulterande förlusterna. Detta ger en hel samling relaterade uppgifter som uppfyller samma begränsningar, såsom:
Pappersmaskinen kan producera ett obegränsat antal rullar (ämnen), var och en 5600 mm bred. Du måste få följande 13 slutrullar:
Bredd | Rullar |
---|---|
1380 | 22 |
1520 | 25 |
1560 | 12 |
1710 | fjorton |
1820 | arton |
1880 | arton |
1930 | tjugo |
2000 | tio |
2050 | 12 |
2100 | fjorton |
2140 | 16 |
2150 | arton |
2200 | tjugo |
Det finns 308 möjliga häckningsmönster för denna lilla uppgift. Den optimala lösningen kräver 73 originalrullar och har 0,401 % spill. Det kan visas att minsta antal bon för denna mängd avfall är 10. Man kan också räkna ut att det finns 19 så olika lösningar, var och en med 10 bon och 0,401 % avfall. En sådan lösning visas nedan och i figuren:
Antal kort | skärsår |
---|---|
2 | 1820 + 1820 + 1820 |
3 | 1380 + 2150 + 1930 |
12 | 1380 + 2150 + 2050 |
7 | 1380 + 2100 + 2100 |
12 | 2200 + 1820 + 1560 |
åtta | 2200 + 1520 + 1880 |
ett | 1520 + 1930 + 2150 |
16 | 1520 + 1930 + 2140 |
tio | 1710 + 2000 + 1880 |
2 | 1710 + 1710 + 2150 |
73 |
Häckningsuppgifter kan klassificeras på olika sätt [9] . Ett sätt är kapslingsdimensioner: exemplet ovan illustrerar endimensionell kapsling (1D). Andra industriella användningsområden för 1D-kapning är att skära rör, kablar och stålstänger. Tvådimensionella problem används vid tillverkning av möbler, kläder och glas. Det finns inte många 3D-kapslingstillämpningar, men relaterade 3D- packningsproblem har många industriella tillämpningar, särskilt distributionen av föremål i fraktcontainrar ( se t.ex. Keplers hypotes .
En industriell tillämpning av häckningsproblemet för massproduktionsanläggningar uppstår när basmaterialet produceras i stora rullar och sedan skärs i mindre bitar (se skärning ). Detta sker till exempel vid tillverkning av papper och polymerfilmer, såväl som vid tillverkning av platta metallplåtar (järn eller brons). Det finns många variationer och ytterligare begränsningar på grund av tillverknings- eller processbegränsningar, kundkrav och kvalitetsproblem. Några exempel:
Kapslingsprogramvara för pappersindustrin levereras av ABB Group , Greycon , Honeywell och Tieto .
Kapslingsalgoritmen för stålindustrin formulerades av Robert Gongorra 1998 och SONS (Steel Optimization Nesting Software) utvecklade mjukvara för att förbättra användningen av stålplåt och minska avfallet.
Uppgiften med giljotinskärning är uppgiften att skära glasskivor till rektanglar med specifika dimensioner, med endast snitt som löper längs hela längden (eller bredden) av skivan.
Det relaterade problemet med att bestämma (för det endimensionella fallet) den bästa storleken på originalrullen som uppfyller kraven; känt som sortimentsproblemet [10] .
Skärproblemet formulerades först av Kantorovich 1939 [11] . 1951, även innan datorer blev allmänt tillgängliga, föreslog L. V. Kantorovich och V. A. Zalgaller [12] en metod för att lösa problemet med ekonomisk användning av material under skärning med linjär programmering. Den föreslagna tekniken kallades senare Column Generation Method .
namn | Licens | kort beskrivning |
---|---|---|
VP Solver | GPL | Gratis programvara "Vector Packing Solver" ( VPSolver ) som kan användas för att optimera 1D-kapsling. Lösningsmetoden bygger på formuleringen av flödet i grafen. |