Inleiding tot Lineair Programmeren

Slides:



Advertisements
Verwante presentaties
Zelfstandig Leren Lezen
Advertisements

H3 Tweedegraads Verbanden
Sudoku puzzels: hoe los je ze op en hoe maak je ze?
Break-even-analyse oftewel “quitte spelen”
H 22: Kosten van een duurzaam produktiemiddel (dpm)
H1 Basis Rekenvaardigheden
H 44: Investeringsselectie
Het prijs- of marktmechanisme
Oerproducent (bijv. de veehouder)
Vervolgbijeenkomst 2 Procesfasering bij Leren Leren.
Welvaartsverlies Pareto-efficiëntie.
Winstmaximalisatie monopolist
Base: bewerkingen 2 soorten - Oplopend- Aflopend.
Inleiding: De bepaalde integraal
Het prijs- of marktmechanisme I
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
vwo A/C Samenvatting Hoofdstuk 5
De grafiek van een lineair verband is ALTIJD een rechte lijn.
BiO-M Wiskundig Modelleren BiO-M Wiskundig Modelleren Lineair Programmerings-modellen Hoorcollege 2.
Functies uit de economie in de wiskundeles
Totale Constante Kosten (TCK)
ribwis1 Toegepaste wiskunde – Exponentiele functies Lesweek 6
Hogere wiskunde Limieten college week 4
ribwis1 Toegepaste wiskunde – Exponentiele functies Lesweek 5
ribwis1 Toegepaste wiskunde Lesweek 01 – Deel B
Wat moet je leren: Heel hoofdstuk 3, behalve paragraaf 5
Exponentiële functies en logaritmische functies
Werkverslag. Inhoudsopgave Pag.1 wat hebben we gedaan in deze lessen?
H4 Differentiëren.
H2 Lineaire Verbanden.
De bordjes methode 8 x a Het bordje
MET DANK AAN COLLEGA’S IN DEN LANDE ! vee 2012
GELIJKNAMIGE BREUKEN les 31.
Hoeveelheidsaanpassing I
Hoeveelheidsaanpassing II
Investeringen Klik om verder te gaan. Hoe gebruik je deze uitleg? Je kunt in deze presentatie ‘bladeren’ door de pijltjestoetsen te gebruiken. Vooruit.
Wiskunde C, A, B of B&D?.
ribWBK11t Toegepaste wiskunde Lesweek 01
ANW Module 2 Leven Door Gabriella, Melanie, Elise en Fabienne van v4.
Vergelijkingen.
Basisboek Marketing Hoofdstuk 9 Prijs.
J. de Lange ECONOMIE HOE KUN JE DAT NOU MAKEN?. Winstberekening Belangrijk PROGRAMMA:
hoe kun je krachten grafisch ontbinden?
Verschillende rollen en stijlen
Les 3 - Operators Workshop Php Basic. ICT Academy Php Basic Content Operators Wiskundig Toewijzing Vergelijking.
Kansverdelingen Kansverdelingen Inleiding In deze presentatie gaan we kijken naar hoe kansen zijn verdeeld. We gaan in op verschillende.
Investeringsselectie Bij het beoordelen en selecteren van investeringen (overname,uitbreiding,nieuwe productielijn) maken ondernemingen gebruik van cashflow.
Hoofdstuk 6 Productie.
Hoofdstuk 9 M&O JUNI 2016 H3. Wat gaan we doen? - Hoofdstuk 9 M&O - Introductievragen - Uitleg / aantekeningen - Sommen maken.
Les 1. Wat voor les krijgen we nu? Tijdens de lessen over hoofdstuk 9, 10 en 11 krijg je op een andere manier les. Het doel is om je zelfstandigheid te.
De optimale productiegrootte (bij een markt van volkomen concurrentie)
Welkom havo 4..
De vraag is je beste vriend
Welkom VWO 5..
3.1 PRODUCTIE.
Deze les hfdst 1 verbanden gegevens verwerken
Lesbrief Vervoer H2.
Havo 4 Lesbrief Vervoer.
Havo 4 Lesbrief Vervoer.
verwarring begrippen omzet of winst
Hoofdstuk 9 M&O + in groepjes Havo3 iPad.
Welkom Havo 5..
Beste ath 4..
eenheden variabele productiefactor (arbeid) productie in aantallen
Welkom 8 mei 2018.
Break-Even Hoofdstuk 11 M&O.
De grafiek van een lineair verband is ALTIJD een rechte lijn.
3 vmbo-KGT Samenvatting Hoofdstuk 10
Extra uitleg H4 Domein Markten
Vergelijkingen van de vorm x + a = b oplossen
Transcript van de presentatie:

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 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.

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.

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.

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)

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

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?

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.

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

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

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).

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

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).

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

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.

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?”

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

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).

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.

