Lineair programmeren

Lineair programmeren - ToolsHero

In dit artikel wordt lineair programmeren praktisch uitgelegd. Na het lezen begrijp je de basis van deze krachtige besluitvorming methode.

Wat is lineair programmeren?

Lineair programmeren is een wiskundige methode om te bepalen wat het meest optimale scenario is. De lineaire programmeertheorie kan ook een belangrijk onderdeel van operationeel onderzoek innemen. Het wordt veel gebruikt in het bedrijfsleven, maar kan ook worden gebruikt om bepaalde technische problemen op te lossen. Zo kan er gekeken worden welke combinatie de meeste winst oplevert of welke manier van transport het goedkoopst zal zijn. Daarmee leidt lineair programmeren tot optimalisering.

In de wiskunde is lineair programmeren bovendien een methode voor het oplossen van zogenaamde lineaire programmerings- en optimaliseringsproblemen, waarin zowel het einddoel als de randvoorwaarden alle lineair zijn. De term ‘programmering’ heeft overigens niets met een computerprogramma te maken, maar slaat terug op de betekenis van planning.

Oorsprong

Voor het eerste werd lineair programmeren in 1939 door de Russische wiskundige (en later Nobelprijswinnaar) Leonid Kantorovitsj genoemd in zijn ‘Wiskundige methoden in de organisatie en planning van de productie’. In 1947 was het de Amerikaans wiskundige George Dantzig welke wordt gezien als de vader van de lineaire programmering, die hier verder op bouwde. Voor het oplossen van planningsproblemen gebruikte hij de lineaire doelfunctie. Daarmee introduceerde hij een duidelijke scheiding tussen het optimalisatiedoel en de middelen om het planningsprobleem op te lossen. Ook de Amerikaanse luchtmacht ging Dantzig’s theorie toepassen om onder andere de militaire inzet en logistiek te verbeteren.

Algoritmes

Binnen het lineaire programmeren wordt veel gebruik gemaakt van algoritmes. Een algoritme is een eindige reeks opeenvolgende instructies, die vanuit een gegeven begintoestand naar een beoogd doel leidt en die gebruikt wordt om een probleem op te lossen. Het doel van een algoritme kan van alles zijn met een duidelijk resultaat. In het algemeen bevatten algoritmen stappen, die zich herhalen (iteratie) of die beslissingen vereisen om de taak te voltooien. Lineair programmeren gebruikt algoritmes om de uitkomst te optimaliseren, op basis van een aantal beperkingen. Deze lineaire beperkingen leiden tot het het toegelaten gebied, dat ook wel ‘convex veelvlak’ wordt genoemd. Binnen dit toegestane gebied zijn de meest optimale opties te vinden, die door wiskundige berekening tot stand zijn gekomen. Bovendien impliceert de lineaire doelstellingsfunctie dat de optimale oplossing, alleen op een grenspunt van het uitvoerbare gebied kan voorkomen.

Stappenplan

Om het lineaire model toe te passen, is het handig om volgens een stappenplan te werken:

Stap 1 – definieer de beslissingsvariabelen

Welke keuzes en/of mogelijkheden zijn er (variabelen), waarop gestuurd kan worden?

Stap 2 – definieer de doelstellingsfunctie

Wat is het einddoel dat men wil behalen? Dat kan een zo’n hoogst mogelijke opbrengst zijn of een zo’n laag mogelijke investering.

Stap 3 – definieer de beperkende voorwaarden

Hier gaat het om alle beperkingen die invloed hebben op de keuzes die gemaakt kunnen worden. Het is handig om de beperkende voorwaarden in een tabel te zetten, waardoor het visueel inzichtelijk wordt.

Stap 4 – tekenen van het toegestane gebied

Het gaat hier om het gebied, waarin wordt voldaan aan alle eerder gestelde voorwaarden. Als er binnen dit toegestane gebied wordt gebleven, is het doel bereikt en kan er bijvoorbeeld zo’n optimaal mogelijke winst gemaakt worden.

Stap 5 – berekenen van de combinatie voor een optimale omzet

In dit onderdeel wordt wiskundig berekend wat de meest optimale omzet is. Dit is te vinden op één van de hoekpunten de het toegestane gebied omlijnen. Aan de hand van een stelsel van wiskundige vergelijkingen wordt dit berekend.

