• No results found

Automatisch geroosterd :

N/A
N/A
Protected

Academic year: 2021

Share "Automatisch geroosterd :"

Copied!
96
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Automatisch geroosterd

Master Operations research and management

Universiteit van Amsterdam

Faculteit economie en bedrijfskunde

Afdeling kwantitatieve economie

Logica

Eindversie

Datum:

16 juli 2008

Eerste beoordelaar:

Cees Duin

Tweede beoordelaar:

Anton Volgenant

Naam: Petra

Veerman

Studentnummer: 0418471

(2)

Versiebeheer

Versie Omschrijving

v 0.1 Opmaak scriptie en inleiding en globale beschrijving probleemstructuur v 0.2 Vorige versie aangevuld met input, output en randvoorwaarden, wiskundig model en literatuuronderzoek tot 1-04-2008 v 0.3

Aanpassingen na feedback Hans Brouwer, Charles Liefting en Cees Duin en uitbreiding verslaglegging literatuuronderzoek

v 0.4 Aanpassingen na feedback Cees Duin, afronding literatuuronderzoek en een eerste deel van de analyse v 0.5 Afronding analyse, ontwikkeling algoritme en ontwikkeling raamwerk v 0.6 Resultaten en analyse heuristiek, beschrijving verbeteringen

v 0.7 Resultaten verbeteringen heuristiek, analyse en conclusie v 1.0 beta Verwerking feedback en verdere resultaatverwerking v 1.0 Laatste feedback verwerkt

(3)

Abstract

Het automatiseren van het roosteren van taken en middelen kan veel tijd besparen. Voor veel verschillende branches worden roosters gegenereerd, rekeninghoudend met algemene en branchespecifieke regels. De bedoeling is dat een zo goed mogelijk rooster ontwikkeld wordt, waarbij taken aan middelen zijn toegewezen op een bepaalde tijd en plaats, zodat aan alle randvoorwaarden is voldaan.

In de literatuur worden veel verschillende algoritmen en heuristieken (benaderend

algoritme) gebruikt voor planningsproblemen. Al deze algoritmen en heuristieken hebben hun eigen toepassingsgebied en voor- en nadelen. Als we de algoritmen en heuristieken tegen elkaar afwegen door te kijken naar de rekentijd, flexibiliteit en toepasbaarheid op het planningsprobleem, blijkt dat een combinatie van de voordelen van bepaalde algoritmen en heuristieken tot een efficiënte heuristiek kan leiden. Een intuïtieve heuristiek die gebruik kan maken van de voordelen van de verschillende algoritmen en heuristieken is de variable en value ordering heuristiek.

Bij de variable en value ordering heuristiek wordt eerst de taak geselecteerd die ‘het beste’ ingeroosterd kan worden en vervolgens wordt het middel geselecteerd waarbij de taak ‘het beste’ ingeroosterd kan worden. De beste taak is die taak die het moeilijkst ingeroosterd kan worden, ofwel het kleinste aantal mogelijke middelen ter beschikking heeft. Het beste middel is het middel dat het minste aantal uren toegewezen heeft gekregen ten opzichte van het aantal contracturen.

Bepaalde kenmerken van de diensten, taken en middelen delen het planningsprobleem op in verschillende probleemgebieden. In een raamwerk worden aanpassingen op de heuristiek beschreven. Het basisprobleem waarvoor de heuristiek is geprogrammeerd is het probleem waarbij diensten elk half uur kunnen beginnen, taken vaste tijden en één kwalificatie hebben en middelen meerdere kwalificaties en gedeeltelijk bekende diensten hebben. De heuristiek is toegepast op een kleine en een grote testcase. In relatief korte tijd werd het overgrote deel van de taken ingeroosterd. Bij de kleine testcase was echter meteen al zichtbaar dat er nog het een en ander aan het rooster kan worden verbeterd. Daarom is de heuristiek op basis van de analyse van de resultaten verbeterd. De analyse van de resultaten leidde tot de volgende verbeteringen:

• Aanpassingen aan de heuristiek

o Duur van de taken wordt meegenomen

o Toekomstige mogelijke taken in uren van de middelen wordt meegenomen • Toevoegen van een verbeterstap (De simulated annealing heuristiek)

De aangepaste heuristiek met verbeterstap is weer toegepast op de kleine en de grote testcase, waaruit blijkt dat de combinatie van aanpassingen op de heuristiek en het

toevoegen van de verbeterstap leidt tot betere roosters. Voor verdere verbetering moet een afweging worden gemaakt tussen toename in rekentijd en kwaliteit van het rooster.

(4)

Voorwoord

Ter afsluiting van mijn master “operations research and management” aan de universiteit van Amsterdam (UvA) heb ik een afstudeerstage bij Logica mogen doen.

Logica is een internationale dienstverlener en levert diensten als management- en ict-consultancy, systeemontwikkeling en het beheer van bedrijfsprocessen. Logica heeft wereldwijd 39 000 werknemers in 36 landen. Het bedrijf ontwikkelt en implementeert oplossingen voor klanten over de hele wereld en maakt daarbij gebruik van geavanceerde technologieën. Logica heeft dit verwoord in haar mission statement:

“To help leading organisations worldwide achieve their business objectives through the

innovative delivery of information technology and business process solutions”

(www.logica.com).

Het afstudeerprogramma Working Tomorrow biedt plaats aan afstudeerders van HBO en WO opleidingen om te werken aan een innovatieve opdracht. Mijn afstudeeropdracht valt onder de divisie Industrie, Distributie en Transport (IDT) en daarbinnen onder de Business Unit (BU) system development (SD).

Ik heb voor een stage bij Logica gekozen vanwege de open bedrijfscultuur, de

uiteenlopende disciplines en vanwege het speciale afstudeerprogramma. Ik heb een hele leuke tijd gehad tijdens mijn stage, veel geleerd en kennis mogen maken met het bedrijf Logica.

Bij de afdeling Working Tomorrow, heb ik gewerkt aan de afstudeeropdracht automatisch

geroosterd. Hierbij werd ik goed begeleid door de begeleiders van Working Tomorrow en

andere collega’s van Logica. Met name door mijn architecten Hans Brouwer, Co Kooijman en Huub van Thienen, projectleiders Charles Liefting en Ingrid van Zaanen en mijn mentor bij de BU Ruud Rietveld. Deze wil ik hierbij dan ook hartelijk bedanken. Ook wil ik Sander Bruins en Edwin Bannenberg bedanken voor de hulp bij mijn opdracht vanuit de BU.

Verder wil ik Carin Spijk, Nilco Boven, Mariette Wiemer, Wieke de Vries en Herman Meeuwsen bedanken voor hun input.

Ten slotte wil ik Cees Duin bedanken voor de begeleiding vanuit de UvA en het regelmatig doornemen van en feedback geven op mijn scriptie.

(5)

Inhoudsopgave

VERSIEBEHEER... 2 ABSTRACT ... 3 VOORWOORD ... 4 INHOUDSOPGAVE ... 5 1 INLEIDING... 7 1.1 PROBLEEMSTELLING... 7 1.2 DOELSTELLING... 8 1.3 WERKWIJZE... 8

1.4 OPBOUW VAN DE SCRIPTIE... 8

2 PROBLEEMSTRUCTUUR ... 9 2.1 OBJECTEN EN DIMENSIES... 9 2.1.1 Middelen ... 10 2.1.2 Taken ... 10 2.1.3 Plaats... 11 2.1.4 Tijd... 11 2.2 INPUT... 11 2.3 OUTPUT... 12 2.4 RANDVOORWAARDEN... 12 2.5 OPTIMALISATIECRITERIA... 14 2.6 PROBLEEMVRAAG... 15 3 WISKUNDIG MODEL ... 16 3.1 INDICES... 16 3.2 VARIABELEN... 16 3.3 PARAMETERS... 17 3.4 CRITERIUMFUNCTIE... 17 3.5 RANDVOORWAARDEN... 17 3.6 OPMERKINGEN... 21 4 LITERATUURONDERZOEK ... 22 4.1 MATHEMATISCHE PROGRAMMERING... 22

4.1.1 Set covering, set partitioning en set packing ... 23

4.1.2 Branch-and-bound... 24 4.1.3 Branch-and-price... 25 4.1.4 Lagrange... 28 4.2 CONSTRAINT PROGRAMMING... 29 4.3 PRUNING HEURISTIEKEN... 30 4.3.1 Breadth-first... 31 4.3.2 Depth-first... 31 4.4 DYNAMISCH PROGRAMMEREN... 32 4.5 LOKALE ZOEKMETHODEN... 33 4.5.1 Tabu search ... 34 4.5.2 Simulated annealing ... 35 4.5.3 Genetische algoritmen ... 36 4.6 DISPATCHING RULES... 39 4.6.1 Bin packing ... 40

(6)

4.7 GRAAF ALGORITMEN... 41

4.7.1 Shifting bottleneck heuristiek... 41

4.7.2 Node colouring heuristiek... 41

4.7.3 Matching... 42

4.8 OVERIGE ALGORITMEN EN HEURISTIEKEN... 43

4.8.1 Reservation model ... 43

4.8.2 Vehicle routing probleem ... 44

5 DE ANALYSE... 46

5.1 CRITERIA... 46

5.2 ANALYSE VAN DE ALGORITMEN EN HEURISTIEKEN... 46

6 DE VARIABLE EN VALUE ORDERING HEURISTIEK... 53

6.1 RELATIES MET STANDAARD ALGORITMEN EN HEURISTIEKEN... 53

