Ugeseddel 12(10.12 14.12)



Relaterede dokumenter
LINEÆR OPTIMERING JESPER MICHAEL MØLLER. Resumé. Disse noter handler om dualitet i lineære optimeringsprogrammer.

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515)

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515)

Chapter 7: Transport-, assignment- & transshipmentproblemer

4. Simplexmetoden. Basisløsning. x Geometrisk hovedindhold

Operationsanalyse 1 Obligatorisk opgave 2

Chapter 5: Simplex metoden til løsning af LP. -> max problem alle uligheder af typen ì alle højresider ikke-negative alle variable ikke-negative

MASO Uge 11. Lineær optimering. Jesper Michael Møller. Uge 46, Formålet med MASO. Department of Mathematics University of Copenhagen

Simplex metoden til løsning af LP

Besvarelser til Calculus og Lineær Algebra Globale Forretningssystemer Eksamen - 8. Juni 2015

Noter til kursusgang 8, IMAT og IMATØ

Matrx-vektor produkt Mikkel H. Brynildsen Lineær Algebra

Chapter 6: Følsomhedsanalyse og dualitet i LP

Matricer og lineære ligningssystemer

Besvarelser til Calculus og Lineær Algebra Globale Forretningssystemer Eksamen - 3. Juni 2014

Aflevering 4: Mindste kvadraters metode

DesignMat Uge 1 Gensyn med forårets stof

Emneopgave: Lineær- og kvadratisk programmering:

Oversigt [LA] 1, 2, 3, [S] 9.1-3

Modulpakke 3: Lineære Ligningssystemer

Lineær algebra Kursusgang 6

Besvarelser til Lineær Algebra Reeksamen August 2016

DM559/DM545 Linear and integer programming

Matematik for økonomer 3. semester

Optimering af New Zealands økonomi. Gruppe G3-115

Matematik og FormLineære ligningssystemer

Det Ingeniør-, Natur- og Sundhedsvidenskabelige basisår Matematik 2A, Forår 2007, Hold 4 Opgave A Kommenteret version

Videregående Algoritmik. Version med vejledende løsninger indsat!

Ligningssystemer - nogle konklusioner efter miniprojektet

DM559/DM545 Linear and integer programming

Kursusgang 3 Matrixalgebra Repetition

Gamle eksamensopgaver (MASO)

Matematik og Form 3. Rækkereduktion til reduceret echelonfo. Rang og nullitet

Lineære ligningssystemer og Gauss-elimination

Optimering i Moderne Portefølje Teori

Kapitel 9. Optimering i Microsoft Excel 97/2000

Oversigt [LA] 11, 12, 13

Besvarelser til Lineær Algebra Ordinær eksamen - 6. Juni 2016

Bedste rette linje ved mindste kvadraters metode

LinAlgDat 2014/2015 Google s page rank

Kvadratiske matricer. enote Kvadratiske matricer

G r u p p e G

Operationsanalyse. Hans Keiding

Algebra - Teori og problemløsning

Differentialregning med TI-Interactive! Indledende differentialregning Tangenter Monotoniforhold og ekstremum Optimering Jan Leffers (2009)

Anvendt Lineær Algebra

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid

Besvarelser til Lineær Algebra Ordinær Eksamen - 5. Januar 2018

Lineær Algebra, kursusgang

Egenværdier og egenvektorer

3.1 Baser og dimension

IKKE-LINEÆR OPTIMERING

UGESEDDEL 12 LØSNINGER. x

Chapter 3. Modulpakke 3: Egenværdier. 3.1 Indledning

Noter til Perspektiver i Matematikken

Uge 6 Store Dag. Opgaver til OPGAVER 1. Opgave 1 Udregning af determinant. Håndregning Der er givet matricen A =

To ligninger i to ubekendte

matematik-økonomi-studerende

Teoretiske Øvelsesopgaver:

Affine rum. a 1 u 1 + a 2 u 2 + a 3 u 3 = a 1 u 1 + (1 a 1 )( u 2 + a 3. + a 3. u 3 ) 1 a 1. Da a 2

Matematik YY Foråret Kapitel 1. Grupper og restklasseringe.

Ølopgaver i lineær algebra

LINALG JULENØD 2013 SUNE PRECHT REEH

Skriftlig Eksamen Diskret Matematik (DM528)

Lineær Algebra. Lars Hesselholt og Nathalie Wahl

Fejlkorligerende køder Fejlkorrigerende koder

Hvede Byg Rug Roer Kløver

Ting man gør med Vektorfunktioner

DesignMat Uge 5 Systemer af lineære differentialligninger II

Figur. To ligninger i to ubekendte. Definition Ved m lineære ligninger med n ubekendte forstås. Definition 6.4 Givet ligningssystemet

