1 / 78

Inleiding tot Lineair Programmeren

Inleiding tot Lineair Programmeren. Tom De Decker 27/11/2009. Inhoud. Situering Voorbeeld van een LP-probleem Grafische benadering Mathematische benadering Conclusie Meer informatie Begrippen. Situering.

shelley
Download Presentation

Inleiding tot Lineair Programmeren

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Inleiding tot Lineair Programmeren Tom De Decker 27/11/2009

  2. Inhoud • Situering • Voorbeeld van een LP-probleem • Grafische benadering • Mathematische benadering • Conclusie • Meer informatie • Begrippen

  3. Situering Lineaire programmering (LP) is een methode die gebruikt wordt voor het optimaliseren van functies, onder bepaalde voorwaarden. LP-problemen komen vaak voor bij het opmaken van productieplannen (zie voorbeeld) maar er zijn tal van andere problemen die via LP aangepakt kunnen worden. Lineaire programmering is een deel van het vakgebied dat “Operationeel Onderzoek” genoemd wordt. Dit studiegebied houdt zich bezig met het onderzoeken van complexe vraagstukken die zich situeren binnen de sfeer van productie en logistiek.

  4. Situering Operationeel onderzoek is een heel specifiek vakgebied. Het komt niet aan bod in het vak economie uit het secundair onderwijs, en zelfs op de universiteit krijgen slechts een kleine groep mensen (de richting handelsingenieur) deze cursus. Het is dus perfect mogelijk dat je een “economie-student” aanspreekt en dat hij niet weet waarover je het hebt. Hou hier rekening mee bij het opzoeken van informatie, en weet ook dat slechts een kleine groep mensen hier later effectief mee in contact gaat komen. Dat gezegd zijnde is de basis niet erg moeilijk om te begrijpen. LP-problemen zijn gelinkt aan “functieonderzoek” in de wiskunde en vaak worden matrices gebruikt bij het oplossen van de problemen.

  5. Voorbeeld v/e LP-probleem Stel je een fabriek voor die 2 soorten goederen produceert: kasten en bureaus. Beide producten kunnen gemaakt worden van ongeveer dezelfde grondstoffen (hout, schroeven, metaal,…), maar voor elk product moeten verschillende handelingen gebeuren om het te maken. Deze handelingen gebeuren via 2 machines, die we machine A en machine B zullen noemen.

  6. Voorbeeld v/e LP-probleem • Om één kast te maken moet men 3u bezig zijn met machine A en 4u met machine B. • Om één bureau te maken moet men 5u bezig zijn met machine A en 2u met machine B. Eindproduct Machine A Machine B Grondstoffen (3 uur) (4 uur) Eindproduct Machine A Machine B Grondstoffen (5 uur) (2 uur)

  7. Voorbeeld v/e LP-probleem Het bedrijf verkoopt deze producten tegen een vaste winstmarge. Op elke kast die verkocht wordt maakt het bedrijf 2 euro winst, op elke bureau die men verkoopt wordt 3 euro winst gemaakt. Het hoofddoel van het bedrijf is, natuurlijk, het realiseren van een maximale winst. = 2 euro = 3 euro

  8. Voorbeeld v/e LP-probleem Er is slechts één probleem: het aantal uren dat een machine wekelijks gebruikt kan worden is beperkt. Machine A is slechts 30 uur per week beschikbaar, machine B slechts 20 uur. Nu is de vraag: hoeveel kasten en hoeveel bureaus moet de onderneming per week produceren om een maximale winst te behalen, zonder het het maximaal aantal machineuren voor elke machine te overschrijden?

  9. Voorbeeld v/e LP-probleem Even samenvatten: • 2 producten (kasten, bureaus) • 2 machines (A, B) • Winstmarge kasten = 2 euro • Winstmarge bureaus = 3 euro • Maximaal gebruik machine A = 30u/week • Maximaal gebruik machine B = 20u/week Gevraagd: bepaal optimale productie voor kasten en bureaus zonder de machines te overbelasten.

  10. Voorbeeld v/e LP-probleem Eerst kiezen we onze variabelen. Vermits gevraagd wordt hoeveel kasten en hoeveel bureaus geproduceerd moeten worden zullen we deze (nu nog onbekende) aantallen als variabelen kiezen. x = aantal geproduceerde kasten y = aantal geproduceerde bureaus x y

  11. Voorbeeld v/e LP-probleem Nu kunnen we onze winstfunctie opstellen. Elke kast brengt 2 euro op. De totale winst die we kunnen halen uit de verkoop van kasten zal dus (prijs * hoeveelheid) 2 * x bedragen. Elk bureau brengt 3 euro op. De totale winst die we kunnen halen uit de verkoop van bureaus zal dus (prijs * hoeveelheid) 3 * y bedragen. De totale winst (W) op het einde van de week zal dan de som zijn van deze 2 bedragen: W = 2*x + 3*y

  12. Voorbeeld v/e LP-probleem Vervolgens kijken we naar onze beperkingen. Machine A is slechts 30 uur per week beschikbaar. Om 1 kast te maken hebben we 3 uur machinetijd nodig van machine A (zie gegevens). Om 1 bureau te maken hebben we 5 uur machinetijd van nodig van machine A (zie gegevens).

  13. Voorbeeld v/e LP-probleem Het aantal uren per week dat we machine A gebruiken om kasten te maken = 3 uur per kast * aantal kasten = 3*x Het aantal uren per week dat we machine A gebruiken om bureaus te maken = 5 uur per bureau * aantal bureaus = 5*y De som van deze 2 tijden moet lager zijn dan 30 om de machine niet te overbelasten: 3*x + 5*y <= 30

  14. Voorbeeld v/e LP-probleem We maken dezelfde redenering voor machine B. Machine B is slechts 20 uur per week beschikbaar. Om 1 kast te maken hebben we 4 uur machinetijd nodig van machine B (zie gegevens). Om 1 bureau te maken hebben we 2 uur machinetijd van nodig van machine B (zie gegevens).

  15. Voorbeeld v/e LP-probleem Het aantal uren per week dat we machine B gebruiken om kasten te maken = 4 uur per kast * aantal kasten = 4*x Het aantal uren per week dat we machine B gebruiken om bureaus te maken = 2 uur per bureau * aantal bureaus = 2*y De som van deze 2 tijden moet lager zijn dan 20 om de machine niet te overbelasten: 4*x + 2*y <= 20

  16. Voorbeeld v/e LP-probleem Verdere beperkingen: Het aantal geproduceerde kasten kan niet negatief zijn: x >= 0 Het aantal geproduceerde bureaus kan niet negatief zijn: y >= 0 Deze laatste 2 beperkingen lijken banaal, maar ze zijn belangrijk om een juiste wiskundige vertaling te geven van je probleem.

  17. Voorbeeld v/e LP-probleem We kunnen onze probleemstelling nu wiskundig herformuleren. Herinner je de vraagstelling: “Hoeveel kasten en hoeveel bureaus moet de onderneming per week produceren om een maximale winst te behalen, zonder het het maximaal aantal machineuren voor elke machine te overschrijden?”

  18. Voorbeeld v/e LP-probleem “hoeveel kasten en hoeveel bureaus?” • Bepaal x en y (x >= 0, y >= 0) “een maximale winst realiseren”  zodat W = 2*x + 3*y maximaal is “ zonder het maximaal aantal machine-uren te overschrijden” • En zodat 3*x + 5*y <= 30 en 4*x + 2*y <= 20

  19. Voorbeeld v/e LP-probleem Dit noemen we de objectieve functie, soms ook wel “doelfunctie” genoemd. In dit geval wordt gevraagd om deze te maximaliseren, maar je kan ook minimaliserings-vraagstukken hebben, bvb. wanneer je kosten krijgt ipv winstmarges (je optimum is dan het punt met de laagste totale kosten). Het LP-probleem: Max(W = 2*x + 3*y) s.t. 3*x + 5*y <= 30 4*x + 2*y <= 20 x >= 0 y >= 0 Dit zijn de restricties. “s.t.” staat voor “subject to”, wat Engels is voor “onder behoud van”. Bij een lineair programmeringsprobleem zijn zowel de restricties als de objectieve functie lineaire functies (d.w.z., functies van de eerste graad). Als dit niet het geval is, bvb. wanneer de objectieve functie een kwadratische vergelijking is, dan spreekt men van een niet-lineair programmeringsprobleem (NLP).

  20. Grafische benadering We kunnen ons LP-probleem grafisch voorstellen. Op de horizontale as zetten we het aantal geproduceerde kasten (variabele x), op de verticale as het aantal geproduceerde bureaus (variabele y). Omdat x en y groter dan 0 moeten zijn (zie beperkingen) volstaat het om enkel het eerste kwadrant te tekenen. Elk punt in de grafiek stelt een combinatie voor van kasten en bureaus die geproduceerd kunnen worden.

  21. Grafische benadering y In dit punt worden 3 kasten en 4 bureaus geproduceerd x

  22. Grafische benadering We beginnen met onze beperkingen aan te brengen op de grafiek. De ongelijkheden van de restricties stellen in de grafiek halfvlakken voor. Voor de duidelijkheid tekenen we enkel de grenzen van deze halfvlakken (vervang de ongelijkheden door een gelijkheid). Restricties: Berperking machine A: 3*x + 5*y <= 30 Berperking machine B: 4*x + 2*y <= 20 Negatieve productie onmogelijk: x >= 0; y >= 0

  23. Grafische benadering y Restrictie machine A:3*x + 5*y = 30 Restrictie machine B:4*x + 2*y = 20 Deze combinaties kunnen niet worden geproduceerd, men zou immers machine A overbelasten. Deze combinaties kunnen niet worden geproduceerd, men zou immers machine B overbelasten. Enkel de combinaties in dit vlak kunnen geproduceerd worden x

  24. Grafische benadering Wat met de objectieve functie (=de winst)? Die is dus een dalende rechte met als richtingscoëfficiënt de verhouding tussen de prijzen. De exacte ligging van de rechte kunnen we echter pas bepalen wanneer we winst, en dus de optimale combinatie van x en y, bepaald hebben.

  25. Grafische benadering y Restrictie machine A:3*x + 5*y = 30 Restrictie machine B:4*x + 2*y = 20 x

  26. Grafische benadering Enkel de punten uit het groene vlak komen dus in aanmerking als oplossing voor ons LP-probleem…maar dat zijn er nog steeds oneindig veel natuurlijk! We kunnen echter nog een groot aantal oplossingen uitsluiten.

  27. Grafische benadering y Restrictie machine A:3*x + 5*y = 30 Restrictie machine B:4*x + 2*y = 20 We kunnen echter meer winst maken door één kast of één bureau extra te produceren, zonder daarbij de restricties te schenden! Stel dat we ervoor kiezen om 2 kasten en 3 bureaus te produceren. De winst (W) is dan2 euro * 2 kasten + 3 euro * 3 bureaus= 13 euro W(2,4) = 2*2 + 3*4 = 18 euro W(3,3) = 2*3 + 3*3 = 14 euro x

  28. Grafische benadering Door de voorgaande redenering steeds te herhalen bekom je dat de punten binnen de lijnen van de beperkingen steeds verbeterd kunnen worden, tot enkel de lijnen van de restricties zelf overblijven.

  29. Grafische benadering y Restrictie machine A:3*x + 5*y = 30 Restrictie machine B:4*x + 2*y = 20 De optimale oplossing ligt ergens op deze rode lijn…maar dat zijn nog steeds oneindig veel punten . x

  30. Grafische benadering Even terzijde… Als je in “volledige” kasten en bureaus gaat rekenen dan zou je kunnen zeggen dat enkel de gehele getallen op de rode lijn in aanmerking komen als oplossing. Hoe kan je immers (bvb.) 3,5 kasten en 3 bureaus produceren? Bij lineair programmeren gaan we er echter vanuit dat de variabelen (=producten) oneindig vaak deelbaar, dus reële getallen, zijn. Dit omdat we anders met discontinue functies moeten werken wanneer we het probleem wiskundig proberen oplossen. Wanneer oplossingen enkel als gehele getallen mogen voorkomen, spreken we van “Integer Programming” (IP). IP-problemen zijn, door de discontinue natuur van de functies, bijzonder lastig om op te lossen. Om toch met deelbare getallen te kunnen werken kan je stellen dat we in het voorbeeld spreken over “duizenden” kasten en bureaus. Een oplossing van 3,5 kasten in het voorbeeld is staat dan eigenlijk gelijk aan 3500 te produceren kasten.

  31. Grafische benadering y Restrictie machine A:3*x + 5*y = 30 Laten we nu de objectieve functie erbij halen… Dit is een rechte met richtingscoëfficiënt (-2/3). Hoe verder de objectieve functie van de oorsprong ligt, hoe hoger de winst. Restrictie machine B:4*x + 2*y = 20 Winstfunctie:W = 2*x + 3*y x

  32. Grafische benadering Het optimale punt kan gevonden worden door de objectieve functie evenwijdig te verschuiven naar de oorsprong. Het “verste” snijpunt met de rode lijn (en dus ook met de oplossingenruimte) zal dan de beste toegelaten combinatie zijn die de onderneming kan produceren.

  33. Grafische benadering y Restrictie machine A:3*x + 5*y = 30 Restrictie machine B:4*x + 2*y = 20 Winstfunctie:W = 2*x + 3*y De oplossing! x

  34. Grafische benadering De oplossing ligt dus op het snijpunt van de beide restricties. Dit geen geen toeval. Bij LP-problemen zal de oplossingenruimte steeds bestaan uit een convexe veelhoek (het groene vlak). De optimale oplossing zal zich steeds op één van de hoekpunten bevinden. Hou echter altijd rekening met al je beperkingen!

  35. Grafische benadering Stel dat kasten slechts 1 euro winst zouden opleveren en dat bureaus 4 euro winst zouden opbrengen. De andere gegevens blijven dezelfde. De winstfunctie wordt dat: W = 1*x + 4*y

  36. Grafische benadering y De optimale oplossing ligt nu op een ander hoekpunt van de oplossingenruimte. Herinner je echter dat we bij de beperkingen tevens x >= 0 vermeld hadden opdat we geen “negatieve productie” konden bekomen? x = 0 is de vergelijking van de y-as! Het nieuwe optimum ligt dus opnieuw op het snijpunt van twee restricties – die van machine A en die die zegt dat er minstens 0 kasten geproduceerd moeten worden. De oplossingenruimte is nog steeds dezelfde. Restrictie machine A:3*x + 5*y = 30 Restrictie machine B:4*x + 2*y = 20 Winstfunctie:W = 1*x + 4*y x

  37. Mathematische benadering Uit voorgaande bespreking hebben we besloten dat de optimale oplossing van een LP-probleem zich steeds op een hoekpunt van de oplossingenruimte zal bevinden. Deze oplossingenruimte (het groene vlak op de figuren) wordt ook wel de “simplex” genoemd. Om de exacte combinatie te vinden die een maximale winst oplevert zullen we dus alle hoekpunten van de simplex moeten vinden en vervolgens voor elk van deze combinaties de waarde van de objectieve functie (de winst uit het voorbeeld) berekenen. De combinatie met de hoogste objectieve functie-waarde zal dan de optimale oplossing van ons probleem vormen.

  38. Mathematische benadering Er bestaat een algoritme dat het zoeken van deze optimale oplossing mogelijk maakt: de simplex-methode. Deze is gebasseerd op Gauss-transformaties van matrices en het zogenaamd “pivoteren”. Het voordeel van de simplex-methode is dat ze altijd toepasbaar is (ook wanneer we met meer dan 3 variabelen werken, waardoor we het probleem niet meer grafisch kunnen voorstellen!) en dat men gegarandeerd de optimale oplossing zal vinden – daar waar andere methoden soms enkele een “goede” oplossing zullen vinden en niet de beste. Het nadeel is dat ook eenvoudige problemen soms erg veel werk vergen om op te lossen.

  39. Mathematische benadering Herinner je ons voorbeeld. De probleemstelling hadden we wiskundig als volgt geformuleerd: Max(W = 2*x + 3*y) s.t. 3*x + 5*y <= 30 4*x + 2*y <= 20 x >= 0; y >= 0 We gaan deze set van vergelijkingen omzetten naar een zogenaamde “standaardvorm”. Hierbij zullen we proberen om de beperkingen om te zetten naar gelijkheden, in plaats van ongelijkheden.

  40. Mathematische benadering De objectieve functie zetten we om naar een vergelijking waarbij het rechterlid gelijk is aan nul. W = 2*x + 3*y <=> W – 2*x – 3*y = 0

  41. Mathematische benadering Om de restricties om te zetten naar gelijkheden zullen we wat meer kunst- en vliegwerk nodig hebben. We zullen hiervoor enkele nieuwe variabelen moeten invoeren, die we “slack-variabelen” zullen noemen. “Slack-variabelen” duiden in feite aan hoever een bepaalde oplossing van de beperking verwijderd is. Ons voorbeeld zal dit verduidelijken.

  42. Mathematische benadering Bekijk de beperking van machine A: 3*x + 5*y <= 30 Het linkerlid van de ongelijkheid zal dus steeds kleiner moeten zijn dan 30. Hoeveel kleiner? Laat ons deze waarde (de zogenoemde “slack”, wat Engels is voor “speling”) voorstellen door een variabele sa. sa is dus de hoeveelheid die je extra nodig hebt opdat het linkerlid (dat steeds kleiner of gelijk aan 30 moet zijn) gelijk te kunnen stellen aan 30. We kunnen dan de beperking van machine A omzetten naar: sa + 3*x + 5*y = 30 Merk op dat ya steeds >= 0 zal moeten zijn.

  43. Mathematische benadering We doen hetzelfde voor de beperking van machine B: 4*x + 2*y <= 20 <=> sb + 4*x + 2*y = 20 met sb >=0. De andere beperkingen (niet-negatief zijn van x, y, sa en sb hoeven niet omgezet te worden naar gelijkheden. De simplex-methode veronderstelt steeds dat alle variabelen (ook slack-variabelen) groter of gelijk aan nul moeten zijn. Wanneer je probleemstelling zegt dat een variabele kleiner dan nul zal moeten zijn, dan kan je dit oplossen door overal het tegengestelde te nemen van deze variabele. Als A <= 0 moet zijn, dat moet immers altijd gelden dat –A >= 0 !

  44. Mathematische benadering We hebben nu de standaardvorm van ons probleem: Max W – 2*x – 3*y + 0*sa + 0*sb = 0 s.t. 3*x + 5*y + 1*sa + 0*sb = 30 4*x + 2*y + 0*sa + 1*sb = 20 x, y, sa, sb >= 0. We kunnen dit omzetten naar een matrixvorm. Dit noemen we de “simplex-tableau”.

  45. Mathematische benadering In de kolommen komen de coëfficiënten van de verschillende variabelen. De rechterleden van de vergelijkingen komen uiterst rechts te staan. Wat die “basis” wil zeggen, daar komen we straks toe. In de eerste rij komen de coëfficiënten van de objectieve functie: 1*W – 2*x – 3*y + 0*sa + 0*sb = 0 1e simplex-tableau In de tweede rij komen de coëfficiënten van de eerste restrictie: 0*W + 3*x + 5*y + 1*sa + 0*sb = 30 In de derde rij komen de coëfficiënten van de tweede restrictie: 0*W + 4*x + 2*y + 0*sa + 1*sb = 20

  46. Mathematische benadering De simplex-methode bestaat uit 5 stappen: • Kies een basisoplossing • Kies een variabele om in de basis op te nemen • Bepaal het pivot-element en de pivot-rij • Veeg de kolom van de gekozen variabele leeg • Herhaal stappen 2 t.e.m. 4 tot de optimale oplossing gevonden is. In wat volgt zullen we deze stappen één voor één doorlopen en verduidelijken.

  47. Mathematische benadering • Kies een basisoplossing Dit is een willekeurige startoplossing die de restricties niet schendt. In ons voorbeeld kunnen we onmiddelijk een eenvoudige oplossing vinden: x = 0 en y = 0. Er is dan geen productie en de waarde van de objectieve functie (de winst) is dan gelijk aan 0. Ook zullen de machines zeker niet overbelast worden. Door de manier waarop we onze simplex-tableau opgesteld hebben staat deze startoplossing meteen klaar. De eerste kolom (basis) toont de variabelen die “in de basis opgenomen zijn”. In dit geval zijn dit enkel de slackvariabelen. Variabelen die geen deel uitmaken van de basis worden dan verondersteld 0 te zijn. Aangezien x en y gelijk zijn aan nul zal er veel ruimte zijn tussen de huidige oplossing en de beperkingen (de machineuren die we mogen gebruiken). Hoeveel ruimte? Dat kunnen we aflezen in de rechterkolom (RL) van de tableau.

  48. Mathematische benadering 1e simplex-tableau In onze startoplossing zijn x en y gelijk aan 0, wat betekent dat ze geen deel uitmaken van de basis. Enkel de slackvariabelen maken dus deel uit van de basis. De waarde van de basisvariabelen kan je steeds in de “RL” kolom aflezen. Zoals de tableau er nu staat zitten we dus bij de oplossing x = 0, y = 0 (want beide niet in basis), sa = 30 en sb = 20. Dit is logisch, want als de productie 0 is hebben we al onze machine-uren over! De coëfficiënten van de variabelen die deel uitmaken van de basis vormen samen steeds een eenheidsmatrix in de tableau.

  49. Mathematische benadering 2) Kies een variabele om in de basis op te nemen Vervolgens kiezen we een variabele waarvan we de waarde willen wijzigen. Logischerwijs zal je eerst meer gaan produceren van het product dat het meeste opbrengt (in dit geval bureaus, variabele y). In algemene termen kies je dus de variabele die de grootste (positieve) invloed heeft op je objectieve functie. In de tableau herken je deze variabele door in de rij van de doelfunctie te kijken welke variabele de meest negatieve coëfficiënt heeft. Klinkt dit onlogisch? Bedenk je dan dat we bij het omzetten van onze vergelijkingen naar de standaardvorm de termen van x en y van lid hebben moeten verwisselen in de objectieve functie. Wanneer alle coëfficiënten in de rij van de doelfunctie positief zijn, dan hebben we onze optimale oplossing gevonden. We kunnen deze dan aflezen uit de kolommen “basis” en “RL”.

  50. Mathematische benadering In de rij van de doelfunctie heeft variabele y de meest negatieve coëfficiënt. We kiezen dus om variabele y op te nemen in de basis. 1e simplex-tableau

More Related