Heltalsprogrammering

Ett heltalsprogrammeringsproblem är ett matematiskt optimerings- eller tillfredsställelseproblem där några eller alla variablerna måste vara heltal [1] . Ofta hänvisar termen till heltalslinjär programmering (ILP), där objektivfunktionen och begränsningarna (förutom heltalskravet) är linjära .

Heltalsprogrammering är ett NP-hårt problem . Ett specialfall, 0-1 heltals linjär programmering, där variabler tar värdena 0 eller 1, är ett av Karps 21 NP-kompletta problem .

Kanoniska och standardtyper av CLP

Problemet med heltalslinjär programmering i kanonisk form uttrycks som [2]

maximera
under förhållanden
och ,

och i standardform

maximera
under förhållanden
och

där är vektorer och är en matris, vars alla element är heltal. Observera att, som i fallet med linjär programmering, kan ett ILP-problem som inte är i standardform reduceras till standardform genom att eliminera ojämlikheter genom att införa ytterligare och artificiella variabler och ersätta variabler som inte är föremål för icke-negativitetsbegränsningen med två variabler.

Exempel

Bilden till höger visar följande uppgift.

De giltiga heltalspunkterna visas i rött och de röda streckade linjerna visar det konvexa skrovet för dessa punkter, vilket är den minsta polygonen som innehåller alla dessa punkter. De blå linjerna, tillsammans med koordinataxlarna, definierar den linjära dämpningspolygonen, som ges av olikheter utan heltalskrav. Optimeringsmålet är att flytta den svarta streckade linjen så att den är så hög som möjligt, men rör vid polygonen. De optimala lösningarna på heltalsproblemet är punkterna och , där objektivfunktionen tar värdet 2. Den enda lösningen på det försvagade (linjära) problemet är punkten , där objektivfunktionen tar värdet 2,8. Observera att om vi avrundar lösningen av ett linjärt programmeringsproblem till närmaste heltal, kommer lösningen att vara ogiltig för ILP.

Bevis på NP-hårdhet

Följande argument är en reduktion av problemet med minimering av vertextäckning till ett heltalsprogrammeringsproblem, vilket bevisar NP-hårdhet.

Låt vara en oriktad graf. Vi definierar ett linjärt programmeringsproblem enligt följande:

Med tanke på kravet att de tar värdena 0 eller 1, är varje möjlig lösning för heltalsprogrammering en delmängd av hörn. Den första begränsningen innebär att minst en ände av varje kant ingår i delmängden. Således ger lösningen en vertextäckning. Dessutom, givet ett vertextäcke C, kan vi tilldela värdet 1 för någon och 0 för någon , vilket ger oss en giltig lösning på heltalsprogrammeringsproblemet. Av detta kan vi dra slutsatsen att när vi minimerar summan får vi också det minsta vertextäcket [3] .

Alternativ

I Mixed Integer Linear Programming (MILP) behöver bara några av variablerna vara heltal, medan resten av variablerna kan vara icke-heltal.

I boolesk programmering måste variabler anta värdena 0 eller 1. Observera att alla gränsade heltalsvariabler kan uttryckas som en kombination av booleska variabler [4] . Till exempel, om det finns en heltalsvariabel kan den uttryckas i termer av booleska variabler:

Applikationer

Det finns två huvudskäl till att använda heltalsvariabler vid modellering av linjära programmeringsproblem:

  1. Heltalsvariabler representerar kvantiteter som bara kan vara heltal. Det går till exempel inte att bygga 3,7 bilar.
  2. Heltalsvariabler representerar beslut som tar värdena 0 eller 1.

Dessa konventioner är vanliga i praktiken, och därför kan heltalslinjär programmering användas inom många områden, av vilka några diskuteras kort nedan.

Produktionsplanering

Blandad heltalsprogrammering har många tillämpningar inom tillverkning, inklusive schemaläggningssimuleringar. Ett exempel förekommer i produktionsplanering inom jordbruket för att bestämma produktionen av produkter som kan ha gemensamma resurser (som mark, arbetskraft, kostnader, utsäde, gödningsmedel, etc.). Ett möjligt optimeringsmål kan vara att maximera intäkterna utan att gå över gränserna för tillgängliga resurser. I vissa fall kan problemet uttryckas som ett linjärt programmeringsproblem, men variablerna måste vara heltal.

Planering

I dessa uppgifter är det nödvändigt att säkerställa underhållet och tidsplanen för transportnätet. Uppdraget kan till exempel vara att ordna bussar eller tåg längs sträckor för att följa tidtabellen, samt tillhandahålla förare till den rullande materielen. Här avgör booleska variabler (dvs med värdet 0 eller 1) om en buss eller tåg är tilldelad en rutt, och om en förare tilldelas en viss buss/tåg.

Datanätverk

Syftet med denna uppgift är att bygga ett datanätverk för att tillhandahålla fördefinierade krav på minimikostnaden [5] . Denna uppgift kräver optimering av både nätverkstopologin och bandbredden för nätverkselementen. I många fall uttrycks genomströmningen i diskreta kvantiteter, vilket resulterar i heltalsvariabler. Vanligtvis gäller andra teknikspecifika begränsningar, som kan modelleras som heltalsvariabler eller booleska variabler.

Mobilnätverk

Uppgiften med frekvensplanering i GSM -mobilnät kräver fördelning av tillåtna frekvenser mellan antenner för att säkerställa kommunikation och minimera interferens mellan antenner [6] . Detta problem kan formuleras som ett linjärt programmeringsproblem där booleska variabler reflekterar om en viss frekvens är tilldelad en viss antenn.