6.2 ONTWIKKELING VAN DE HEURISTIEK... 54

6.3 COMPLEXITEIT VAN DE HEURISTIEK... 58

7 HET RAAMWERK ... 61

7.1 OPDELING VAN HET PROBLEEMGEBIED... 61

7.2 AANPASSINGEN HEURISTIEK... 63

8 RESULTATEN VAN DE BASISHEURISTIEK... 66

8.1 TESTCASES... 66

8.2 DE KLEINE TESTCASE... 66

8.3 DE GROTE TESTCASE... 69

9 VERBETERINGEN VAN DE HEURISTIEK ... 71

9.1 MOGELIJKE AANPASSINGEN VAN DE HEURISTIEK... 71

9.2 BESCHRIJVING VAN DE VERBETERSTAP... 73

9.2.1 Uitwerking simulated annealing ... 74

10 ENKELE RESULTATEN ... 78

10.1 RESULTATEN NA AANPASSING HEURISTIEK... 78

10.2 RESULTATEN NA TOEVOEGEN VERBETERSTAP... 80

10.2.1 Basisheuristiek met verbeterstap ... 81

10.2.2 Aangepaste heuristiek met verbeterstap... 83

11 CONCLUSIES... 87 LITERATUURLIJST ... 90 BOEKEN:... 90 ARTIKELEN:... 90 BIJLAGEN... 93 BIJLAGE A ... 93 BIJLAGE B ... 94

(7)

1 Inleiding

In alle branches worden personeel en taken geroosterd. Het plannen van personeel en taken is tijdrovend. Een grote hoeveelheid planwerk zou door een automaat kunnen worden overgenomen. Planningssoftware kan een fikse besparing opleveren bij het roosteren van personeel en taken, doordat er minder tijd nodig is voor de planning en een goed rooster wordt gegenereerd. Daarom is het gewenst het planningsproces verder te automatiseren. De software helpt de planner rekening te houden met allerlei randvoorwaarden aan de

planning, zoals wetgeving, cao’s en andere regels en voorkeuren. Een roosterautomaat kan hierbij uitkomst bieden.

1.1

Probleemstelling

Het is de bedoeling dat een rooster voor verschillende branches gegenereerd kan worden. Het onderzoek beperkt zich tot het plannen van renewables (herinzetbare middelen zoals personen en apparatuur). Efficiënte planningsalgoritmen worden gezocht of ontwikkeld die geschikt zijn het probleem of delen van het probleem. Voor verschillende

probleemgebieden kan een raamwerk worden ontwikkeld, waarbij per probleemgebied een algoritme kan worden ontwikkeld. Het algoritme moet later in een roosterautomaat worden geplaatst. Hiermee wordt bij het onderzoek rekening gehouden, maar het plaatsen zelf is geen onderdeel van het onderzoek.

De onderzoeksvraag is dan ook:

Is het mogelijk een raamwerk van efficiënte algoritmen te ontwikkelen voor het planningsproces binnen een roosterautomaat rekeninghoudend met verschillende voorwaarden, wetten en regels?

Om deze onderzoeksvraag te kunnen beantwoorden moeten de volgende deelvragen worden beantwoord:

• Wat zijn de input, de output en de randvoorwaarden van de planning? • Hoe flexibel moet met de regels van de planning kunnen worden omgegaan? • Welke algoritmen zijn geschikt, rekening houdend met de geldende regels? • Welke algoritmen zijn er voor welke delen van het probleemgebied? • Op basis van welke criteria wordt een algoritme gekozen/ontwikkeld? • In hoeverre kan een algoritme nog worden verbeterd?

• Is het rooster dat volgt uit het planningsproces op basis van het raamwerk gewenst? Bij het planningsproces spelen verschillende randvoorwaarden een rol, bijvoorbeeld

randvoorwaarden met betrekking tot het tijdsaspect. Taken moeten op of voor een bepaalde tijd worden uitgevoerd. Personeel mag wettelijk gezien niet meer dan een bepaalde

hoeveelheid uren werken op een dag en moet dan een bepaald aantal uren rust hebben. Apparatuur heeft op bepaalde tijden onderhoud nodig. Verder moet ook rekening gehouden worden met de voorkeuren van het personeel, liever geen nachtdienst of roostervrij op

(8)

vrijdag. Daarnaast bestaan er planningseisen aangaande kwalificaties die een middel heeft en voor een taak nodig zijn. Al deze randvoorwaarden worden meegenomen in het

planningsproces en zijn per branche verschillend.

1.2

Doelstelling

Het doel is efficiënte algoritmen in kaart brengen voor het automatisch genereren van een rooster voor renewables voor verschillende branches. Met deze algoritmen wordt een raamwerk ontwikkeld voor het gehele planningsprobleem. Voor één probleemgebied wordt het algoritme geprogrammeerd met als doel automatisch een rooster te genereren.

1.3

Werkwijze

Door de input, output en randvoorwaarden vast te leggen, wordt de probleemstructuur bepaald. Dan wordt gezocht naar geschikte algoritmen voor deze probleemstructuur. Op basis van een analyse van de geschikte algoritmen wordt in kaart gebracht welke

algoritmen voor welk probleemgebied gebruikt zouden moeten worden. Hierbij wordt eerst het gehele probleem opgedeeld in probleemgebieden. De algoritmen kunnen op een aantal manieren worden bepaald:

• één van de geschikte algoritmen wordt gekozen • een algoritme wordt ontwikkeld door

o een combinatie te maken van verschillende bestaande algoritmen o een bestaand algoritme aan te passen aan de probleemstructuur

Als voor alle delen van het probleemgebied een algoritme is gekozen/ontwikkeld, dan wordt een raamwerk gemaakt voor het planningsproces voor het hele probleemgebied. Voor een deel van het probleemgebied wordt dan het raamwerk geprogrammeerd in Delphi. Met behulp van deze demo kunnen de resultaten worden geanalyseerd. Op basis van deze analyse kan het algoritme in het raamwerk worden aangepast of kan een

verbeterstap aan het algoritme worden toegevoegd. De demo wordt aangepast, waarna de uiteindelijke resultaten worden geanalyseerd en conclusies worden getrokken.

1.4

Opbouw van de scriptie

In hoofdstuk 2 wordt de probleemstructuur beschreven, hierbij worden de input en verwachte output, de verschillende randvoorwaarden van de planning en de criteria

beschreven. In hoofdstuk 3 volgt een wiskundige weergave van het probleem. Hoofdstuk 4 bevat de verslaglegging van het literatuuronderzoek naar geschikte algoritmen. De analyse van de beschreven algoritmen en de daaruit volgende motivatie voor de ontwikkeling of de keuze van een algoritme wordt beschreven in hoofdstuk 5. In hoofdstuk 6 volgt de

uitwerking van het algoritme voor het basisprobleem. In hoofdstuk 7 worden de verschillende probleemgebieden gedefinieerd met daarbij een beschrijving van de aanpassingen op de heuristiek voor de verschillende probleemgebieden. In hoofdstuk 8 worden de resultaten geanalyseerd. De ontwikkeling van een verbeterstap en de aanpassing van het algoritme staat in hoofdstuk 9 beschreven. Daarna volgen in hoofdstuk 10 de uiteindelijke resultaten. Tot slot worden de conclusies gepresenteerd in hoofdstuk 11.

(9)

2 Probleemstructuur

In dit hoofdstuk wordt de probleemstructuur van het planningsprobleem behandeld. Een roosterautomaat moet flexibel te gebruiken zijn voor verschillende branches, dus is voor de globale beschrijving van de probleemstructuur naar een aantal branches gekeken. Om de probleemstructuur te kunnen beschrijven worden belangrijke elementen van het probleem besproken, zoals de objecten, de input, output, de randvoorwaarden en tot slot de

optimalisatiecriteria.

2.1

Objecten en dimensies

Op de eerste plaats worden in het planningsprobleem twee objecten onderscheiden: • Middelen

• Taken

Daarnaast worden twee dimensies van deze objecten onderscheiden: • Plaats

• Tijd

De objecten en dimensies hebben een belangrijke rol in de structuur van het probleem. Ieder object heeft eigen kenmerken. Omdat de objecten vaak zullen terugkomen in de beschrijving van de probleemstructuur, worden van ieder object en elke dimensie

afzonderlijk de kenmerken beschreven. Daarbij worden ook enkele voorbeelden gegeven zodat duidelijk is dat de objecten bruikbaar zijn voor verschillende planningen,

bijvoorbeeld personeelsplanning. In figuur 1 zijn de relaties tussen de verschillende objecten en dimensies weergegeven en wordt bij elk een tweetal voorbeelden gegeven.

M id d e le n T ijd T a k e n P la a ts K w a lific a tie s B e s c h ik b a a r U it te v o e re n P e rs o n e n A m s te rd a m A fd e lin g 1 0 M a d a g d ie n s t D o 1 3 .0 0 -1 5 .0 0 O p s ta rte n m a c h in e B e v e ilig in g n a c h t A p p a ra tu u r

(10)

2.1.1 Middelen

Het belangrijkste kenmerk van het object middelen is dat een middel een bepaalde kwalificatie heeft. Beschikbare middelen en de kwalificaties die een middel heeft zijn als vaste input gegeven. Gedurende het planningsproces verandert in principe niets aan een middel, maar de beschikbaarheid van een middel kan wel veranderen. Het object middelen kan dus niet helemaal als een statisch object worden gezien. Over het algemeen kunnen middelen één keer per tijdseenheid worden ingezet. Als een middel meerdere taken tegelijkertijd kan uitvoeren kan dit worden aangegeven bij de randvoorwaarden. De beschikbaarheid van een middel komt verder bij de beschrijving van de randvoorwaarden terug.