Grafische benadering y x 12 11 10 9 8 7 6 5 4 3 2 1 In dit punt worden 3 kasten en 4 bureaus geproduceerd x

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

Enkel de combinaties in dit vlak kunnen geproduceerd worden Grafische benadering y 12 11 10 9 8 7 6 5 4 3 2 1 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 B overbelasten. Deze combinaties kunnen niet worden geproduceerd, men zou immers machine A overbelasten. Enkel de combinaties in dit vlak kunnen geproduceerd worden x

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.

Grafische benadering y x 12 11 10 9 8 7 6 5 4 3 2 1 Restrictie machine A: 3*x + 5*y = 30 Restrictie machine B: 4*x + 2*y = 20 x

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.

Grafische benadering y x 12 11 10 9 8 7 6 5 4 3 2 1 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 dan 2 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

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.

Grafische benadering y x 12 11 10 9 8 7 6 5 4 3 2 1 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

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.

Grafische benadering y x 12 11 10 9 8 7 6 5 4 3 2 1 Restrictie machine A: 3*x + 5*y = 30 Dit is een rechte met richtingscoëfficiënt (-2/3). Laten we nu de objectieve functie erbij halen… 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

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.

Grafische benadering y x De oplossing! 12 11 10 9 8 7 6 5 4 3 2 1 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

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!

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

Grafische benadering y x 12 11 10 9 8 7 6 5 4 3 2 1 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. 12 11 10 9 8 7 6 5 4 3 2 1 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

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.

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.

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.

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

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.

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.

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 !

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”.

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 Basis W x y sa sb RL 1 -2 -3 3 5 30 4 2 20 In de derde rij komen de coëfficiënten van de tweede restrictie: 0*W + 4*x + 2*y + 0*sa + 1*sb = 20

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.

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.

Mathematische benadering 1e simplex-tableau Basis W x y sa sb RL 1 -2 -3 3 5 30 4 2 20 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.

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”.

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 Basis W x y sa sb RL 1 -2 -3 3 5 30 4 2 20

Mathematische benadering 3) Bepaal het pivot-element en de pivot-rij Nu we weten welke variabele we willen opnemen in de basis, zullen we moeten proberen om met de cöefficiënten van de nieuwe basisvariabelen een eenheidsmatrix te vormen in de simplex-tableau. Daartoe zullen we door elementaire rij-bewerkingen toe te passen op de kolom van de gekozen variabele proberen schoonvegen. Maar, met welke rij zullen we deze bewerkingen dan uitvoeren? Om deze rij te bepalen delen we het RL van elke rij door de coëfficiënt van de in stap 2 gekozen variabele. De rij waar de uitkomst het laagste is, zal dan gebruikt worden om de kolom in kwestie schoon te vegen. We noemen deze rij de “pivot-rij”, en de coëfficiënt van de in de basis op te nemen variabele uit die rij wordt het “pivot-element” genoemd.

Mathematische benadering In stap 2 kozen we ervoor om variabele y in de basis op te nemen. 1e simplex-tableau Basis W x y sa sb RL 1 -2 -3 3 5 30 4 2 20 Omdat 6 kleiner is dan 10 kiezen we rij 2 als pivot-rij. De coëfficiënt van y in die rij (=5) wordt dan het pivot-element. We delen de waarde van het RL uit de 2e rij door de coëfficënt van variabele y uit dezelfde rij: 30 / 5 = 6 We doen hetzelfde voor de 3e rij: 20 / 2 = 10