Peter Harremoës Matematik A med hjælpemidler 17. august Stamfunktionen til t 1 /2. Grænserne er indsat i stamfunktionen. a 2 +9.

2010 Matematik 2A hold 4 : Prøveeksamen juni 2010

3D-grafik Karsten Juul

Ligninger med reelle løsninger

Besvarelser til Lineær Algebra med Anvendelser Ordinær Eksamen 2016

Lineær algebra: Spænd. Lineær (u)afhængighed

Statisk Optimering. Jesper Michael Møller

Lineær algebra: Matrixmultiplikation. Regulære og singulære

Eksempel 9.1. Areal = (a 1 + b 1 )(a 2 + b 2 ) a 1 a 2 b 1 b 2 2a 2 b 1 = a 1 b 2 a 2 b 1 a 1 a 2 = b 1 b 2

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Transkript:

Ugeseddel (..) Matematisk Programmering Niels Lauritzen..7 FORELÆSNINGER I ugen. 7. gennemgik vi algoritmer til løsning af heltalsprogrammer ved hjælp af simplex algoritmen. Dette er heltalsprogrammeringsugesedlen med detaljerede eksempler på hvordan Gomory cuts og branch and bound indarbejdes i simplex tableauet. Der er kun opgaver på ugesedlen og de er alle regneopgaver. Det er vigtigt at du får metoderne indarbejdet ved at læse denne ugeseddel grundigt og regne opgaverne. Gomory cuts og branch and bound er beskrevet i ILO, men det er ikke beskrevet hvordan man konkret arbejder med simplex tableauet. På mandag vil den obligatoriske opgave blive gennemgået og vi vil regne på flere heltalsprogrammer. Vi har nu afsluttet gennemgangen af pensum. Heltalsprogrammer Et heltalsprogram er et lineært program, hvor vi forlanger heltalsløsninger: min cx givet Ax = b, ( ) x N n, hvor c er en reel n vektor, A en n m matrix med heltalsindgange og b er en m vektor med heltalsindgange. Læg mærke til at N betegner mængden {,,,... } af ikke-negative heltal. Vi kan stadigvæk benytte alle de gængse tricks med at tilføje slack variable dvs. heltalsprogrammer som f.eks. min cx givet Ax b, x N n, kan omformes til ( ), når blot A og b indeholder heltal. Det er tid til et helt konkret eksempel. http://en.wikipedia.org/wiki/ralph E. Gomory

EKSEMPEL max x + y 7 ( ) x y 9, ( ) x N. y På tegningen nedenfor er det brugbare område (som nu er endeligt!!) skitseret med punkter. Du kan samtidig se at det tilsvarende lineære program ikke giver et heltalsoptimum. Metoderne vi skal beskrive til at løse heltalsprogrammet ( ) gør begge brug af den såkaldte LP-relaksation (med et godt dansk ord!): Man dropper betingelsen x N n og erstatter den med et almindeligt lineært program x. Hvis dette lineære program kommer ud med en heltalsløsning, så har vi fundet den optimale løsning til ( ). Overvej lige hvorfor! Gomory cuts Vi vil gerne indføre nogle flere betingelser for at skære uønskede ikke heltalsløsninger væk. Ideen er at vi til sidst får fat i et heltalshjørne som er

optimalt i det lineære program. Gomory cuts er en dejlig måde at indføre flere bibetingelser i et lineært program uden at ændre på løsningerne i det tilsvarende heltalsprogram. Ideen er egentlig ganske enkel. Vi løser LP-relaksationen til ( ). Hvis den optimale løsning er heltallig er det fint. Hvis ikke findes en koordinat som ikke er et heltal. Antag nu at x x x =. Nn x n er en brugbar løsning til ( ) og at vi har fundet et optimalt sæt B af basissøjler i A for LP-relaksationen til ( ) f.eks. ved brug af simplex algoritmen. Så gælder Ax = b = (B A)x = B b, hvor det bemærkes at B A er søjlerne,...,n i simplex tableauet T og B b er koordinaterne til den optimale løsning dvs. den -te søjle i simplex tableauet. Antag at den i-te koordinat (dvs. den med index i) i den -te søjle, T i, ikke er et heltal dvs. T i < T i, hvor a angiver det største heltal mindre end et tal a. Hvis N betegner indices på søjler uden for basen B, så medfører x i + j N T ij x j = T i. at x i + j N T ij x j T i, () idet alle x k, k =,..., n specielt er heltal. Nu er den fantastiske indsigt at den optimale løsning t R n til LP-relaksationen givet ved B ikke opfylder (). Bemærk nemlig at t j = for j N samt at t i = T i. Men hvis t skal opfylde () må t i t i. Det er kun heltal som opfylder sidstnævnte ulighed.