Als we kijken naar personeelsplanning, dan is elk personeelslid een middel met bepaalde kwalificaties. De kwalificaties kunnen bijvoorbeeld de functie zijn van het personeelslid. En wanneer we gaan kijken naar de planning van apparatuur dan is elk apparaat een middel met bepaalde functies. Ook ruimten kunnen als middel worden beschouwd. Grondstoffen worden in dit onderzoek niet verder bekeken omdat deze niet renewable zijn. Renewables kunnen binnen de planningshorizon de volgende tijdseenheid, of na een bepaalde rusttijd, weer worden ingezet. Als een middel niet meer beschikbaar is of bijvoorbeeld andere kwalificaties heeft is dit over het algemeen bekend, voordat met roosteren wordt begonnen voor de hele planningshorizon. Realtime veranderingen worden niet meegenomen in de roosterautomaat, dit wordt door de planner of door een manager handmatig bijgehouden. Bijvoorbeeld bij een ontslag is dit geruime tijd vooraf bekend en plotselinge ziekte behoort tot realtime veranderingen. Grondstoffen zijn middelen die worden verbruikt bij het

uitvoeren van een taak, deze kunnen niet opnieuw worden ingezet binnen de planningshorizon en zijn dus niet renewable.

2.1.2 Taken

Het belangrijkste kenmerk van het object taken in het planningsprobleem is dat voor de uitvoer van een taak een middel nodig is met bepaalde kwalificaties. Net als bij de middelen zijn ook de taken en de daarvoor benodigde kwalificaties zijn input van het planningsproces en kunnen als statische objecten worden beschouwd.

Belangrijke kenmerken van de taken voor de probleemstructuur zijn: • Elke taak wordt één keer uitgevoerd.

• Elke taak wordt door één middel uitgevoerd.

• Elke taak wordt uitgevoerd in een gegeven tijdsinterval, gelijk aan of groter dan de uitvoeringstijd.

Als een handeling nog eens moet worden uitgevoerd, dan wordt dit gezien als nieuwe taak. Ook als een taak door meerdere middelen moet worden uitgevoerd, wordt de taak

opgesplitst. Als input wordt de taak dan twee keer meegegeven, eventueel met

verschillende vereiste kwalificaties. Als voorwaarde kan dan worden meegenomen dat de taken tegelijkertijd worden uitgevoerd. Zo blijven deze kenmerken van het object taken behouden.

Verder zijn er ook geen volgorde relaties tussen de taken. De taken zijn dus onderling onafhankelijk van elkaar.

(11)

Tot slot wordt aangenomen dat een taak in zijn geheel wordt uitgevoerd, een taak wordt niet onderbroken om tussentijds een andere taak uit te voeren, dit wordt non-preëmptive genoemd. Ook kan een taak niet halverwege worden overgenomen door een ander middel. Taken zijn vrijwel altijd te onderscheiden. Bij personeelsplanning gaat het om te verrichten taken, maar ook als er apparatuur nodig is gaat het om een taak die uitgevoerd moet

worden. Een taak kan nog wel op verschillende manieren gedefinieerd worden,

bijvoorbeeld door een taak op te splitsen in subtaken waarbij van alle taken de tijdsduur gelijk is aan de gebruikte tijdseenheid. Dit kan voor sommige algoritmen het probleem vergemakkelijken.

2.1.3 Plaats

De dimensie plaats kan een vaste locatie zijn waar bepaalde middelen altijd werken. Bijvoorbeeld kunnen machines een vaste plaats hebben en ruimten hebben altijd een vaste plaats. Personen kunnen vaak op meerdere plaatsen worden ingezet, bijvoorbeeld op verschillende afdelingen of zelfs in verschillende vestigingen van een bedrijf.

Voor taken geldt dat deze meestal aan een vaste plaats verbonden zijn, bijvoorbeeld iets dat moet worden beveiligd staat op een vaste plaats.

Middelen kunnen op slechts één plaats tegelijkertijd zijn en als middelen naar een andere plaats moeten kost dit tijd. Van elk middel kan een plaats of een aantal plaatsen worden gegeven waar deze zich kan bevinden. In de voorkeuren van een middel kan worden opgenomen dat deze niet te lang wil reizen.

2.1.4 Tijd

De dimensie tijd voegt het tijdsaspect toe aan de objecten: taken moeten of kunnen alleen op een bepaalde tijd worden uitgevoerd en middelen zijn alleen op een bepaalde tijd beschikbaar. Vanwege het tijdsaspect is een statische planning niet mogelijk; de objecten moeten dynamisch worden gepland. Omdat de planningsperiode als input is gegeven zullen sommige algoritmen de planning van de objecten toch statisch benaderen. Bij

personeelsplanning is de dimensie tijd aanwezig in de vorm van een dienst.

De dimensie tijd kan in het planningsproces in een eerder stadium worden gepland,

bijvoorbeeld door eerst diensten te vormen van verschillende taken en daarna personeel op deze diensten te plannen. Het eerder plannen van deze dimensie kan het planningsproces vergemakkelijken, maar het is algemeen bekend dat zo niet altijd een rooster gegenereerd wordt dat beter aan de criteria voldoet.

2.2

Input

De objecten en hun dimensies vormen de belangrijkste input van het probleem en bepalen het grootste gedeelte van de probleemstructuur. Bijvoorbeeld de middelen en de

kwalificaties die deze hebben en hun beschikbaarheid, de uit te voeren taken met de kwalificaties die deze nodig hebben en de tijd en plaats van uitvoering.

Daarnaast is ook de periode waarvoor het rooster gemaakt moet worden input van het planningsprobleem. De periode bestaat uit een start- en einddatum. In sommige gevallen is het handig dat ook gegevens van het rooster van voor deze periode worden meegegeven, zodat daar rekening mee gehouden kan worden. Ook kan een gedeelte van het rooster al

(12)

zijn ingevuld en als input worden meegegeven. Deze input kan als vaststaand worden meegenomen, maar ook kan worden aangegeven dat deze input tijdens het roosteren nog veranderd mag worden.

De overige input wordt gegeven in de vorm van scenario’s. In een scenario is bijvoorbeeld vastgelegd welke randvoorwaarden wel en welke niet gelden bij het planningsproces. Een scenario is dus een verzameling van randvoorwaarden die horen bij een specifiek

planningsprobleem. De randvoorwaarden worden in paragraaf 2.4 besproken.

2.3

Output

De output van het planningsproces is een rooster, elk middel krijgt taken toegewezen in de dimensies plaats en tijd. Bij voorkeur worden meerdere alternatieven gegenereerd. Dit kan bijvoorbeeld door een startrooster te genereren en de alternatieven te laten volgen uit een verbeterstap. Bij voorkeur moet het planningsproces herhaalbaar zijn, dus bij gelijke input en randvoorwaarden, moet elke keer hetzelfde rooster worden gegenereerd. In het rooster worden de combinaties van middelen, taken en plaats en tijd die zijn ingeroosterd

overzichtelijk weergegeven voor de hele planningshorizon.

Voor ieder rooster wordt ook een criteriumwaarde vastgesteld. Deze waarde geeft aan of het rooster goed of minder goed voldoet aan de vastgestelde criteria. De criteria zijn flexibel, wat betekent dat de criteria veranderd kunnen worden. Zodoende kunnen roosters aan de hand van verschillende criteria worden getest. Ook kan een mix van criteria worden meegegeven met een wegingsfactor voor elk meegenomen criterium. Bijvoorbeeld kan een taak die niet wordt ingeroosterd met factor 100 worden gewogen en het aantal overuren met factor 5, een taak niet inroosteren wordt dan belangrijker geacht dan een uur overwerken. Op die manier worden zowel het aantal overuren geminimaliseerd als het aantal ingeroosterde taken gemaximaliseerd en door de wegingsfactor wordt het relatieve belang van de twee criteria meegenomen.

Een roosterautomaat wordt ontwikkeld voor het grove planwerk, dus kan het zo zijn dat niet het hele rooster ingevuld is, maar een gedeelte is open gelaten. Dit moet dan later door de planner handmatig ingevuld worden, dus wordt er aangegeven welke taken nog niet ingeroosterd zijn en wanneer welke middelen nog beschikbaar zijn.

2.4

Randvoorwaarden

Omdat de roosterautomaat flexibel moet zijn, moeten de randvoorwaarden in principe helemaal vrij ingevuld kunnen worden. Een aantal randvoorwaarden zal bijna altijd gelden in het planproces, bijvoorbeeld dat een persoon maar één taak tegelijkertijd kan uitvoeren. Deze randvoorwaarden kunnen echter aangepast worden, als bijvoorbeeld een machine meerdere taken tegelijkertijd kan uitvoeren, dan moet in plaats van een 1 het maximale aantal in de randvoorwaarden worden opgenomen.

Daarnaast zijn er randvoorwaarden die verschillen per branche of zelfs per organisatie, dit zijn dan branchespecifieke randvoorwaarden. Bij de input van het planningsproces kan worden aangegeven welke randvoorwaarden van toepassing zijn door middel van het kiezen van een scenario. Voordat met het daadwerkelijke plannen wordt begonnen zijn de geldende randvoorwaarden bepaald. Deze randvoorwaarden veranderen gedurende het

(13)