Mathematische benadering 4) Veeg de kolom van de gekozen variabele leeg Dit wil zeggen dat we in de kolom van de gekozen variabele: De coëfficiënten van de niet-pivot-rijen op nul moeten krijgen door bij deze rijen een veelvoud van de pivotrij op te tellen. De pivot-rij moeten delen door het pivot-element. Door deze transformaties door te voeren zal de kolom van de gekozen variabele enkel nog uit nullen bestaan, behalve op de plaats van het pivot-element, waar een één zal komen te staan. De variabele die in de pivot-rij in de basis zat, zal door deze transformaties de basis verlaten. De variabele die we in stap 2 gekozen hebben zal zijn plaats innemen in de basis. We kunnen dan een nieuwe oplossing aflezen uit de simplex-tableau.

Mathematische benadering 1e simplex-tableau Om de coëfficiënt van y in rij 1 op nul te krijgen, zullen we rij 2, vermenigvuldigd met (3/5), bij rij 1 moeten optellen. (want: -3 + 5*(3/5) = 0) Basis W x y sa sb RL 1 -2 -3 3 5 30 4 2 20 In stap 3 kozen we de 2e rij als pivot-rij, met 5 als pivot-element.

Mathematische benadering Rij 1: + (3/5) * Rij 2 (3/5)* = 1 -2 -3 3 5 1 30 1 -1/5 3/5 18

Mathematische benadering 1e simplex-tableau Basis W x y sa sb RL 1 -1/5 3/5 18 3 5 30 4 2 20 Om de coëfficiënt van y in rij 3 op nul te krijgen, zullen we rij 2, vermenigvuldigd met (-2/5), bij rij 3 moeten optellen. (want: 2 + 5*(-2/5) = 0)

Mathematische benadering Rij 3: + (-2/5) * Rij 2 (-2/5)* = 4 2 1 20 3 5 1 30 14/5 -2/5 1 8

Mathematische benadering 1e simplex-tableau Basis W x y sa sb RL 1 -1/5 3/5 18 3 5 30 14/5 -2/5 8 Om de coëfficiënt van y in rij 2 op één te krijgen, zullen we rij 2 moeten delen door het pivot-element (want: 5/5 = 1).

Mathematische benadering Rij 2 / 5: (1/5)* = 3 5 1 30 3/5 1 1/5 6

Mathematische benadering 2e simplex-tableau Basis W x y sa sb RL 1 -1/5 3/5 18 1/5 6 14/5 -2/5 8 Variabele y vervangt variabele sa in de basis. De kolom met de coëfficiënten van sa kan geen deel meer uitmaken van een eenheidsmatrix. Door het uitvoeren van deze transformaties vormen de kolommen met de coëfficiënten van y en sb nu samen een eenheidsmatrix. We bekomen een nieuwe oplossing van ons LP-probleem: x = 0 (niet in de basis), y = 6, sa = 0 (niet in de basis), sb = 8. De waarde van de objectieve functie bedraagt 18 (aflezen in RL).

Mathematische benadering Even terug naar de grafiek… y 12 11 10 9 8 7 6 5 4 3 2 1 Restrictie machine A: 3*x + 5*y = 30 De slack-variabele sa verdween dan uit de basis: ze werd nul omdat we in dit punt reeds maximaal gebruik maken van machine A. Restrictie machine B: 4*x + 2*y = 20 Na één iteratie van de simplex-methode bekwamen we een oplossing van x = 0, y = 6. Winstfunctie: W = 2*x + 3*y De slack was dan maximaal (sa = 30, sb = 20), we hadden immers al onze machine-uren nog over. De basisoplossing van onze simplex-tableau was x = 0, y = 0. x

Mathematische benadering Via de simplex-methode zijn we dus “versprongen” van de oplossing (0,0), op het snijpunt van restricties x >= 0 en y >= 0, naar de oplossing (0,6), op het snijpunt van restricties x >= 0 en 3*x + 5*x <= 30 (machine A). Door, vertrekkende van onze nieuwe simplextableau, stappen 2 t.e.m. 4 van de methode te herhalen, kunnen we verder “springen” naar een nieuwe (betere?) oplossing.