Gomory cuts i simplex tableauet Vi kan addere () som en ny ulighed i vores LP-relaksation. Det er beskrevet i ILO. ( A new inequality constraint is added ) hvordan det gøres i praksis. Lad os kort opfriske det inden vi gennemgår et eksempel. Antag vi har at gøre med det lineære program min cx, Ax = b, x. Her er A en m n matrix, c en n vektor, x en n vektor og b en m vektor. Antag at vi ønsker at tilføje uligheden ax b, hvor a er en n vektor og b et tal. Den ny ulighed bliver til ax + s = b med slack variabel s. Dette giver det ny lineære program min cx givet ( ) ( )( ) ( ) A x b = a s b, x, s. Med en brugbar basisløsning B til det oprindelige problem kan vi hurtigt få en basisløsning i det ny program ( ) ved at sætte ( ) B B = a, hvor a er et udsnit af a svarende til søjlerne i B. Med denne basisløsning bliver tableauet for ( ) hvor B A = ( ) B a A = ( ) ( B a B A = A = ( ) A. a B A a B A + a Læg mærke til at den reducerede cost række bliver ( ) (c, ) (c B, )B A B = c (c B, ) A a B = (c c A + a B B A, ). Slutteligt bliver -te søjle i det ny tableau ( ) ( ) ( B b a B b = B b a B b + b ). ),

I praksis udvider man ganske enkelt simplex tableauet B A (som man allerede har regnet ud) med den ekstra ligning ax + s = b. Hvis vi vedtager at den ny basis består af den gamle basis samt den ny slack variabel kan vi hurtigt lave rækkeoperationer for at omforme tableauet for det ny problem. Faktisk modsvarer udtrykket a B A + a ovenfor de elementære rækkeoperationer man skal omforme sidste række (a, ) med for at få under -tallerne i den gamle basis. Men læg mærke til at dette ny tableau som hovedregel giver en ikkebrugbar løsning for det primale problem. Her må man benytte den duale simplex metode (. i ILO). Hvorfor er brugbarhed for det duale problem bevaret? OPGAVE Gomory uligheden i () bliver til ligningen x i + j N T ij x j + s = T i og i dette tilfælde er det meget nemt at få fat på det ny tableau for ( ). Eftervis at den sidste række i det ny tableau bliver (skrevet op som en ligning) {T ij }x j + s = {T i }, j N hvor {a} = a a for et tal a. Når du har indføjet et Gomory cut og udregnet det ny tableau som ovenfor benyttes den duale simplex metode til at regne sig frem til et nyt optimum (. i ILO). Her er et eksempel. EKSEMPEL Betragt problemet max y x + y (!) x + y x, y N.

Dette kan tegnes som Det er klart at optimum ligger i (, ). Men vi vil benytte dette nemme eksempel til at illustrere Gomory cuts. Vi omdøber x til x og y til x og indfører slack variablene x og x. Dette giver os følgende tableau for det lineære program i (!) (vi har udskiftet x, y N med x som i almindelig lineær programmering med reelle løsninger). Lad os pivotere i fællesskab: Anden pivotering giver det optimale tableau

Anden koordinaten er ikke et heltal og vi kigger nærmere på anden række. I vores tableau svarer den til x + x + x =. Dette giver anledning til et Gomory cut: x. Læg mærke til at denne ekstra betingelse faktisk fjerner ovenstående optimale løsning til vores LP-relaksation i og med at ikke er. Som beskrevet indsættes cuttet i et udvidet tableau. Ved en elementær rækkeoperation fås Læg grundigt mærke til at vi har et dualt brugbart tableau (alle indgange i den reducerede cost vektor er ), men at x = ødelægger primal brugbarhed. Vi bruger den duale simplex algoritme og jeg har angivet hvor jeg vil pivotere ovenfor. I den duale simplex algoritme maksimerer man c j /T ij over de negative T ij i i-te række. I den primale algoritme minimerer man T i /T ij over de positive T ij i j-te søjle. Efter ovenstående pivotering fås det optimale tableau 7

Her får vi et Gomory cut ud fra første række på x x, som indsættes som Efter en elementær rækkeoperation: Vi pivoterer en gang i den duale simplex algoritme og ser at vi får den længe ventede optimale løsning (, ). Der er ikke behov for flere Gomory cuts, da vi har fundet en heltalsløsning. 8