planningsproces niet. Wel kunnen randvoorwaarden worden geanalyseerd door meerdere keren een rooster te genereren met verschillende randvoorwaarden als input. Door de veranderingen in het rooster te bekijken kan de invloed van een randvoorwaarde worden bepaald.

Een aantal randvoorwaarden die algemeen bij het genereren van een rooster, maar soms in een iets andere vorm, gelden zijn:

• De randvoorwaarde met betrekking tot de kwalificaties van taken en middelen. Deze zorgen ervoor dat de kwalificaties van een middel overeenkomen met de benodigde kwalificaties van de taak waarop het middel wordt ingeroosterd. De randvoorwaarde van kwalificatie kan zowel als harde en als zachte

randvoorwaarde worden opgenomen. Er kan een minimum aan kwalificatie worden

geëist, waarbij overkwalificatie is toegestaan. Als overkwalificatie ongewenst is, kunnen hiervoor penaltykosten worden geïntroduceerd. Wanneer eerst diensten worden gevormd van de verschillende taken, dan heeft elke dienst de kwalificatie-eisen van de taken die in deze dienst zijn opgenomen. Dit kan tot moeilijkheden leiden, omdat een dienst op die manier een onmogelijke combinatie van

kwalificaties kan krijgen. Hiermee moet bij het vormen van de diensten rekening worden gehouden.

• Randvoorwaarden met betrekking tot de beschikbaarheid van middelen. Denk daarbij bijvoorbeeld aan arbeidswetten en cao regels met betrekking tot de arbeidstijden. Bijvoorbeeld randvoorwaarden voor de maximale werkduur

(gedeeltelijk zachte randvoorwaarde middels overwerk), voor de minimale rusttijd en voor toegelaten werktijden. Personeel is bijvoorbeeld niet beschikbaar wanneer al het maximale aantal uren is gewerkt of op werktijden die in een bepaalde branche niet zijn toegelaten. Apparatuur moet misschien na elke 12 uur een onderhoudsbeurt van een uur ondergaan en is dan niet beschikbaar. Dit soort randvoorwaarden zal algemeen aanwezig zijn, maar zal wel per branche en organisatie verschillen. • Randvoorwaarden met betrekking tot de plaats waar een middel zich bevindt. Er

kan sprake zijn van een vaste plaats zijn of van een bepaald aantal plaatsen waar het middel kan worden ingezet. Bovendien kost het tijd om van de ene naar de andere plaats te gaan tussen twee taken door. Tot slot kan een middel maar op één plaats tegelijk zijn. Ook deze randvoorwaarden zullen over het algemeen gelden, maar kunnen verschillen per branche.

• Randvoorwaarden met betrekking tot de tijd en plaats waarop een taak uitgevoerd moet worden. Soms moet een taak op één bepaalde tijd worden uitgevoerd en soms is sprake van een tijdslot. Als er sprake is van een tijdslot dan kan vanaf een

bepaalde tijd met de taak worden begonnen en moet een taak voor een bepaalde tijd zijn afgerond. Randvoorwaarden met tijdseisen voor een taak zijn er altijd, maar kunnen ook weer verschillen tussen de branches en organisaties.

• Randvoorwaarden met betrekking tot de evenredige werkverdeling tussen middelen. Dus bijvoorbeeld niet één persoon laten overwerken, terwijl een ander zit te

wachten op werk. En voor apparatuur geldt dat het ene apparaat sneller versleten zal zijn dan het andere apparaat wanneer het werk niet evenredig wordt verdeeld.

(14)

• Randvoorwaarden met betrekking tot de prioriteiten van taken. Deze

randvoorwaarden moeten instelbaar zijn, zodat de prioriteiten kunnen variëren over de tijd en per afdeling van de organisatie. Bijvoorbeeld zijn er taken die

automatisch moeten worden ingeroosterd en taken die later handmatig kunnen worden ingeroosterd.

• Randvoorwaarden die ervoor zorgen dat er voor een middel genoeg tijd zit tussen taken als deze op verschillende plaatsen uitgevoerd moeten worden.

Naast deze randvoorwaarden die over het algemeen zullen gelden voor het planningsproces zijn er nog heel veel randvoorwaarden te bedenken die per organisatie gelden. Omdat het om een flexibele roosterautomaat gaat, moet met zoveel mogelijk soorten randvoorwaarden rekening kunnen worden gehouden. Nog een paar voorbeelden:

• Zo hebben sommige organisaties te maken met wisselingen in vraag en willen de bezetting op basis daarvan kunnen veranderen.

• Ook is het soms gewenst een beperking op te leggen aan het aantal verschillende taken dat een middel mag uitvoeren. Zo kan een persoon zich specialiseren in bepaalde taken of een specialistische machine worden aangeschaft die liever niet omgeschakeld moet worden.

• Verder kunnen er wensen zijn met betrekking tot het flexibel omgaan met

kwalificatie-eisen. Bijvoorbeeld in plaats van normaal gekwalificeerde middelen, een beter gekwalificeerd middel en een minder gekwalificeerde middel samen een taak laten uitvoeren.

• Dan zijn er nog organisaties die bepaalde patronen in de diensten willen, om zo een bepaalde mate van structuur te bieden aan de middelen. Bijvoorbeeld altijd twee nachtdiensten, dan een avonddienst en dan twee dagdiensten na elkaar.

Niet alle randvoorwaarden kunnen hier worden beschreven, omdat het aantal mogelijke randvoorwaarden onbeperkt is.

Bij het ontwikkelen van het raamwerk met algoritmen wordt rekening gehouden met het toevoegen en aanpassen van randvoorwaarden. Één van de beoordelingscriteria van de algoritmen is dus hoe flexibel een algoritme kan omgaan met extra randvoorwaarden. In hoofdstuk 3 worden de randvoorwaarden wiskundig beschreven. Net als in dit hoofdstuk zijn ook in het wiskundige model niet alle mogelijke randvoorwaarden opgenomen.

2.5

Optimalisatiecriteria

Optimalisatiecriteria zijn randvoorwaarden die niet per se moeten gelden, maar de weergeven wanneer een rooster gewenst is.

Optimalisatiecriteria worden op twee manieren gebruikt.

• Ten eerste wordt de doorslag bij een keuze tijdens de planning gemaakt op basis van een optimalisatiecriterium, tijdens het genereren van een rooster

• Ten tweede worden de gegenereerde roosters met elkaar vergeleken op basis van de criteria, na het genereren van een rooster.

(15)

Bij de eerste manier kan bijvoorbeeld een taak volgens de randvoorwaarden op zondag bij twee middelen ingepland worden. Het ene middel liever op zaterdag wil werken dan op zondag terwijl het andere middel heeft geen voorkeur. Wanneer als criterium meegenomen wordt dat zoveel mogelijk aan de voorkeuren wordt voldaan wordt de taak geplaatst bij het middel zonder voorkeuren. De doorslag voor deze keuze wordt gegeven door het

optimalisatiecriterium. Nadat een rooster is gegenereerd kan de tweede manier worden gebruikt om verschillende roosters met elkaar te vergelijken. Een rooster waarbij de taak bij het middel zonder voorkeuren is ingeroosterd is beter dan het rooster waar de taak bij het middel met voorkeuren is ingeroosterd bij beoordeling met bovenstaand

optimalisatiecriterium en aangenomen dat de rest van het rooster hetzelfde is.

In bepaalde gevallen kan een rooster worden gegenereerd dat niet voldoet aan de

randvoorwaarden, maar dat toch kan worden vergeleken met andere roosters op basis van de optimalisatiecriteria. De randvoorwaarden worden dan meegenomen als criteria en elk rooster krijgt een bepaalde waarde aan de hand van het voldoen aan de criteria. Dit zijn dan zachte randvoorwaarden, want aan de harde randvoorwaarden moet altijd worden voldaan. Het optimalisatiecriterium moet flexibel zijn. Er kunnen bijvoorbeeld meerdere roosters worden gegenereerd, waarbij voor ieder rooster een ander optimalisatiecriterium is gebruikt tijdens het planningsproces. Optimalisatiecriteria kunnen conflicteren met elkaar,

bijvoorbeeld taken sneller uitvoeren en lagere kosten. Als taken sneller uitgevoerd moeten worden zijn er vaak duurdere middelen nodig, waardoor de kosten juist stijgen. Hoe meer criteria worden gebruikt des te groter de kans dat deze elkaar tegenspreken.

Andere voorbeelden van optimalisatiecriteria betreffen het minimaliseren van de afstand die middelen moeten afleggen of betreffen het bereiken van een zo evenredig mogelijke werkverdeling.

2.6

Probleemvraag

De algemene vraag van een planningsprobleem is:

Wat is de beste manier om taken aan middelen toe te wijzen op een bepaalde plaats en tijd, zodat aan alle randvoorwaarden wordt voldaan en zoveel als mogelijk aan de

optimalisatiecriteria?

Het toewijzen van taken gebeurt op basis van de input en de output zoals beschreven in paragraaf 2.2 en 2.3. De beste manier wordt bepaald door de mate waarin de oplossing voldoet aan de optimalisatiecriteria. De taken en middelen hebben de in paragraaf 2.1 beschreven kenmerken en aan de randvoorwaarden, zoals een aantal is beschreven in paragraaf 2.4, moet worden voldaan.

Net zoals taken aan middelen kunnen worden toegewezen kunnen, middelen ook aan taken worden toegewezen. De voorkeur voor de manier waarop naar het planningsproces wordt gekeken hangt af van het algoritme of de heuristiek.