Algoritmer

Det naiva sättet att lösa ILP-problemet är att helt enkelt ignorera heltalsbegränsningen på variablerna x , lösa motsvarande LP-problem (vilket kallas linjär relaxation av ILP-problemrestriktionerna) och sedan avrunda lösningskomponenterna i det resulterande problemet. Den resulterande lösningen kanske inte bara är icke-optimal, den kan till och med vara oacceptabel, det vill säga vissa begränsningar kan överträdas.

Använder full unimodularitet

Även om, i det allmänna fallet, integriteten för lösningen av det försvagade problemet inte garanteras, om ILP har formen under villkoren , där och har heltal som element och är helt unimodulär , så kommer varje grundläggande genomförbar lösning att vara heltal. Därför kommer lösningen som ges av simplexmetoden säkerligen att vara heltal [7] . För att visa att varje grundläggande lösning av ett sådant problem är heltal, låt vara en godtycklig tillåten lösning. Eftersom det är tillåtet vet vi att . Låt vara de element som motsvarar de grundläggande kolumnerna i den grundläggande lösningen . Enligt definitionen av en bas finns det någon kvadratisk submatris av en matris med linjärt oberoende kolumner så att .

Eftersom kolumnerna är linjärt oberoende och matrisen är kvadratisk, är matrisen icke-singular, och därför, under antagandet att den är unimodulär , . Eftersom den inte är singular är matrisen inverterbar och därför . Per definition ,. Här betyder unionsmatrisen för och den är heltal eftersom den är heltal. På det här sättet,

heltal heltal Alla grundläggande tillåtna lösningar är heltal.

Således, om ILP-matrisen är helt unimodulär, istället för att lösa ILP-problemet, kan man använda en linjär avslappning av problemet, vilket ger en heltalslösning.

Exakta algoritmer

Om matrisen inte är helt unimodulär finns det ett antal algoritmer som löser heltalslinjärprogrammeringsproblemet exakt. En av klasserna av sådana algoritmer är skärplansmetoder (Gomori-metoder), som fungerar genom att lösa ett försvagat linjärt problem med efterföljande tillägg av linjära begränsningar som skär av den icke-heltalslösningen av problemet utan att skära av de heltalslösningar som är möjliga.

En annan klass av algoritmer är varianter av branch and bound- metoden . Till exempel gren-och-klipp-metoden , som kombinerar gren-och-bund-metoden med skärplansmetoder. Förgrenings- och bundna metoder har ett antal fördelar jämfört med algoritmer som endast använder klippplan. En av fördelarna är att algoritmen kan avslutas tidigt, så snart minst en giltig heltalslösning hittats, dock inte optimal. Dessutom kan lösa ett avslappnat linjärt problem användas för att uppskatta hur långt borta från det optimala. Slutligen kan gren- och bundna metoder användas för att få flera optimala lösningar.

Lenstra 1983 visade [8] att i fallet med ett fast antal variabler kan en genomförbar lösning på ett heltalsprogrammeringsproblem hittas i polynomtid.

Heuristiska metoder

Eftersom heltalslinjära programmeringsproblem är NP-hårda är många problem svåra att lösa, så heuristiska metoder tillämpas. Till exempel kan en tabusökning [9] användas . För att använda tabusökning för att lösa ILP-problemet kan ett algoritmsteg definieras som att öka eller minska en heltalsvariabel samtidigt som de andra heltalsvariablerna lämnas oförändrade. Sedan hittas en lösning för variabler som heltalsbegränsningen inte är pålagd. Korttidsminnet kan användas för att lagra tidigare försök, medan långtidsminnet kan bestå av värden av heltalsvariabler för vilka större objektiva funktionsvärden erhålls (förutsatt ett maximeringsproblem). Slutligen kan långtidsminne användas för att slå upp heltalsvärden som ännu inte har testats.

Andra heuristik som kan användas för att lösa ILP

Det finns också några andra uppgiftsspecifika heuristiker, som k-opt-heuristiken för resandeförsäljarproblemet. Observera att nackdelen med heuristiska metoder är att om det inte går att hitta en lösning avgör metoden inte om detta hände på grund av avsaknaden av en giltig lösning, eller för att algoritmen inte kunde hitta den. Vidare är det vanligtvis omöjligt att avgöra hur nära den optimala lösningen som erhålls med denna metod.

Anteckningar

  1. Karmanov, 1986 , sid. 11-12.
  2. Papadimitriou, Steiglitz, 1998 .
  3. Erickson .
  4. Williams, HP Logik och heltalsprogrammering  (obestämd) . - 2009. - V. 130. - (International Series in Operations Research & Management Science). - ISBN 978-0-387-92280-5 .
  5. Borndörfer, R.; Grötschel, M. Designa telekommunikationsnätverk genom heltalsprogrammering (2012).
  6. Sharma, Deepak Frequency Planning (2010).
  7. Så till exempel kan transportproblemet betraktas som ett linjärt programmeringsproblem och metoden för potentialer för att lösa detta problem är i själva verket en simplexmetod. Simplexmetodens grundläggande lösning motsvarar trädet i potentialmetoden, och motsvarande matris har alltid en determinant på 1. Således, med heltals initiala data, lösningen av transportproblemet med simplexmetoden (eller potentialmetoden, vilket är likvärdigt) kommer alltid att få en heltalslösning.
  8. Lenstra, 1983 .
  9. Glover, 1989 , sid. 4–32.

Litteratur

Läsning för vidare läsning

Länkar