Mathematische benadering 2e simplex-tableau Basis W x y sa sb RL 1 -1/5 3/5 18 1/5 6 14/5 -2/5 8 We kiezen variabele x, want die heeft de meest negatieve coëfficiënt in de rij van de objectieve functie. 2) Kies een variabele om in de basis op te nemen. Welke zou jij kiezen?

Mathematische benadering 2e simplex-tableau Basis W x y sa sb RL 1 -1/5 3/5 18 1/5 6 14/5 -2/5 8 6/(3/5) = 10 We kiezen de derde rij omdat de waarde van het RL, gedeeld door de coëfficiënt van x in deze rij, hier het laagst is. 8/(14/5) = 40/14 = 2,86 3) Bepaal het pivot-element en de pivot-rij. Welke rij zou jij nemen?

Mathematische benadering 2e simplex-tableau Rij 1 + (1/14)*Rij 3 (want: -1/5 + (1/14)*(14/5) = 0) Basis W x y sa sb RL 1 -1/5 3/5 18 1/5 6 14/5 -2/5 8 Rij 2 + (-3/14)*Rij 3 (want: 3/5 + (-3/14)*(14/5) = 0) Rij 3*(5/14) (want: (14/5)*(5/14) = 1) 4) Veeg de kolom van de gekozen variabele leeg Welke transformaties moet je hiervoor doorvoeren?

Mathematische benadering Rij 1: + (1/14) * Rij 3 (1/14)* = 1 -1/5 3/5 18 14/5 -2/5 1 8 1 0,57 0,07 18,57

Mathematische benadering Rij 2: + (-3/14) * Rij 3 (-3/14)* = 3/5 1 1/5 6 14/5 -2/5 1 8 1 0,29 -0,21 4,29

Mathematische benadering Rij 3 * 5/14: (5/14)* = 14/5 -2/5 1 8 1 -0,14 0,36 2,86

Mathematische benadering 3e simplex-tableau Basis W x y sa sb RL 1 0,57 0,07 18,57 0,29 -0,21 4,29 -0,14 0,36 2,86 We kunnen de oplossing waarin we ons nu bevinden aflezen in de tableau: x = 2,86 y = 4,29 De doelfunctie heeft een waarde van 18,57. Variable sb heeft plaats moeten maken in de basis voor variabele x. Variabele x en y vormen samen een eenheidsmatrix. Ze maken nu beide deel uit van de basis.

Mathematische benadering Kunnen we deze oplossing nog verbeteren? Basis W x y sa sb RL 1 0,57 0,07 18,57 0,29 -0,21 4,29 -0,14 0,36 2,86 Geen enkele van de coëfficiënten in de rij van de objectieve functie heeft nog een negatieve waarde. We kunnen dus geen verbetering van de waarde van de doelfunctie meer bekomen. We hebben (eindelijk) de optimale oplossing van ons LP-probleem gevonden! 2) Kies een variabele om in de basis op te nemen. Welke zou jij kiezen?

Mathematische benadering De gevonden oplossing is: x = 2,86 ; y = 4,29. De waarde van de doelfunctie die met deze oplossing overeen stemt is 18,57. We moeten dus 2,86 (kan je ook bekijken als 2860) kasten en 4,29 (of 4290) bureaus produceren om een maximale winst van 18,57 (18570) euro te bereiken. Je kan de winst ook berekenen door de gevonden waarden voor x en y in te vullen in de doelfunctie: 2 euro * 2,86 kasten + 3 euro *4,29 bureaus = 18,59 euro (de afwijking met de gevonden W is het gevolg van een afrondingsfout voor de waarden van x en y).

Mathematische benadering Vergelijk met de grafische benadering: y 12 11 10 9 8 7 6 5 4 3 2 1 Restrictie machine A: 3*x + 5*y = 30 Restrictie machine B: 4*x + 2*y = 20 Winstfunctie: W = 2*x + 3*y x = 2,86 en y = 4,29…dat zou wel eens kunnen kloppen! x