Een rooster moet dus aan alle randvoorwaarden voldoen (must) en zou zoveel mogelijk aan de optimalisatiecriteria moeten voldoen (should).

(16)

3 Wiskundig model

In dit hoofdstuk wordt de probleemstructuur, die is beschreven in hoofdstuk 2, wiskundig weergegeven. Eerst worden de indices, de variabelen en de parameters van het probleem besproken. Daarna volgt een wiskundig model met criteriumfunctie en randvoorwaarden. Het probleem beschreven in hoofdstuk 2 kan op verschillende manieren wiskundig worden weergegeven. Onderstaande manier van weergeven vormt geen beperking voor de

algoritmen in het te ontwikkelen raamwerk. Het is puur een wiskundige weergave ter verduidelijking van het probleem. Ter afsluiting van het hoofdstuk volgen nog een aantal opmerkingen over het wiskundige model.

3.1

Indices

Middel i = 1,..., M

Taak j = 1,…, N

Plaats k = 1,…, K (als eindig aantal plaatsen te onderscheiden)

Tijd t = 1,…, T (Interval van een half uur, met T een veelvoud van 48)

Dag dag = 1,…,T/48

3.2

Variabelen

1 als middel taak op plaats en in tijdsinterval gaat uitvoeren 0 anders ijkt i j k t x ⎧⎨ ⎩

=

1 als middel op plaats en in tijdsinterval beschikbaar is 0 anders

ikt

i k t

y = ⎨⎧

1 als taak op plaats en in tijdsinterval uitgevoerd gaat worden 0 anders jkt j k t w ⎧⎨ ⎩ =

1 als taak niet ingeroosterd wordt 0 anders j j v = ⎨⎧ ⎩

1 als op taak een onder- of overgekwalificeerd middel wordt geroosterd 0 anders j j o = ⎧ ⎨ ⎩ , i dag

overwerk = het aantal tijdseenheden overwerk van middel i op dag.

{ ,..., }

j j j j

sR DP = de tijd waarop met taak j wordt begonnen (R, D, P zie 3.3)

,

1 als middel op een dagdienst heeft 0 anders i dag i dag dagdienst = ⎨⎧ ⎩ ,

1 als middel op een avonddienst heeft 0 anders i dag i dag avonddienst = ⎨⎧ ⎩ ,

1 als middel op een nachtdienst heeft 0 anders

i dag i dag nachtdienst = ⎨⎧ ⎩

(17)

3.3

Parameters

Maxdag, Mindag en Maxoverwerk zijn parameters.

2 als middel de juiste kwaliteiten heeft om taak uit te voeren 1 als middel minder geschikt is om taak uit te voeren

0 als middel niet ges ij

i j

Q i j

i

=

chikt is om taak uit te voeren j

⎧ ⎪ ⎨ ⎪ ⎩ ' '

1 als taak en taak tegelijkertijd uitgevoerd moeten worden 0 anders jj j j G = ⎧⎨ ⎩

1 als taak ingeroosterd moet worden 0 anders j j Prior = ⎨⎧ ⎩ {1,..., } j

RT de vroegst mogelijke starttijd van taak j

{1,..., }

j

DT de laatst mogelijke eindtijd van taak j

j

P = de duur van taak j

j

B = (minimale) bezetting van taak j (kan soms afhangen van vraag) Evenredig = evenredige werkverdeling tussen de verschillende middelen Ddag = de duur van een dagdienst

Davond = de duur van een avonddienst Dnacht = de duur van een nachtdienst Sdag = de starttijd van de dagdienst Edag = de eindtijd van de dagdienst Savond = de starttijd van de avonddienst Eavond = de eindtijd van de avonddienst Snacht = de starttijd van de nachtdienst Enacht = de eindtijd van de nachtdienst

,

i dag

Aantalpauzes = aantal pauzes dat middel i op dag heeft Poverwerk = penaltykosten voor overwerk

Pprior = penaltykosten voor het niet uitvoeren van een taak Pkwalificatie = penaltykosten voor onder- en overkwalificatie

3.4

Criteriumfunctie

Als criteria zijn het aantal ingeroosterde taken, over- en onderkwalificatie en overwerk gekozen. Met penalty’s worden deze criteria meegenomen.

Minimaliseer /48 , 1 1 1 ( * * ) * N M T j j i dag j i dag

Pprior v Pkwalificatie o Poverwerk overwerk

= = =

+ +

∑ ∑

3.5

Randvoorwaarden

Net als in hoofdstuk 2 worden vooral voorbeelden van randvoorwaarden gegeven; niet alle mogelijke randvoorwaarden worden hier beschreven en wiskundig weergegeven.

(18)

Voorwaardenset (1) laat zien dat elk middel maar één taak toegewezen kan krijgen per tijdseenheid en alleen als het middel op de betreffende tijd en plaats beschikbaar is. (1) 1 , , N ijkt ikt j x y i k t = ≤ ∀

Uit voorwaardenset (2) blijkt dat middel i taak j op plaats k en tijd t alleen kan uitvoeren als taak j op plaats k en tijdstip t uitgevoerd gaat worden.

(2) 1 , , M ijkt jkt i x w j k t = = ∀

Voorwaardenset (3) representeert de prioriteit van taak j, ofwel of taak j ingeroosterd moet worden of niet per se.

(3) vj ≤ −(1 Priorj) ∀ j

Voorwaardenset (4) regelt dat elke taak maar één keer wordt toegewezen voor de duur en de bezetting van taak j. Verder wordt ervoor gezorgd dat taak j of helemaal uitgevoerd wordt of helemaal niet aan de taak wordt gewerkt als taak j niet per se ingeroosterd moet worden. (4) 1 1 1 * M K T ijkt j j j j j i k t x B P v B P j = = = + = ∀

∑∑∑

Voorwaardenset (5)zorgt ervoor dat een taak niet onderbroken wordt, dus aan één stuk helemaal wordt uitgevoerd.

(5) 1 1 1 1 2 M K T ijkt ijkt i k t x x j = = = − = ∀

∑∑∑

Bepaalde taken moeten tegelijkertijd worden uitgevoerd, bijvoorbeeld omdat een onderliggende taak opgedeeld is. Dit wordt beschreven in voorwaardenset (6).

(6) ' ' ' 1 1 , ,( , ) met G 1 M M ijkt ij kt jj i i x x k t j j = = = ∀ =

Voorwaardenset (7) zorgt ervoor dat taak j alleen aan middel i toegewezen mag worden als

i de juiste kwalificatie heeft om taak j uit te kunnen voeren. En als er sprake is van onder-

of overkwalificatie dan worden daarvoor penaltykosten berekend.

(7) 2* 1 1 , K T ijkt k t ij j j x Q o i j P = = +

∑∑

De voorwaarden bij (8) laten zien dat er minimaal een bepaald aantal tijdseenheden per dag gewerkt moet worden. Een vrije dag zou dan als taak kunnen worden ingeroosterd, zodat

(19)

altijd aan het minimum wordt voldaan. Ook deze randvoorwaarden kunnen worden aangepast naar tijdseenheden per week, per maand of per jaar.

(8) *48 1 1 ( 1)*48 1 , dag N K ijkt j k t dag x Mindag i dag = = = − + ≥ ∀

∑∑ ∑

In voorwaardenset (9) staat dat een middel maximaal maxdag plus overwerk tijdseenheden beschikbaar kan zijn per dag. Overwerk kan nu met penalty kosten worden opgenomen in de criteriumfunctie. Deze randvoorwaarden kunnen zo aangepast worden dat ook een maximum aantal tijdseenheden kan gelden per week, per maand of per jaar.

(9) *48 , 1 1 ( 1)*48 1 , dag N K ijkt i dag j k t dag

x Maxdag overwerk i dag

= = = − +

≤ + ∀

∑∑ ∑

Er mag ook slechts een maximaal aantal tijdseenheden worden overgewerkt, dit is in voorwaardenset (10) beschreven.

(10) overwerki dag,Maxoverwerk ,∀i dag

Voorwaardenset (11) voorkomt gebroken diensten, alleen aan het einde en aan het begin van de dag een overgang naar wel/niet actief plaatsvindt en in de pauzes die middel i heeft. (11) *48 1 , 1 1 ( 1)*48 1 2 2* , dag N K

ijkt ijkt i dag j k t dag

x x Aantalpauzes i dag

= = = − +

− = + ∀

∑∑ ∑

Voorwaardenset (12) staat voor de evenredige werkverdeling tussen de verschillende middelen over de gehele planningsperiode of aan te passen naar week en/of dag. Voor een evenredige verdeling wordt vaak gekozen omdat voor personen een eerlijke werkverdeling motiverend is en bij apparatuur is de slijtage gelijk.

(12) ' ' 1 1 1 1 1 1 max N K T N K T i ijkt i jkt j k t j k t x x Evenredig i = = = = = = ⎛ ⎞ − ≤ ∀ ⎜ ⎟ ⎝

∑∑∑

∑∑∑

Voorwaardensets (13) tot en met (15) laten zien wanneer een taak uitgevoerd kan worden als dit niet op een vast moment moet gebeuren. Taak j moet aan één stuk helemaal

uitgevoerd worden tussen de vroegste mogelijk start- en laatste mogelijke eindtijd. Daarvoor en daarna mag de taak dus niet meer worden uitgevoerd. Als de taken niet flexibel uit te voeren zijn, dan is de laatst mogelijke eindtijd minus de vroegst mogelijke starttijd precies gelijk aan de duur van de taak. Voorwaardenset (14) komt overeen met voorwaardenset (4), alleen sommeert de laatste over alle tijdseenheden, terwijl het gaat om de tijdseenheden waarop taak j uitgevoerd mag worden.