OPGAVE Løs heltalsprogrammet max x + x x + x +x = x, x, x, x, x N. x + x +x = x +x +x = ved hjælp af Gomory cuts. Illustrer med en tegning. Branch and bound I har allerede stødt på denne teknik i jeres obligatoriske opgave. Kort fortalt har vi (som beskrevet i ILO) at gøre med et optimeringsproblem min cx, (+) x F hvor F bare er en delmængde af R n. Branch and bound er en begavet måde at løse dette optimeringsproblem på ved at undersøge problemerne for delmængder F i F med min cx, x F i F = F F m. Den optimale løsning til (+) skal findes i et af disse delproblemer. Antag samtidig at vi hurtigt kan udregne en nedre grænse b(f i ) min x F i cx, for hvert delproblem. Så kan vi i ro og mag gennemløbe listen af delproblemer for F,...,F m. Men vi kan gøre det smart ved at benytte funktionen b. Lad U være den optimale værdi, som vi har fundet ved at løse delproblemerne givet ved F,...,F k (i starten er U = ). Hvis b(f k+ ) U kan det ikke betale sig at løse problemet for F k+ og vi har sparet værdifuld regnetid. Dette er i al sin enkelthed princippet bag branch and bound. Men lad os se på et eksempel. 9

EKSEMPEL Betragt igen problemet max y x + y x + y (=) x, y N. LP-relaksationen har det optimale tableau (x = x, x = y med slack variable x, x tilføjet) Igen er x = ikke heltallig. Men vi har øvre grænse på for vores maksimum (eller en nedre grænse på for det tilsvarende minimumsproblem vi er i gang med at løse). Helt naivt gælder at den brugbare mængde i (=) kan opdeles i to disjunkte mængder, hvor x eller x dvs. vi har de to delproblemer samt max x x + x x + x x, x N. x max x x + x x + x x, x N. x Et af disse to delproblemer indeholder den optimale løsning til (=). Bemærk samtidig at vi har skåret den uønskede x = væk i ovenstående to problemer. Lad os prøve at sætte x ind i sidste række i vores optimale

tableau. Efter en elementær rækkeoperation fås Sidste række afslører et lineært program uden brugbare løsninger. Vi kan derfor undlade at gå videre med x og ser i stedet for på x : Ligesom i Gomory cut eksemplet sætter vi betingelsen x ind i simplex tableauet og når frem til det optimale tableau igen efter en iteration i den duale simplex algoritme. Her giver x = de to delproblemer x og x. Lad os studere delproblemet givet ved

x : max x x + x x + x x, x N. x x Dette giver tableauet som efter en elementærækkeoperation bliver til som efter pivotering giver det optimale tableau Dette tableau giver heltalsløsningen x = samt x =, som har har cost. Læg mærke til at vi først nu har fundet en brugbar heltalsløsning til et

delproblem. Dette delproblem er max x x + x x + x x x x, x N. og vi sætter U =. Men husk på at vi stadig har delproblemet max x x + x x + x x x x, x N. Men dette delproblem har klart optimal løsning (, ). Lad os se på endnu et eksempel (fra ILO), hvor alle udregninger er vist. EKSEMPEL min x x ( ) x x x N. x x x x x ( ) 9 =, ( )

Vi opstiller straks tableauet for LP-relaksationen og begynder at regne. 9 7 Altså har LP-relaksationen en ikke-heltallig optimal løsning med x = og x = med et minimum på 7, som også er en nedre grænse for minimum i ( ). Men vi er interesserede i heltalsløsninger! En heltalsløsning har selvfølgelig x eller x. Disse to uligheder kommer fra x = i LP-relaksationen. Vi ønsker ikke denne løsning i vores heltalsprogram og udelukker den med de to uligheder. Lad os begynde med at indsætte x i vores optimale simplex tableau ovenfor. Her fås 7 Ved en elementær rækkeoperation fås 7

og det ses at tilføjelsen x ikke har nogle løsninger. Så vi koncentrerer os om x og tilføjer den til tableauet: 7 Ved en elementær rækkeoperation fås 7 Efter den markerede duale pivotering fås det optimale tableau med x = og x =. Svarende til sidstnævnte kan vi opdele problemet i x samt x. Lad os se på x. Denne giver:

Efter en elementær rækkeoperation fås Efter den markerede duale pivotering fås det optimale tableau og her har vi en heltalsløsning med x =, x = med cost. Derfor sætter vi U = og fortsætter med tilfældet x : Efter en elementær rækkeoperation fås

Efter den markerede duale pivotering fås det optimale tableau Vi ser at den optimale løsning til LP-relaksationen har x = og x = med en cost på. Denne løsning er ikke heltallig. Men læg nu mærke til den helt centrale observation: Vi behøver ikke gå videre med delproblemerne x og x, idet vi allerede har en optimal løsning med cost U = i et delproblem. De delproblemer som fremkommer ud af x og x vil nemlig altid have cost. Overvej lige hvorfor! Så vi har fundet den optimale løsning (,,, ) til vores heltalsprogram i ( ). OPGAVE Løs heltalsprogrammet max x + x x +x +x = 9 x, x, x, x N. ved hjælp af branch and bound. x +x +x = 7