03.09.2013 Views

5 Blandad heltals linjär programmering

5 Blandad heltals linjär programmering

5 Blandad heltals linjär programmering

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!