(13) 1 1 1 =0 j R M K ijkt i k t x j = = = ∀

∑∑∑

(14) 1 1 * j j D M K ijkt j j j j j i k t R x B P v B P j = = = + = ∀

∑∑ ∑

(20)

(15) 1 1 =0 j M K T ijkt i k t D x j = = = ∀

∑∑ ∑

Voorwaardensets (16), (17), (18) zijn er om vast te stellen of middel i op dag een bepaalde dienst heeft, bijvoorbeeld dag-, avond- of nachtdienst. En voorwaardenset (19) voorkomt dat een middel meerdere diensten per dag heeft. Voorwaardensets (16) tot en met (25) kunnen alleen gelden als er sprake is van vaste diensten. Dus niet wanneer op elke t kan worden begonnen met een dienst.

(16) 24*( 1) , 1 1 24*( 1) * , Edag dag N K ijkt i dag j k t Sdag dag

x Ddag dagdienst i dag

+ − = = = + − ≤ ∀

∑∑

(17) 24*( 1) , 1 1 24*( 1) * , Eavond dag N K ijkt i dag j k t Savond dag

x Davond avonddienst i dag

+ − = = = + − ≤ ∀

∑∑

(18) 24*( 1) , 1 1 24*( 1) * , Enacht dag N K ijkt i dag j k t Snacht dag

x Dnacht nachtdienst i dag

+ −

= = = + −

≤ ∀

∑∑

(19) dagdiensti dag, +avonddiensti dag, +nachtdiensti dag, ≤1 ,∀i dag Ook diensten kunnen aan restricties gebonden zijn, bijvoorbeeld door een bepaald

dienstpatroon. Met voorwaardensets (20) tot en met (25) wordt een voorbeeld gegeven van het patroon D/D/A/N/N/A in de diensten, waarbij D voor dagdienst staat, A voor

avonddienst en N voor nachtdienst. Voorwaardenset (20) geeft aan dat wanneer er twee dagen terug een dagdienst was en één dag terug ook, dat dan vandaag een avonddienst gedraaid wordt.

(dag>2, of laatste twee dagen van voor de planningsperiode meegeven).

(20) dagdiensti dag,2+dagdiensti dag,1avonddiensti dag, +1 ,∀i dag > 2 (21) dagdiensti dag,2+avonddiensti dag,1nachtdiensti dag, +1 ,∀i dag> 2 (22) avonddiensti dag, 2+nachtdiensti dag, 1nachtdiensti dag, +1 ,∀i dag> 2 (23) nachtdiensti dag, 2 +nachtdiensti dag, 1avonddiensti dag, +1 ,∀i dag> 2 (24) nachtdiensti dag, 2+avonddiensti dag, 1dagdiensti dag, +1 ,∀i dag> 2 (25) avonddiensti dag,2+dagdiensti dag,1dagdiensti dag, +1 ,∀i dag > 2

(21)

3.6

Opmerkingen

Bovenstaande randvoorwaarden kunnen ook op andere manieren worden weergegeven en worden aangepast naar de wensen van de organisatie. Niet alle randvoorwaarden hoeven te gelden en er kunnen ook andere randvoorwaarden gelden die niet zijn beschreven. In deze paragraaf nog een aantal opmerkingen over mogelijke aanpassingen van het model, de wiskundige weergave en de interpretatie.

Type taken en middelen. In plaats van met aantal middelen en taken kan ook gewerkt

worden met typen middelen en taken. Er is dan een bepaald aantal middelen of taken van elk type. In dat geval moeten wel een aantal randvoorwaarden anders worden weergegeven. Dit is een keuze van weergave. Als het voor de interpretatie van een algoritme handiger is, kan het model worden omgeschreven.

Tijdseenheden. De tijd is opgedeeld in tijdseenheden van halve uren, dus een dag is 48

tijdseenheden. Er is gekozen voor halve uren, omdat taken en diensten vaak op hele en halve uren beginnen. Als echter wordt gepland in andere tijdseenheden, bijvoorbeeld in kwartieren, dan kan dit worden aangepast. Er moet echter wel rekening worden gehouden met een grote toename in het aantal variabelen en randvoorwaarden. Wanneer van halve uren naar kwartieren wordt gegaan wordt het aantal variabelen twee keer zo groot, maar ook het aantal randvoorwaarden dat voor elke tijdseenheid geldt wordt twee keer zo groot.

Variabel of input. Variabelen y en ikt w kunnen ook als input worden meegegeven, in dat ikt

geval zijn y en ikt w parameters. Zij worden als input meegegeven als vooraf vaststaat ikt

wanneer een middel beschikbaar is en als van de taken al is bepaald waar en wanneer deze uitgevoerd moeten worden. Ten slotte kan er ook voor worden gekozen een gedeelte van

ikt

y en w als input mee te geven en de rest als variabel te beschouwen. ikt

Starttijden. Variabele s wordt niet gebruikt in het wiskundige model, maar kan gebruikt j

worden om de starttijd van taak j aan te geven. Op die manier kan het model anders worden beschreven en zouden minder variabelen kunnen worden gebruikt. Er zijn op die manier echter wel meer randvoorwaarden nodig. Deze afweging kan worden gemaakt bij het ontwikkelen van het raamwerk.

Penalty’s. In de criteriumfunctie kunnen nog vele andere penalty’s worden opgenomen. De

hoogte van de penalty’s kan worden gevarieerd. Op die manier kunnen belangrijke criteria zwaarder worden meegewogen dan minder belangrijke criteria.

Lineair model. Sommige randvoorwaarden zijn in het wiskundige model niet lineair

weergegeven, bijvoorbeeld randvoorwaarden sets (5), (10) en (11). Door deze

randvoorwaarden op een andere manier weer te geven kan van dit wiskundige model een lineair programmeringsmodel worden gemaakt. Hiervoor is in dit hoofdstuk niet gekozen, omdat soms minder overzichtelijk wordt wat de randvoorwaarden dan betekenen en er dan extra hulpvariabelen nodig zijn.

(22)

4 Literatuuronderzoek

Dit hoofdstuk is de verslaglegging van het literatuuronderzoek naar geschikte algoritmen en heuristieken waarbij rekening wordt gehouden met de probleemstructuur. Tot nu toe is alleen over algoritmen gesproken, er is echter een verschil tussen algoritmen en

heuristieken. Een algoritme geeft een optimale oplossing van het probleem en een

heuristiek geeft een zo goed mogelijke benadering van de optimale oplossing en wordt dus ook wel een benaderingsalgoritme genoemd.

In dit hoofdstuk wordt per algoritme of heuristiek eerst de werking beschreven en daarna de toepassingen zoals die in de literatuur zijn beschreven.

4.1

Mathematische programmering

In de mathematische programmering wordt een criteriumfunctie geoptimaliseerd onder een aantal gelijkheid- en ongelijkheidsvoorwaarden. Als de criteriumfunctie en de

randvoorwaarden lineair zijn en de variabelen zijn continue getallen (reals), dan wordt gesproken van lineaire programmering (LP). Wanneer alle variabelen gehele getallen (integers) zijn, spreken we van integere lineaire programmering (ILP). Als er zowel reals als integers zijn, dan spreken we van mixed integer lineaire programmering (MILP). De algemene vorm van het bijbehorende model is:

Maximaliseer cx

onder Axb (matrix A bevat alle randvoorwaarden)

0

x (sommige x integer)

De variabele x in het model is een vector met de beslissingsvariabelen. In de matrix A en de vector b zijn de randvoorwaarden opgenomen. Bij mathematische programmering kunnen heel gemakkelijk randvoorwaarden worden geformuleerd en toegevoegd. Des te meer randvoorwaarden, des te kleiner de oplossingsruimte en des te kleiner de kans om snel een toegelaten of optimale oplossing te vinden. Als randvoorwaarden elkaar tegenspreken dan is er geen toegelaten oplossing (Hillier en Lieberman, 2005, pp. 25-60).

Voor LP formuleringen wordt de simplex methode gebruikt om het probleem op te lossen. De simplex methode is een efficiënt algoritme dat snel een optimale oplossing voor het probleem vindt (Hillier en Lieberman, 2005, pp. 103-201).

Wanneer er geheeltalligheidseisen aan de variabelen zijn, zoals in (M)ILP formuleringen, dan is het optimalisatieprobleem meestal NP-hard. Dat wil zeggen dat er nog geen

algoritme is dat gegarandeerd in polynomiale tijd een optimale oplossing vindt. De

complexiteitsorde van bestaande algoritmen is dan niet polynomiaal met de grootte van het probleem, oftewel als het probleem groter wordt dan kan de rekentijd explosief stijgen (Earl, 2005, pp. 1-2). Het automatisch genereren van een rooster is ook een (M)ILP

probleem en is dus moeilijk oplosbaar. In de subparagrafen van deze paragraaf worden een aantal algoritmen en heuristieken besproken die veel worden gebruikt voor (M)ILP

(23)

Van den Berghe et al. (2004) schrijven in hun voortgangsverslag, dat ondanks dat

mathematisch programmeren een eenduidige beschrijving van een probleem biedt, er een aantal moeilijkheden blijven. Een wiskundig model is niet door iedereen op te stellen en voor iedereen te begrijpen en voor realistische problemen is het aantal variabelen heel groot. Mathematisch programmeren is vooral geschikt voor het vinden van een optimale oplossing in beperkte zoekruimten. Van den Berghe et al. (2004) hopen dan ook dat mathematisch programmeren in combinatie met andere technieken een oplossing kan bieden voor een reëel planningsprobleem.