Conclusie Lineare programmering (LP) is een techniek die toelaat om reële optimaliseringsvraagstukken wiskundig te vertalen en aan te pakken. De techniek wordt vaak gebruikt bij het bepalen van productiequota, maar ook bij het oplossen van transportvraagstukken en voorraadbeheer. LP-problemen zijn van nature uit niet eenvoudig om op te lossen. Via het simplex-algoritme, dat gebruikt maakt van Gauss-transformaties op de matrixvorm van het probleem, kan men toch op (relatief) eenvoudige wijze de optimale oplossing construeren. Waneer er slechts 2 of 3 variabelen zijn, kan men deze oplossing ook grafisch verifiëren.

Meer informatie http://www.isa.ewi.tudelft.nl/~melissen/Onderwijs/IN4142%20Operations%20Research/sheets/sheets2.doc Word-bestand over de theoretische onderbouw van de simplex-methode. http://www.wisfaq.nl/top.htm?url=http://ingenieur.kahosl.be/personeel/greet.vandenberghe/Datastructuren/LineairProgrammeren.pdf Presentatie over lineair programmeren met enkele uitgewerkte voorbeelden. http://www.wiskundeonline.nl/LP_lees_mij_eerst.htm Nederlandse website waarin de basis van lineair programmeren en het gebruik van simplex-tableaus haarfijn wordt uitgelegd.

Begrippen Bij het opzoeken van informatie zal je veel begrippen tegen komen die niet aan bod kwamen in deze presentatie. Wat volgt zijn enkele beknopte definities van termen die veel gebruikt worden in de literatuur omtrent LP.

Begrippen Feasible region: de verzameling van de oplossingen die de beperkingen niet schenden. In feite een andere naam voor “de simplex” dus. Grafisch: het groene vlak uit het voorbeeld. Infeasible region: gebied met combinaties die de restricties schenden. Grafisch: de gele vlakken uit het voorbeeld. Infeasible problem: wanneer een probleem niet oplosbaar is, bijvoorbeeld omdat de restricties geen overlappend gebied hebben met toegelaten oplossing (bvb. Als x > 5 moet zijn maar tegelijkertijd ook < 3). Unbound (onbegrensd): wanneer er onvoldoende beperkingen zijn, of wanneer de simplex niet langs alle zijden begrensd is door restricties. De doelfunctie kan dan onbeperkt toenemen, er is geen optimale oplossing.

Begrippen Redundancy: wanneer een restrictie onnodig is omdat de simplex reeds in een vlak ligt dat (omwille van een andere beperking) volledig omhuld ligt door de restrictie (bvb. x < 5 én x < 3: de eerste restrictie is redundant). Dualiteit, duaal probleem: elk LP-probleem kan voorgesteld worden door een ander (duaal) probleem met dezelfde oplossing. Bvb., een maximaliseringsvraagstuk van de winst zou je ook kunnen opvatten als een minimaliserings-vraagstuk van de kosten. Big M: Voor sommige vraagstukken moet men in de beperkingen een kunstmatige variabele invoeren. Opdat een gevonden oplossing aanvaardbaar zou zijn, moet deze kunstmatige variabele gelijk zijn aan 0. Om dit te garanderen wordt in dat geval in de doelfunctie de kunstmatige variabele vermenigvuldigd met het getal ‘M’, wat “monstrously large number” wil zeggen. Heb je bvb. een doelfunctie max.(x+y) en een variabele q waarvan je wil dat deze 0 wordt, dan kan je de doelfunctie veranderen in max.(x+y-M*q). Doordat je M zo groot veronderstelt, zal je algoritme automatisch neigen naar een oplossing waar q = 0 is. (Voor een voorbeeld, zie http://www.wiskundeonline.nl/LP_Big_M.htm).

Begrippen Schaduwprijs, shadow price: de waarde die de objectieve functie zou stijgen wanneer het rechterlid van één van de beperkingen met één eenheid verhoogd zou worden. In ons voorbeeld: wanneer machine A of B één uur langer gebruikt zou mogen worden, dan zou de verhoging van de winst die hieruit resulteert de schaduwprijs zijn van dat ene machine-uur.