5 Blandad heltals linjär programmering
5 Blandad heltals linjär programmering
5 Blandad heltals linjär programmering
Transform your PDFs into Flipbooks and boost your revenue!
Leverage SEO-optimized Flipbooks, powerful backlinks, and multimedia content to professionally showcase your products and significantly increase your reach.
5 <strong>Blandad</strong> <strong>heltals</strong> <strong>linjär</strong> <strong>programmering</strong><br />
I många fall räcker det med reella variabler för att beskriva verkliga tekniska<br />
problem. Det är t.ex. möjligt att välja en 2.8 mm tjock plåt för en reaktor med<br />
volymen 4.5 m 3 . Ofta existerar det dock variabler som inte har någon verklig<br />
fysikalisk betydelse om de beskrivs med reella variabler. Ett beslut att använda<br />
1.8 personer för att installera 1.3 pumpar är svårt att realisera i praktiken.<br />
Därmed har vi ett behov av att kunna använda variabler som begränsas till att<br />
endast anta <strong>heltals</strong>värden.<br />
Ett <strong>linjär</strong>t problem där några av variablerna begränsats till <strong>heltals</strong>variabler kan<br />
skrivas i matrisform,<br />
T T<br />
min z = c1<br />
x + c2<br />
y<br />
s.<br />
t<br />
Ax + By ≤ d<br />
x ≥ 0<br />
+<br />
y ∈ Z<br />
där reella variabler betecknats med x och <strong>heltals</strong>variabler med y. Problemet<br />
som uppstår är då ett blandat <strong>heltals</strong> <strong>linjär</strong>t <strong>programmering</strong>s problem (Mixed<br />
Integer Linear Programming, MILP). Heltalsvariabler är speciellt nyttiga då<br />
man skall göra antingen-eller beslut. Exempel på sådana beslut är om en viss<br />
apparat skall anskaffas för att göra en viss produkt. Besluten beskrivs då med<br />
binära variabler som är <strong>heltals</strong>variabler begränsade till antingen 1 eller 0 där en<br />
etta indikerar beslutet att skaffa apparaten medan noll anger att anskaffningen<br />
inte bör göras.<br />
5.1 Avrundning<br />
Ett uppenbart sätt att erhålla <strong>heltals</strong>variabler är att avrunda <strong>heltals</strong>variablerna<br />
efter att en LP lösning erhållits. Vi kan betrakta följande exempel av Danø,<br />
1974.<br />
max f = 3y1<br />
+ 2y2<br />
s.<br />
t.<br />
2y1<br />
+ 3y2<br />
≤ 14<br />
2y1<br />
+ y2<br />
≤ 9<br />
+<br />
y1,<br />
y2<br />
∈ Z<br />
Om problemet löses som ett LP problem, med t.ex. simplex metoden, erhålles<br />
lösningen f=14.75 för y1=3.25 och y2=2.50. Genom avrundning kan följande<br />
fyra kombinationer undersökas,
Optimering<br />
2<br />
y1 3 3 4 4<br />
y2 2 3 2 3<br />
Av dessa alternativ är det endast lösningen y1=3 och y2=2 som uppfyller<br />
begränsningarna. Om vi betraktar problemet grafiskt ser vi att den optimala<br />
lösningen är f=14 för y1=4 och y2=1 vilket är en lösning som inte kan uppnås<br />
genom avrundning.<br />
y 2<br />
5<br />
4<br />
3<br />
2<br />
1<br />
1 2 3 4 5 y1 f=10<br />
I praktiken är <strong>heltals</strong>värden främst av intresse för små <strong>heltals</strong>värden t.ex. för<br />
antingen-eller studier där variablerna begränsas till 0 eller 1. Heltalsvärden som<br />
antar stora värden kan ofta approximeras som kontinuerliga variabler. Om<br />
optimeringen inte resulterar i <strong>heltals</strong>värden försämrar inte avrunding upp eller<br />
ner resultatet avsevärt, t.ex. antalet tändstickor i en tändsticksask. Ofta gör man<br />
fel med större inverkan på resultatet redan i de approximationer man gör i<br />
modelleringsskedet.<br />
5.2 Skärande plan<br />
Ett sätt att lösa MILP problem är att minska det möjliga området, genom att<br />
introducera skärande plan. Efter att lämpliga skärande plan har adderats kan<br />
lösningen erhållas som en hörnpunkt till det <strong>linjär</strong>a problemet. För Danøs<br />
exempel kan följande bivillkor adderas till problemet<br />
y + y ≤ 5<br />
y<br />
1<br />
1<br />
≤ 4<br />
y2<br />
≤ 4<br />
Om vi nu betraktar det möjliga området ser vi att alla hörnpunkter är<br />
<strong>heltals</strong>lösningar och därmed kan problemet lösas med en LP metod och vi<br />
erhåller en lösning som är en giltig <strong>heltals</strong>lösning.<br />
2
y 2<br />
5<br />
4<br />
3<br />
2<br />
1<br />
y 2≤4<br />
y 1≤4<br />
y 1+y 2≤5<br />
1 2 3 4 5 y1 Optimering<br />
Det kan även noteras att samma resultat kan uppnås genom addition av ett enda<br />
nytt skärande plan, y1+y2≤5. Frågan är då hur vi skall kunna få det minsta<br />
antalet skärande plan som resulterar i en giltig optimal lösning.<br />
Gomory föreslog 1958 en skärande plan algoritm (cutting plane) som<br />
sekventiellt adderar begränsningar tills en optimal <strong>heltals</strong>lösning hittas.<br />
Metoden som han föreslog kunde inte leva upp till de höga förväntningar man<br />
hade ställt då metoden presenterades. Andra effektivare och mera komplicerade<br />
metoder har presenterats av t.ex. Glover 1975 och Jeroslow 1990.<br />
5.3 Branch and Bound<br />
Branch and Bound (BB) är en effektiv metod för lösning av MILP problem.<br />
Metoden föreslogs av Land och Doig 1960. Den var besvärlig att implementera<br />
på dator då den kräver orimligt stort minnesutrymme. Dakin modifierade 1965<br />
algoritmen så att den blev mera lämplig för datoranvändning. Funktionsprincipen<br />
var dock den samma. BB baserar sig på tanken att om ett besvärligt<br />
problem delas upp i mindre delar blir de nya mindre problemen lättare att lösa.<br />
(Parallell: Brittiska imperiets - söndra och härska politik). BB algoritmen löser<br />
en sekvens av relaxerade problem – för MILP fallet är det relaxerade problemet<br />
ett LP problem. BB kan även användas vid lösning av MINLP problem.<br />
BB startar med att lösa det <strong>heltals</strong> relaxerade problemet. (alla variabler<br />
betraktas som reella variabler). Om denna lösnings <strong>heltals</strong>variabler antar<br />
<strong>heltals</strong>värden, är detta lösningen till problemet. Om inte, är åtminstone en<br />
<strong>heltals</strong>variabel t.ex. yi reell med värdet bj. Enligt Dakins metod delas bj upp i en<br />
<strong>heltals</strong>del och en bråkdel enligt,<br />
b j = N j + f j<br />
där Nj är ett heltal och 0
Optimering<br />
Man kan nu skapa två nya villkor<br />
y j ≤ N j<br />
y j ≥ N j + 1<br />
Det är klart att ingetdera villkoret uppfylls med den funna lösningen. Genom<br />
att addera dem turvis till det kontinuerliga problemet och lösa de bildade<br />
problemen fås två nya lösningar (branching). Proceduren upprepas sedan för<br />
de nya lösningarna tills alla <strong>heltals</strong>variabler antar <strong>heltals</strong>värden.<br />
5.3.1 Exempel<br />
Ett företag, IKEA, tillverkar bord och stolar. För tillverkning av ett bord<br />
behövs en timmes arbetsinsats och 9 m² virke. På samma vis krävs för en stol 1<br />
timme och 5 m² virke. För tillfället har vi 6 timmar och 45 m 2 virke till vårt<br />
förfogande. Vinsten för ett bord är 8 € och för en stol 5 €. Maximera vinsten.<br />
Vi betecknar y1=antalet bord och y2=antalet stolar och kan då formulera<br />
problemet.<br />
max f = 8y1<br />
+ 5y2<br />
s.<br />
t.<br />
4<br />
y1<br />
+ y2<br />
≤ 6<br />
9y1<br />
+ 5y2<br />
≤ 45<br />
y ≥ 0<br />
y∈<br />
Z<br />
Vi börjar med att lösa problemet som ett LP problem (vi antar att alla variabler<br />
är reella) och får lösningen, f=41.25 vid hörnpunkten y1=3.75 och y2=2.25.<br />
Problemet ses grafiskt i figuren nedan.<br />
y 2<br />
9<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
1 2 3 4<br />
f<br />
5<br />
6 y1
Optimering<br />
Lösningen f=41.25 är nu en övre gräns (eng. Upper bound) och vi vet att<br />
<strong>heltals</strong>lösningen inte kan vara bättre än denna. Bägge variablerna har reella<br />
värden och vi väljer nu den ena variabeln, t.ex. y1, och skapar två nya bivillkor<br />
y1<br />
≤ 3<br />
y1<br />
≥ 4<br />
Om vi adderar dessa turvis till det ursprungliga problemet två nya<br />
underproblem.<br />
och<br />
y 2<br />
9<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
max f = 8y1<br />
+ 5y2<br />
s.<br />
t.<br />
y1<br />
+ y2<br />
≤ 6<br />
9y1<br />
+ 5y2<br />
≤ 45<br />
y1<br />
≥ 4<br />
max f = 8y1<br />
+ 5y2<br />
s.<br />
t.<br />
y1<br />
+ y2<br />
≤ 6<br />
9y1<br />
+ 5y2<br />
≤ 45<br />
y1<br />
≤ 3<br />
LP-3<br />
LP-2<br />
1 2 3 4<br />
f<br />
5 6 y1 (LP-2)<br />
(LP-3)<br />
Det är uppenbart från figuren ovan att den ursprungliga lösningen y1=3.75 inte<br />
längre kan fås för någotdera underproblemet. Vi ser även att vi inte har uteslutit<br />
en enda möjlig <strong>heltals</strong>lösning. Dessutom har underproblemen inga<br />
gemensamma lösningar.<br />
5
Optimering<br />
Vi väljer det ena problemet, LP-2, och löser det och får vinsten f=41.00 vid<br />
y1=4.00 och y2=1.8. Sökningsproceduren kan nu illustreras med ett sökträd,<br />
6<br />
LP- 2<br />
f=41<br />
y =4<br />
y =1 .8<br />
1<br />
2<br />
y 1≥4<br />
LP- 1<br />
f=41.25<br />
y =3 .75<br />
y =2 .25<br />
1<br />
2<br />
y 1≤3<br />
LP- 3<br />
Lösningen till LP-2 är inte ännu en möjlig lösning då y2 inte är ett heltal. Vi<br />
adderar då åter två nya bivillkor till LP-2 problemet,<br />
y2<br />
≤ 1<br />
y2<br />
≥ 2<br />
och vi får två nya underproblem LP-4 och LP-5,<br />
och<br />
max f = 8y1<br />
+ 5y2<br />
s.<br />
t.<br />
y1<br />
+ y2<br />
≤ 6<br />
9y1<br />
+ 5y2<br />
≤ 45<br />
y1<br />
≥ 4<br />
y2<br />
≥ 2<br />
max f = 8y1<br />
+ 5y2<br />
s.<br />
t.<br />
y1<br />
+ y2<br />
≤ 6<br />
9y1<br />
+ 5y2<br />
≤ 45<br />
y1<br />
≥ 4<br />
y2<br />
≤ 1<br />
(LP-4)<br />
(LP-5)
y 2<br />
9<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
LP-5<br />
1 2 3 4 5<br />
6 y1 y=2<br />
2<br />
y=1<br />
2<br />
Optimering<br />
Då vi löser LP-4 finns ingen möjlig lösning och därmed finns det inte heller<br />
något sätt att följa denna gren vidare då man inte kan få ett omöjligt problem<br />
möjligt genom addition av nya bivillkor.<br />
y ´2≥2<br />
LP- 4<br />
No<br />
Solution<br />
LP- 2<br />
f=41<br />
y1=4<br />
y =1 .8<br />
2<br />
y 1≥4<br />
y 2≤1<br />
LP- 5<br />
LP- 1<br />
f=41.25<br />
y1=3<br />
.7 5<br />
y =2 .2 5<br />
2<br />
y 1≤3<br />
LP- 3<br />
Om vi löser underproblem LP-5 får vi f=40.56 då y1=4.44 och y2=1.0. Inte<br />
heller denna lösning är en <strong>heltals</strong>lösning och vi konstruerar igen två nya<br />
underproblem.<br />
7
Optimering<br />
och<br />
8<br />
y 2<br />
9<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
max f = 8y1<br />
+ 5y2<br />
s.<br />
t.<br />
y1<br />
+ y2<br />
≤ 6<br />
9y1<br />
+ 5y2<br />
≤ 45<br />
y1<br />
≥ 4<br />
y2<br />
≤ 1<br />
y1<br />
≥ 5<br />
max f = 8y1<br />
+ 5y2<br />
s.<br />
t.<br />
y1<br />
+ y2<br />
≤ 6<br />
9y1<br />
+ 5y2<br />
≤ 45<br />
y1<br />
≥ 4<br />
y2<br />
≤ 1<br />
y1<br />
≤ 4<br />
LP-7<br />
y=4<br />
1<br />
y=5<br />
1<br />
LP-6<br />
1 2 3 4 5<br />
6 y1 (LP-6)<br />
(LP-7)<br />
f<br />
Vid lösning av underproblem LP-7 får vi f=37.0 vid y1=4.0 och y2=1 och har<br />
därmed uppnått vår första <strong>heltals</strong>lösning. Vi har även fått en undre gräns för<br />
den slutliga lösningen som därmed kommer att finnas någonstans mellan 37<br />
och 41.25 som är det högsta möjliga värde vi kan tänka oss uppnå och var<br />
resultatet från LP-1. Sökträdet ser nu ut på följande sätt,
y ´2≥2<br />
LP- 4<br />
No<br />
Solution<br />
y ´1≥5<br />
y 1≥4<br />
LP- 2<br />
f=41<br />
y =4<br />
y =1 .8<br />
1<br />
2<br />
LP- 6<br />
y 2≤1<br />
LP- 5<br />
f=40.56<br />
y =4 .4 4<br />
y =1<br />
1<br />
2<br />
LP- 1<br />
f=41.25<br />
y =3 .7 5<br />
y =2 .2 5<br />
1<br />
2<br />
y 1≤4<br />
LP- 7<br />
f=37<br />
y =4<br />
y =1<br />
1<br />
2<br />
y 1≤3<br />
LP- 3<br />
Optimering<br />
Noderna som vi inte ännu beräknat är LP-6 och LP-3. LP-6 resulterar även i en<br />
<strong>heltals</strong>lösning f=40.0 vid y1=5.0 och y2=0.0 vilket är ett bättre resultat än den<br />
tidigare funna. Därmed har vi även fått en ny och bättre undre gräns och vi vet<br />
då att lösningen kommer att finnas mellan 40 och 41.25.<br />
LP-3 resulterar i f=39.0 för y1=3.0 och y2=3.0, vilket igen är en <strong>heltals</strong>lösning,<br />
men inte lika god som den undre gränsen vi erhöll vid LP-6. Därmed har vi<br />
undersökt alla underproblem (noder) i sökträdet och erhållit som resultat att<br />
IKEA borde bygga fem bord och inga stolar. Det slutliga sökträdet ses i<br />
följande figur.<br />
9
Optimering<br />
10<br />
y ´2≥2<br />
LP- 4<br />
No<br />
Solution<br />
y ´1≥5<br />
y 1≥4<br />
LP- 2<br />
f=41<br />
y =4<br />
y =1 .8<br />
1<br />
2<br />
LP- 6<br />
f=40<br />
y =5<br />
y =0<br />
1<br />
2<br />
y 2≤1<br />
LP- 5<br />
f=40.56<br />
y =4 .4 4<br />
y =1<br />
1<br />
2<br />
LP- 1<br />
f=41.25<br />
y =3 .7 5<br />
y =2 .2 5<br />
1<br />
2<br />
y 1≤4<br />
LP- 7<br />
f=37<br />
y =4<br />
y =1<br />
1<br />
2<br />
y 1≤3<br />
LP- 2<br />
f=39<br />
y =3<br />
y =3<br />
1<br />
Ovanstående problem är ett exempel på ett <strong>heltals</strong> <strong>linjär</strong>t <strong>programmering</strong>s<br />
problem (LIP) då endast <strong>heltals</strong>variabler ingår. Proceduren är likadan då endast<br />
en del av variablerna bör anta <strong>heltals</strong>värden (MILP). Nya noder skapas<br />
natuligtvis inte utgående från de reella variablerna. För ett enkelt exempel, som<br />
det presenterade, verkar metoden klart överdimensionerad, men för problem<br />
med ett stort antal <strong>heltals</strong> variabler är den en effektiv metod. En viktig<br />
egenskap som inte framkommit i exemplet ovan är att undersökningen av en<br />
gren kan avbrytas, förutom vid ickemöjliga lösningar och <strong>heltals</strong>lösningar,<br />
även då funktionsvärdet blir sämre än den undre gränsen. Då en nod ger ett<br />
funktionsvärde som är sämre än den bästa funna undre gränsen kan vi kapa av<br />
denna gren och konstatera att det inte finns en lösning längre ned med ett bättre<br />
funktionsvärde – funktionsvärdet kan aldrig bli bättre då nya begränsingar<br />
adderas till. På detta sätt kan antalet noder som bör undersökas ofta reduceras<br />
drastiskt.<br />
2
5.3.2 Sökstrategi<br />
Optimering<br />
Sökträdet är inte unikt för ett givet problem då man närsomhelst kan välja<br />
vilken <strong>heltals</strong>variabel yj som helst med ett reellt värde vid skapandet av nya<br />
underproblem. Olika val resulterar i olika sökträd och därmed varierar även<br />
lösningstiderna.<br />
Sökstrategierna delas in i två huvudgrupper, depth-first och breadth-first. I<br />
dept-first följs en gren ända tills en <strong>heltals</strong>lösning uppnåts medan i breadth-first<br />
sökning alla noder på samma nivå beräknas förrän man går över till nästa nivå.<br />
Ofta används depth-first strategin medan man på det sättet kan utnyttja simplex<br />
tabellen från tidigare underproblem som startpunkter vid sökning och på det<br />
viset undviker onödig minneslagring. En annan fördel med depth-first är att<br />
man noterat att många lösningar mest sannolikt står att finna längre ned i<br />
sökträdet. Därmed önskar man snabbt komma åt en <strong>heltals</strong>lösning och<br />
samtidigt en undre gräns som gör det möjligt att kapa de återstående grenarna i<br />
ett så tidigt skede som möjligt.<br />
5.4 Heltalsvariabler i modellering<br />
Några exempel på hur <strong>heltals</strong>variablerna kan utnyttjas i modellering av<br />
problem ges som följande.<br />
Val bland processenheter, då <strong>heltals</strong>variablerna begränsats till binära variabler,<br />
Välj minst en enhet ∑ yi ≥ 1<br />
i∈I<br />
Välj en enhet ∑ yi = 1<br />
i∈I<br />
Välj högst en enhet ∑ yi ≤ 1<br />
i∈I<br />
Välj enhet i om enhet j väljs y j − yi<br />
≤ 0<br />
Välj enhet i då enhet j väljs y j − yi<br />
= 0<br />
Aktivering / deaktivering av kontinuerliga variabler<br />
T.ex. om en pump inte valts måste volymströmmen genom denna ta<br />
värdet noll. Detta kan skrivas som,<br />
F L y ≤ F ≤ F U y<br />
där F L och F U är undre och övre gränser för volymströmmen F genom<br />
pumpen. För y=0, vilket betyder att ingen pump valts kommer flödet att<br />
bli tvunget att anta värdet noll. Då y=1, gäller de normala gränserna för<br />
flödet.<br />
11
Optimering<br />
Aktivering kan även användas vid approximering av en icke-<strong>linjär</strong> funktion<br />
<strong>linjär</strong>t.<br />
12<br />
x L1<br />
a +b x<br />
1 1<br />
x U1<br />
x L2<br />
a +b x<br />
2 2<br />
x U2<br />
x L3<br />
a +b x<br />
Den icke<strong>linjär</strong>a funktionen, f(x), som ritats med tjockare linje i figuren<br />
ovan kan approximeras med tre <strong>linjär</strong>a funktiner. En binär variabel<br />
introduceras för varje <strong>linjär</strong>isation som kan användas för att kontrollera<br />
att endast en <strong>linjär</strong> funktion är aktiv i taget. Istället för att använda den<br />
icke<strong>linjär</strong>a likhetsfunktionen i modellen kan den ersättas med följande<br />
uppsättning uttryck.<br />
f = z1<br />
+ z2<br />
+ z3<br />
z1<br />
= a1y1<br />
+ b1x1<br />
z2<br />
= a2<br />
y2<br />
+ b2x2<br />
z3<br />
= a3y3<br />
+ b3x3<br />
y1<br />
+ y2<br />
+ y3<br />
= 1<br />
L1<br />
U1<br />
x y1<br />
≤ x1<br />
≤ x y1<br />
L2<br />
U 2<br />
x y2<br />
≤ x2<br />
≤ x y2<br />
L3<br />
U 3<br />
x y3<br />
≤ x3<br />
≤ x y3<br />
där x Li och x Ui är de numeriska värdena vid gränserna till<br />
giltighetsintervallen för varje <strong>linjär</strong>isation.<br />
Det bör noteras att t.ex. konvexa kostnadsfunktioner inte förutsätter<br />
användning av binära variabler, vilket kan ses i figuren nedan, där<br />
samtliga <strong>linjär</strong>isationer är möjliga underestimatorer av funktionen och<br />
därmed kan vara aktiva samtidigt.<br />
3 3<br />
x U3<br />
f(x)<br />
x
f(x)<br />
Optimering<br />
Då vi använder oss av binära variabler kan det uppstå situationer då vi önskar<br />
använda produkterna y1y2 eller y1x1. Dessa kan skrivas om i <strong>linjär</strong> form med<br />
följande transformatioer,<br />
y1y2, där yi={0,1}<br />
z ≥ y1<br />
+ y2<br />
−1<br />
z ≤ y1<br />
z ≤ y2<br />
z används därmed istället för y1y2.<br />
y1x1, där y1={0,1} och<br />
L U<br />
x ≤ x1<br />
≤ x<br />
z ≤<br />
x +<br />
1<br />
z ≥ x −<br />
1<br />
z ≤ x<br />
z ≥ x<br />
U<br />
L<br />
y<br />
y<br />
( 1 − y1)<br />
( 1 − y )<br />
1<br />
1<br />
1<br />
x<br />
x<br />
U<br />
U<br />
13
Optimering<br />
5.5 Övningsuppgifter<br />
1 Vi producerar två produkter, P1 och P2, med tre maskiner, M1, M2 och<br />
M3.<br />
P 1 måste bearbetas i M1 5 min/enhet P1<br />
M2 3 min/enhet P1<br />
M3 1 min/enhet P1<br />
På motsvarande vis för P2<br />
M1 1 min/enhet P2<br />
M2 4 min/enhet P2<br />
M3 3 min/enhet P2<br />
P1 ger vinst 30 FIM/enhet och P2 ger vinst 20 FIM/enhet. Formulera<br />
problemet!<br />
2. Vi har två typers reaktorer och skall välja den kombination som minimerar<br />
produktionskostnaderna av en viss produkt. Reaktor 1 omvandlar 95% av<br />
råvaran x till produkt z och reaktor 2 på motsvarande vis 82%.<br />
Vi önskar producera 10 enheter av produkten<br />
Kostnaderna ges enligt,<br />
Reaktor 1 7.5 + 7x<br />
Reaktor 2 5.5 + 6x<br />
Råvara 5x<br />
5.6 Referenser<br />
Gomory R.E., An Algorithm for Integer Solutions of Linear Programs, Bulletin<br />
of the American Mathematical Society, Vol. 64, pp. 275-278, 1958<br />
Jeroslow R.G. Two Mixed Integer Programming Formulations Arising in<br />
Manufacturing Management, Discrete Applied Mathematics, Vol. 26. pp. 137-<br />
157, 1990<br />
Glover F., Polyhedral Annexation in Mixed Integer and Combinatorial<br />
Programming, Mathematical Programming, Vol. 8, pp. 161-188, 1975<br />
14
Optimering<br />
6 <strong>Blandad</strong> <strong>heltals</strong> icke<strong>linjär</strong> <strong>programmering</strong><br />
Metoder för lösning av icke<strong>linjär</strong>a problem med <strong>heltals</strong>variabler (Mixed integer<br />
non-linear programming, MINLP) har utvecklats aktivt under de senaste<br />
decennierna. Intresset för dessa metoder uppstår eftersom de flesta problemen<br />
hör till denna kategori. De flesta metoderna för lösning av MINLP problem<br />
baserar sig på sekventiell lösning av MILP och/eller NLP underproblem.<br />
6.1 Branch and bound<br />
Branch and bound tekniken för lösning av MILP problem kan även användas<br />
för MINLP problem. Gupta och Ravindran introducerade metoden 1985. Den<br />
största skillnade är att istället för lösning av det <strong>heltals</strong>relaxerade LP problemet<br />
blir vi tvungna att lösa ett <strong>heltals</strong>relaxerat NLP problem. Fast Branch and<br />
bound är en relativt effektiv metod uppstår det några problem då vi övergår till<br />
lösning av MINLP problem. Ett är att NLP problem i allmänhet kräver mera<br />
beräkningstid än LP problem och därmed kan den totala beräkningstiden bli<br />
avsevärt längre. Ett annat problem uppstår då vi bestämmer undre gränser (vid<br />
maximering). Om vi har ett icke-konvext problem finns det inga garantier för<br />
att vi inte kan hitta en bättre lösning genom addition av nya bivillkor. Därmed<br />
kan vi inte garantera globalt optimum utan att genomsöka hela sökträdet vilket,<br />
inte är önskvärt eller ens möjligt om vi har ett större anatal variabler. Även om<br />
vi genomsöker samtliga alternativ kan vi inte garantera globalt optimum ifall vi<br />
inte kan garantera globalt optimum för underproblemen. Om det relaxerade<br />
NLP problemet är konvext fungerar dock metoden och vi kan uppnå det<br />
globala optimet.<br />
6.2 Outer Approximation<br />
Duran och Grossmann presenterad 1986 en algoritm där <strong>heltals</strong>variablerna är<br />
binära variabler och de icke<strong>linjär</strong>a funktionerna är konvexa. Metoden kallas<br />
Outer Approximation (OA) och problemet kan beskrivas med,<br />
min c y f<br />
T<br />
+<br />
s.<br />
t.<br />
g<br />
( x)<br />
x ∈ X<br />
y ∈Y<br />
+ By ≤ 0<br />
=<br />
=<br />
( x)<br />
{ x : x ∈ R,<br />
A1x<br />
≤ a1}<br />
{ y : y ∈{<br />
0,<br />
1}<br />
, A y ≤ a }<br />
I OA löses en sekvens av NLP underproblem och MILP huvudproblem. MILP<br />
huvudproblemet omfattar alla <strong>linjär</strong>a begränsningar från det ursprungliga<br />
MINLP problemet och <strong>linjär</strong>isationerna som erhålles vid lösning av NLP<br />
underproblemen. NLP underproblemet söker optimala värden på de<br />
kontinuerliga variablerna då de binära variablerna betraktas som konstanter och<br />
lösningen som erhålles är en övre gräns för lösningen (minimering).<br />
2<br />
2<br />
15
Optimering<br />
Huvudproblemet väljer av de kvarvarande kombinationerna på de binära<br />
variablerna den med det lägsta värdet på objektfunktionen. När detta lägsta<br />
värde överskrider den övre gränsen avslutas algoritmen. Sekvensen illustreras i<br />
följande figur,<br />
16<br />
MINLP<br />
problem<br />
NLP<br />
underproblem<br />
MILP<br />
huvudproblem<br />
Optimal lösning?<br />
Ja<br />
STOP<br />
Nej<br />
Nya binära<br />
variabler<br />
OA metoden är begränsad till <strong>linjär</strong>a likhetsvillkor samt <strong>linjär</strong>a och och o<strong>linjär</strong>a<br />
olikhetsvillkor. Denna algoritm har utvecklats vidare för att kunna hantera<br />
o<strong>linjär</strong>a likhetsvillkor av Kocis och Grossmann 1987. Viswanathan och<br />
Grossmann utvecklade algoritmen vidare 1990 för att klara av<br />
ickekonvexiteter. Global optimalitet kan inte garanteras för ickekonvexa<br />
problem. Denna version är implementerad i DICOPT++ och ingår i GAMS<br />
optimeringspaket.
6.3 Extended Cutting Plane<br />
Optimering<br />
Extended Cutting Plane metoden (Westerlund, Pettersson 1995) löser MINLP<br />
problem with en <strong>linjär</strong> objekt funktion, <strong>linjär</strong>a likhets- och olikhetsvillkor samt<br />
o<strong>linjär</strong>a olikhetsvillkor.<br />
min<br />
s.<br />
t.<br />
{ c x + c y}<br />
Ax + By + d ≤ 0<br />
Ex + Fy + h = 0<br />
g<br />
T x<br />
( x,<br />
y)<br />
≤ 0<br />
T y<br />
xmin<br />
≤ x ≤ xmax<br />
ymin<br />
≤ y ≤ ymax<br />
(6.1)<br />
Den iterativa procedure löser en sekvens av relaxerade MILP problem där de<br />
icke<strong>linjär</strong>a begränsningarna approximeras med en uppsättning <strong>linjär</strong>a<br />
begränsningar. För att erhålla globalt optimum bör uppsättningen <strong>linjär</strong>a villkor<br />
vara valda så att inget av dem skär in i det möjliga området av det ursprungliga<br />
problemet samt så att de är en god approximation av de o<strong>linjär</strong>a villkoren nära<br />
den optimala lösningen. För konvexa problem kan en sådan uppsättning enkelt<br />
erhållas, medan för allmänna icke-konvexa problem kan detta inte ännu<br />
garanteras.<br />
Problemet som gavs ovan är, förutom de o<strong>linjär</strong>a olikheterna, ett MILP<br />
problem som kan lösas effektivt till globalt optimum. Vid den optimala<br />
lösningen vet vi att vi kommer att ha antingen,<br />
eller<br />
( , ) 0<br />
* *<br />
x y =<br />
g i (6.2)<br />
( , ) 0<br />
* *<br />
x y ≤<br />
gi (6.3)<br />
där index i betecknar varje icke<strong>linjär</strong>t bivillkor. Det approximativa problemet<br />
kan då beskrivas med,<br />
min<br />
s.<br />
t.<br />
{ c x +<br />
c y}<br />
Ax + By + d ≤ 0<br />
Ex + Fy + h = 0<br />
l j<br />
T x<br />
( x,<br />
y)<br />
≤ 0<br />
T y<br />
xmin<br />
≤ x ≤ xmax<br />
ymin<br />
≤ y ≤ ymax<br />
:<br />
j = 1,...,<br />
m<br />
17
Optimering<br />
där lj(x,y) är en uppsättningn av m <strong>linjär</strong>a begränsningar som erhållits med<br />
Taylorserie expansion enligt,<br />
18<br />
k k ⎛ ∂g<br />
⎞<br />
k ⎛ ∂g<br />
k<br />
( x y)<br />
g ( x y ) ( x x ) i ⎞<br />
, = , + 1<br />
⎜ ⎟ − + ⎜ ⎟ ( y − y )<br />
k<br />
li<br />
i<br />
⎝ ∂x<br />
⎠ k k<br />
x , y<br />
Om funktionen är konvex vet vi att<br />
( x,<br />
y)<br />
≤ g ( x,<br />
y)<br />
⎝ ∂y<br />
⎠ k k<br />
x , y<br />
k<br />
li i<br />
stämmer för samtliga värden på x och y. Uppsättningen av <strong>linjär</strong>iserade<br />
begränsningar erhålles iterativt då nya <strong>linjär</strong>isationer adderas till problemet för<br />
de o<strong>linjär</strong>iteter som inte uppfyller 6.2 eller 6.3 vid varje MILP lösning.<br />
Fast problem formuleringen (6.1) verkar begränsad, kan allmänna problem<br />
skrivas i denna form. En icke<strong>linjär</strong> objektsfunktion kan beskrivas som ett<br />
bivillkor genom introduktion av en ny kontinuerlig variabel, xn+1.<br />
min<br />
s.<br />
t<br />
{ x }<br />
n+<br />
1<br />
Ursprungliga<br />
begränsingar<br />
f<br />
( x,<br />
y)<br />
x ≤ 0<br />
− n+<br />
1<br />
Icke<strong>linjär</strong>a likhetsvillkor, h(x,y), kan skrivas om med två olikheter,<br />
h<br />
( x,<br />
y)<br />
− u ≤ 0<br />
h(<br />
x,<br />
y)<br />
− u ≤ 0<br />
−<br />
där u är antingen straffvariabler eller definierade noggrannhetskrav. Ett<br />
problem med denna formulering är att åtminstone det ena villkoret kommer att<br />
bli icke-konvext.<br />
För att kunna hantera icke-konvexa problem har en metod som ersätter<br />
<strong>linjär</strong>isationer som skär in i det möjliga området utvecklats. En förbättrad<br />
variant av ECP metoden, α-ECP av Westerlund mfl. 1998, kan garantera<br />
globalt optimum för pseudo-konvexa problem.
6.4 Övningsuppgift<br />
1. Lös följande problem från Floudas, 1995.<br />
min−<br />
0.<br />
7 y + 5 1<br />
s.<br />
t.<br />
( x − 0.<br />
2)<br />
( x − 0.<br />
5)<br />
− exp 1 − x2<br />
≤ 0<br />
x2<br />
+ 1.<br />
1y<br />
≤ −1<br />
x1<br />
−1.<br />
2y<br />
≤ 0.<br />
2<br />
0.<br />
2 ≤ x1<br />
≤ 1<br />
− 2.<br />
22554 ≤ x2<br />
≤ −1<br />
y = 0,<br />
1<br />
med t ex en spreadsheet lösare.<br />
2<br />
+ 0.<br />
8<br />
Optimering<br />
6.5 Referenser<br />
Duran M.A. and I.E. Grossmann. An outer-approximation algorithm for a class<br />
of mixed-integer nonlinear programs. Math. Program., 36, pp. 307-339,1986<br />
Floudas C.A. Nonlinear and mixed-integer optimisation, fundamentals and<br />
applications. Oxford University Press, New York, 1995.<br />
Gupta O.K. amd A. Ravindran. Branch and bound experiments in convex<br />
nonlinear integer programming. Management Science, 31, 12, pp. 1533-1546,<br />
1985.<br />
Kocis G.R. and I.E. Grossmann. Relaxation strategy for the structural<br />
optimisation of process flow sheets. Ind. Engng. Chem. Res. 26, pp. 1869-<br />
1880, 1987.<br />
Westerlund T. and F. Pettersson. An extended cutting plane method for<br />
solving convex MINLP problems. Comp. Chem. Engng, 19, pp.S131-S136.<br />
1995.<br />
Westerlund T., Skrifvars H. Harjunkoski I. and R. Pörn. An extended cutting<br />
plane method for a class of non-convex MINPL problem. Comp. Chem. Engng.<br />
22, 3,pp.357-365. 1998.<br />
Viswanathan J. and I.E. Grossmann. A combined penalty function and outerapproximation<br />
method for MINLP optimisation. Comp. Chem. Engng. 14, 7,<br />
pp. 769-782, 1990.<br />
19