4.1.1 Set covering, set partitioning en set packing

Set covering, set partitioning en set packing zijn alle drie speciale formuleringen van mathematische programmering.

Alle coefficienten a van de matrix A zijn gelijk aan 0 of 1. Door deze structuur worden de ij

formuleringen vaak gebruikt voor planningsproblemen. De vorm van het model van deze drie formuleringen ziet er bij benadering als volgt uit:

Maximaliseer cx s.t. a x11 1+a x12 2+ +.. a x1N N = 1 21 1 22 2 2 a x +a x + +.. a xN N = 1 : 1 1 2 2 a xM +a xM + +.. a xMN N = 1 {0,1} j x ∈ ∀ j

Bovenstaande vorm is het model van set partitioning. Wanneer de gelijkheidstekens worden vervangen door groter-of-gelijk tekens, dan is dit een set covering model. Worden de tekens vervangen door kleiner-of-gelijk tekens, dan is dit een set packing model

(Pinedo, 2005, pp. 390-394). De formuleringen zijn toewijzingsproblemen, bijvoorbeeld set partitioning: elke taak moet worden toegewezen aan precies één middel. Voor realistische problemen moet het model nog wel aangevuld worden met andere randvoorwaarden, die ervoor zorgen dat de oplossing toegelaten is voor het specifieke probleem. Zie voor voorbeelden van randvoorwaarden in het geval van een planningsprobleem paragraaf 2.4. Vanwege de speciale structuur van deze formuleringen zijn hiervoor speciale algoritmen en heuristieken ontwikkeld en werken andere algoritmen sneller.

Unimodulaire matrix. De matrix A is in sommige gevallen van bovenstaande formuleringen

totaal unimodulair, dit houdt in dat de determinant van iedere vierkantsmatrix van A gelijk is aan 0, 1 of -1. In het bijzonder moeten alle elementen van de matrix A 0, 1 of -1 zijn, wat bij deze formuleringen en bij toewijzingsproblemen vaak het geval is. Een algemene regel is dat A totaal unimodulair is als iedere kolom precies één element gelijk heeft aan 1 en één element gelijk heeft aan -1. Als de matrix A unimodulair is en alle parameters zijn ook geheeltallig, dan betekent dit dat gegarandeerd een geheeltallige oplossing wordt gevonden bij LP relaxatie. Dus kunnen efficiënte algoritmen voor LP problemen worden gebruikt voor de oplossing van (M)ILP problemen (Ahuja et al., 1993, pp. 447-449).

(24)

Branch-and-bound algoritmen en ook kolomgeneratie beschreven in de paragrafen hieronder zijn ook beter bestudeerd en ontwikkeld voor bovenstaande speciale formuleringen. Ook heuristieken uit de grafentheorie, zie paragraaf 4.7, zijn goed toepasbaar op bovenstaande formuleringen (Hillier en Lieberman, 2005, pp. 496-500).

4.1.2 Branch-and-bound

Branch-and-bound is een veel gebruikt algoritme voor het (M)ILP probleem. Met branch-and-bound wordt de optimale oplossing gezocht, maar het is geen efficiënt algoritme, de rekentijd kan heel snel oplopen als het probleem groter wordt.

Branch-and-bound start vanuit een situatie die alle mogelijke oplossingen bevat. Deze situatie kan worden gezien als de eerste knoop van een branch-and-bound boom, een abstracte voorstelling van het oplossingsproces van het branch-and-bound algoritme. De knopen van de boom stellen deelproblemen voor. In de startknoop wordt eerst een oplossing gevonden voor een vereenvoudigd probleem, deze oplossing vormt een grens (bound) voor het gehele probleem. Het probleem kan worden vereenvoudigd door een randvoorwaarde weg te laten, te relaxeren. Een randvoorwaarde die hierbij vaak wordt weggelaten is de geheeltalligheid van de variabelen, dit wordt een LP relaxatie genoemd. Het vereenvoudigde probleem kan makkelijker en sneller worden opgelost, bijvoorbeeld met behulp van de simplexmethode. Vanwege het relaxeren van een randvoorwaarde, vormt de oplossing slechts een grens voor de

oplossing van het oorspronkelijke probleem. Vervolgens worden deelproblemen gedefinieerd, door bijvoorbeeld één variabele op alle mogelijke manieren te fixeren. Als een variabele de waarden 0 en 1 kan aannemen, is één deelprobleem dat deze variabele op de waarde 0 wordt gefixeerd en het andere deelprobleem dat de variabele op de waarde 1 wordt gefixeerd. Voor elk deelprobleem wordt een nieuwe grensoplossing bepaald, door het vereenvoudigde probleem met de gefixeerde waarde voor de gefixeerde variabelen op te lossen. De waarde van deze oplossing vormt weer een nieuwe grens. De deelproblemen vormen nieuwe knopen, waaruit indien nodig nieuwe deelproblemen worden bepaald (branching). Zo vormt zich een branch-and-bound boom zoals in figuur 2.

Omdat alle oplossingen aflopen veel te lang duurt, wordt in drie gevallen gestopt met het bepalen van nieuwe subproblemen (Hillier en Lieberman, 2005, pp. 505-521):

• Als een toegelaten oplossing voor het originele probleem is gevonden, wordt gestopt, latere deelproblemen kunnen

Bovengrens = 22 0 Bovengrens = 16 1 Bovengrens = 21 2 1 2 3 4 0.6 0.2 0.4 0 x x x x = = = = 1 2 3 4 0 1 1 0 x x x x = = = = 13 24 1 0.5 1 0 x x x x = = = = 1 0 x= x1=1 Bovengrens = 10 3 Bovengrens = 18 4 1 2 3 4 1 0 0.3 1 x x x x = = = = 1 2 3 4 1 1 0.1 0.8 x x x x = = = = 2 0 x = x2=1 Bovengrens = 17 5 Geen oplossing 6 1 2 3 4 1 1 0 0 x x x x = = = = 3 0 x = x3=1 Stop: toegelaten oplossing; z=16

Stop: al betere oplossing gevonden; ondergrens < z; LP relaxatie z=0 Stop: toegelaten oplossing; z=17 Optimaal

(25)

alleen een slechtere of gelijke grens hebben, zie knoop 1 in figuur 2.

• In het tweede geval wordt gestopt wanneer de grens slechter is dan de grens van de beste toegelaten oplossingen die tot nu toe gevonden is, zie knoop 3 in figuur 1. • En tot slot wordt gestopt als zelfs het gerelaxeerde deelprobleem geen oplossing heeft, zie knoop 6 in figuur 2. In dit geval heeft het originele deelprobleem ook geen oplossing en kan dus worden gestopt met zoeken.

Branch-and-bound kan ook worden toegepast wanneer een variabele meerdere waarden dan alleen 0 en 1 kan aannemen. Dan kunnen meerdere deelproblemen vanuit een knoop

ontstaan, of in het geval van continue variabelen kunnen deelproblemen worden gevormd met een extra randvoorwaarde, bv. x≤4 en het andere deelprobleem met x≥5.

Omdat ondanks de verschillende stopcriteria toch te veel oplossingen kunnen worden afgegaan, is branch-and-bound geen efficiënt algoritme. Er zijn dan ook verschillende manieren in de literatuur te vinden om het algoritme te versnellen of eerder te stoppen. Het bepalen van de deelproblemen kan op verschillende manieren en per probleem kan de beste manier verschillen. Bepaalde algoritmen en heuristieken zijn hierop gebaseerd,

bijvoorbeeld door te bepalen welke variabele gefixeerd wordt en op welke waarde. Als gebruik gemaakt wordt van een stopcriterium om de rekentijd te beperken, dan is geen sprake meer van een algoritme, maar van een heuristiek. Omdat dan niet meer per se een optimale oplossing wordt gevonden, maar een benadering van een optimale oplossing. Voorbeelden van stopcriteria zijn een bepaald aantal iteraties dat is doorlopen of een aantal iteraties zonder minimale verbetering in de toegelaten oplossingen.

Branch-and-cut

Een manier voor het versnellen van het branch-and-bound algoritme is branch-and-cut. Ook branch-and-cut werkt vaak met een LP relaxatie, zodat snel oplossingen van subproblemen kunnen worden gevonden. Het branch-and-cut algoritme verandert de set van randvoorwaarden: randvoorwaarden worden verwijderd als deze geen beperking vormen en toegevoegd om toegelaten oplossingen sneller te vinden of om de grenswaarde te verbeteren. Het kan zijn dat randvoorwaarden geen beperking vormen als de oplossing al zodanig vastligt dat altijd aan de randvoorwaarden wordt voldaan, of als andere

randvoorwaarden de oplossingsruimte al zodanig beperken dat de randvoorwaarden er niet meer toe doen. Verder wordt bij het fixeren van variabelen direct gecontroleerd of geen randvoorwaarden worden overtreden.

Een branch-and-cut algoritme is vaak efficiënter dan een branch-and-bound algoritme, maar opnieuw is niet gegarandeerd dat in polynomiale tijd een optimale oplossing wordt gevonden (Hillier en Lieberman, 2005, pp. 521-527).

4.1.3 Branch-and-price