Stap 6 – tekenen van de winstlijn

Met deze laatste stap kan er exact worden berekend wat de totale maximale omzet of winst is, als er voor een specifieke optie gekozen gaat worden.

Praktijkvoorbeeld

Stel dat een slijter de volgende producten ter beschikking heeft om mooie cadeaumanden samen te stellen, namelijk 50 flessen rode wijn, 80 flessen witte wijn en 80 flessen rosé. Hiermee kan hij twee soorten manden maken, waarbij hij een flinke opbrengst kan bewerkstellingen:

  1. De eerste cadeaumand is de rosémand waarin 10 rode wijn, 10 witte wijn en 20 rosé zitten. Deze mand kan worden verkocht voor € 140,-
  2. De tweede mand is de witte wijnmand, waarin 10 rode wijn, 20 witte wijn en 10 rosé wordt verkocht voor € 150,-

Het doel is dat hij zo’n hoog mogelijke opbrengst van de verkoop wil realiseren en dus moet de slijter weten hoeveel manden hij moet verkopen van elke soort. Hij werkt volgens het eerdergenoemde stappenplan:

1 – de beslissingsvariabelen zijn X = aantal rosémanden en Y = aantal witte wijnmanden.

2 – zijn doel is om een zo’n hoog mogelijke winst te behalen. Dit wordt de winstfunctie genoemd.
Opbrengst = 140 X (€ 140,- per rosémand) + 150 Y (€ 150,- per witte wijnmand)
In wiskundige formule is dat W (winstfunctie) = 140X + 150Y

3 – de beperkende voorwaarden zijn het aantal flessen wijn die de slijter ter beschikking heeft het volgende:

Lineair programmeren voorbeeld - ToolsHero

4 – op een Y-as en X-as worden de gegevens van de beperkende voorwaarden ingetekend in een grafiek, waardoor het toegestane gebied duidelijk wordt. Dit is het uiteindelijk gebied, waarin wordt voldaan aan alle eerder gestelde voorwaarden.

5 – als laatste wordt de combinatie van witte wijn- en rosémanden berekend om tot een optimale omzet te komen. Deze is te vinden op één van de hoekpunten van het toegestane gebied, aan de hand van een stelsel van vergelijkingen.

6 – in de laatste stap wordt ook de winstlijn in de grafiek getekend die visueel laat zien wat voor omzet er maximaal behaald kan worden met de verkoop van de witte wijnmanden én de rosémanden.

Nu is het jouw beurt

Wat denk jij? Ben jij bekend met lineair programmeren? Herken je de praktische uitleg of heb je aanvullingen? Hoe ga jij om met het nemen van beslissingen en welke tips kan je delen?

Deel jouw kennis en ervaring via het commentaar veld onderaan dit artikel.

Als je het artikel handig of praktisch vond voor jouw eigen kennis, deel dit vooral met jouw netwerk aan vrienden en zakenrelaties. Je kunt ons ook vinden op Facebook, LinkedIn en Twitter.

Meer informatie

  1. Dahleh, M. A., & Diaz-Bobillo, I. J. (1995). Control of uncertain systems: a linear programming approach. Englewood Cliffs: Prentice Hall.
  2. Dantzig, G. B. (1955). Upper bounds, secondary constraints, and block triangularity in linear programming. Econometrica: Journal of the Econometric Society, 174-183.
  3. Kantorovich, L. V. (1960, 1939). Mathematical methods of organizing and planning production. Management Science, 6(4), 366-422.
  4. Murty, K. G. (1983). Linear programming (Vol. 57). New York: Wiley.

Citatie voor dit artikel:
Mulder, P. (2018). Lineair programmeren. Retrieved [insert date] from ToolsHero: https://www.toolshero.nl/besluitvorming/lineair-programmeren/

Wilt u linken naar dit artikel, dat kan!
<a href=”https://www.toolshero.nl/besluitvorming/lineair-programmeren/>ToolsHero: Lineair programmeren</a>

Interessant artikel?
Geef je waardering of deel het artikel via social media!

LAAT EEN REACTIE ACHTER

Please enter your comment!
Please enter your name here