Ook de branch-and-price heuristiek is een variant op branch-and-bound, waarbij ook weer vaak gebruik gemaakt wordt van LP relaxatie om deelproblemen op te lossen. Bij branch-and-price wordt daarnaast gebruik gemaakt van kolomgeneratie. Eerst worden toegelaten kolommen met deelverzamelingen van variabelen gevormd, deze mogelijke kolommen worden opgenomen in een hoofdverzameling voor het hoofdprobleem. Vervolgens wordt

(26)

met deze kolommen een oplossing gevormd voor het totale probleem. Elk deelprobleem uit de branch-and-bound boom wordt opgedeeld in een hoofdprobleem en een subprobleem. Het deelprobleem uit de branch-and-bound boom wordt in elke iteratie gezien als het totale probleem. In het subprobleem worden de kolommen gegenereerd. Het aantal variabelen in het hoofdprobleem is nu veel kleiner, omdat deze worden opgenomen in het subprobleem, waardoor sneller een oplossing gevonden kan worden.

In het subprobleem worden toegelaten kolommen met relevante variabelen bepaald voor in het hoofdprobleem, bijvoorbeeld een dienst. Als de kolom in gereduceerde kosten

‘goedkoper’ (price) is dan de kolommen die al bestaan, dan wordt de kolom in de

hoofdverzameling met mogelijkheden voor het hoofdprobleem opgenomen. Het principe van gereduceerde kosten is gebaseerd op duale variabelen in de simplex methode, op basis waarvan nieuwe basisvariabelen worden geselecteerd. De kosten van nieuwe kolommen hangen dus af van de huidige oplossing en de kolommen die al bestaan.

In het hoofdprobleem wordt de optimale oplossing gezocht door een combinatie van de kolommen te kiezen uit de hoofdverzameling. Eigenlijk vormt het genereren van

kolommen een beperking van het ILP probleem, doordat in de mogelijke oplossingsruimte alleen de kolommen die in het subprobleem zijn gegenereerd, zijn opgenomen.

Met behulp van branch-and-bound wordt een geheeltallige oplossing gevonden, er worden steeds deelproblemen in de branch-and-bound boom gevormd door variabelen op

geheeltallige waarden te fixeren. Deze deelproblemen worden dan opgelost met kolomgeneratie, waardoor een branch-and-price heuristiek ontstaat. Ook kan

kolomgeneratie worden toegepast in het branch-and-cut algoritme, dan wordt het een branch-cut-and-price heuristiek genoemd (Pinedo, 2005, pp. 258-272).

Het subprobleem en het hoofdprobleem van de kolomgeneratie kunnen worden opgelost met behulp van verschillende algoritmen en heuristieken. Het hangt van de

probleemstructuur af welke algoritmen en heuristieken het beste gebruikt kunnen worden.

Toepassingen. In de literatuur komen veel verschillende toepassingen voor van

branch-and-price. Beliën (2005) schrijft in zijn doctoraat dat branch-and-price al verschillende keren succesvol is toegepast en vooral geschikt is voor MILP problemen met heel veel

variabelen. Vooral voor problemen met formuleringen als in subparagraaf 4.1.1 (Van Dongen, 2005, p. 11). Toepassingsgebieden zijn onder andere complexe

toewijzingsproblemen op het gebied van personeelsplanning, vehicle routing met

tijdsegmenten en cutting stock problemen. Toepassingen in personeelsplanningproblemen betreffen meestal de transportsector, zoals luchtvaart en treinpersoneel. Klabjan et al. (2000) hebben het probleem van het plannen van luchtvaartpersoneel onderzocht. Freling et al. (2001) hebben daarnaast ook gekeken naar de planning van treinpersoneel. Beliën (2005) laat ook nog een toepassing zien in een Belgisch ziekenhuis.

Opdeling van het probleem. Freling et al. (2001) beschouwen het planningsprobleem als

het toewijzen van elke taak, uit een gegeven verzameling met taken met vaste start- en eindtijden, aan een persoon met bepaalde karakteristieken, zodanig dat de kosten worden geminimaliseerd en aan bepaalde regels wordt voldaan. De moeilijkheid van het plannen ligt in het vormen van diensten door het groeperen van taken en in het toewijzen van die diensten aan wekelijkse of maandelijkse roosters. Deze problemen worden vaak

(27)

afzonderlijk opgelost, maar Freling et al. (2001) integreren deze twee problemen en lossen dit op met branch-and-price. De twee problemen geven een natuurlijke opdeling in hoofd- en subprobleem voor het branch-and-price algoritme. Mason et al. (1995) bepalen in het subprobleem kolommen met het aantal dagen dat achtereenvolgens gewerkt moet worden. We zien dus een verschil tussen de opdeling in hoofd- en subprobleem van een

planningsprobleem door Mason et al. (1995) en Freling et al. (2001). Mason et al. (1995) kiezen een opdeling op basis van roosters en Freling et al. (2001) een opdeling op basis van taken. Beliën (2005) heeft met een onderzoek laten zien dat het belangrijk is goed te

onderzoeken hoe het probleem wordt opgedeeld en dat de beste manier afhangt van de probleemstructuur. Hij geeft ook aan dat het hoofdprobleem in de opdeling met

kolomgeneratie eigenlijk het toevoegen van een aantal variabelen is, welke een deelverzameling van de oorspronkelijke variabelen representeren in de vorm van

kolommen. De grens van de LP relaxatie van het hoofdprobleem is meestal veel beter dan van de LP relaxatie van het probleem als geheel (Beliën, 2005, p. 36).

Een ander voordeel van branch-and-price is dat gemakkelijk nieuwe randvoorwaarden kunnen worden toegevoegd in zowel het hoofd- als het subprobleem. Door het hoofd- en/of het subprobleem op te lossen met behulp van een heuristiek kan snel een oplossing worden gevonden (Beliën, 2005, p. 204-205).

Wanneer kolommen genereren? Er bestaan drie klassen van heuristieken die

kolomgeneratie en branch-and-bound combineren. In de eerste klasse worden vooraf kolommen in één keer gegenereerd, of ook wel alleen in de eerste knoop van de branch-and-bound boom. Bij de klasse tweede klasse worden een aantal keer achter elkaar kolommen gegenereerd, waarna met branch-and-bound een geheeltallige oplossing wordt gevormd. Bij de derde klasse worden kolommen gegenereerd tijdens het branch-and-bound proces. Deze klasse wordt branch-and-price genoemd, hierbij worden kolommen

gegenereerd in elke knoop van de branch-and-bound boom (Van Dongen, 2005, p. 17). In andere literatuur wordt vaak alleen de eerste klasse onderscheiden van branch-and-price. Branch-and-price is dan de tweede en derde klasse samen en neemt vaak de vorm van de tweede klasse aan, bijvoorbeeld in Freling et al. (2001), Fahle et al. (1999) en Klabjan et al. (2000). Freling et al. (2001) vergelijken de eerste en tweede klasse met elkaar, waar voor het ene probleem een heuristiek van de eerste klasse en voor een ander probleem een heuristiek uit de tweede klasse beter presteert. Door het definiëren van de subproblemen kunnen optimale kolommen niet altijd worden gevonden (Beliën, 2005, pp. 48-50).

Kolommen genereren. Het gebruik van kolomgeneratie kan de moeilijkheid van het

probleem verplaatsen naar het genereren van de kolommen, hiervoor moeten dan weer heuristieken en algoritmen worden bedacht. Zo beschrijven Fahle et al. (1999) het hoofdprobleem als een ILP probleem waarbij de moeilijke randvoorwaarden zijn

opgenomen in het subprobleem. Voor het genereren van de kolommen wordt vaak gebruik gemaakt van dynamisch programmeren, zie hiervoor paragraaf 4.4, zoals in Beliën (2005) en Freling et al. (2001). Daarnaast wordt vaak gebruik gemaakt van constraint

programming, zie pragraaf 4.2. Bijvoorbeeld door Fahle et al. (1999) welke een extra randvoorwaarde voor de gereduceerde kosten toevoegen, zodat alleen kolommen met de vereiste gereduceerde kosten worden gegenereerd. Maar ook andere heuristieken, zoals

Referenties

GERELATEERDE DOCUMENTEN

Die filosofies- opvoedkundige mandaat (grondslag) van die Pretorius-kommissie was tweërlei van aard: dat “die Christelike beginsel in onderwys en op- voeding erken, openbaar en

H oew el geen boeke of tydskrifte uitgeleen word nie is studente en ander lede van die publiek welkom om enige w erke te kora raadpleeg. Fotostatiese afdrukke

Nu een stijging van kosten niet aanvaardbaar is en ook de suggestie uit het Pakketadvies 2010 om het eigen risico te verhogen niet door de minister is overgenomen, meent het CVZ

Steeds meer waarnemingen An- derzijds duiden deze gegevens, samen met alle andere waarnemingen, ontegenspreke- lijk op lokale vestiging – terwijl we daarover, tot minder dan

Verdergaande centralisatie van aanvraag- en toekenningsprocedures Het College begrijpt het voorstel zo, dat de toekenning van andere – meer algemene - voorzieningen benodigd

Daarbij kunnen ook extremere beelden zitten dan er nu zijn, bijvoorbeeld een technologisch natuurbeeld, waarin natuur alleen nog maar volledig door de mens wordt bepaald, onder

Deze middelen worden ingezet voor het integreren van de sociale pijler (onder andere wonen – welzijn – zorg) in het beleid voor stedelijke vernieuwing en voor

Een nadere analyse waarin naast de in de vorige regressieanalyse genoemde controlevariabelen ook alle individuele campagne-elementen zijn meegenomen, laat zien dat