2de gebruikerscommissie DINGO @KaHo Sint-Lieven, Gent 30 maart 2004
Vakgroep IT - KaHo Sint-Lieven Overzicht Technologisch gedeelte Literatuurstudie: modellen voor personeelsplanning Voorgesteld algemeen personeelsplanningmodel Opslaan en inlezen van XML bestanden (JDOM, XOM) Evalueren van beperkingen Constraint Generator (CoFfTeA) Literatuurstudie: algoritmen voor personeelsplanning Algemeen gedeelte Classificatie van personeelsplanning Toelichting van het model adhv prototype gebruikerinterfaces Distributie Vakgroep IT - KaHo Sint-Lieven
Technologische gedeelte
Agenda Technisch gedeelte Modellering (WP2) Literatuurstudie modellen voor personeelsplanning Korte schematische voorstelling van het model Opslaan en openen van de data in XML (via JDOM, XOM) Evaluatie van constraints Constraint Generator uit CoFfTeA Algoritmen voor personeelsplanning (WP3) Aanpak literatuurstudie algoritmen voor personeelsplanning Vakgroep IT - KaHo Sint-Lieven
Modellen voor personeelplanning
Modellen voor personeelsplanning Mathematische modellen: meeste vrij analoog Toewijzen van werknemers per shift aan taak: wordt voorgesteld door matrix DOEL: rekening houdend met beperkingen waarden zoeken voor matrixelementen Vakgroep IT - KaHo Sint-Lieven
Voorbeeld van een wiskundig model “Algemeen” model voor ETP van Meisels en Schaerf (vaste begin- en einduren) m werknemers E1,…,Em n shifts S1,…,Sn t taken T1,…,Tt Doel: vinden van een 3-dim. binaire m x n x t matrix X zodat xijk=1 als werknemer Ei toegewezen is aan taak Tk in shift Sj. Vakgroep IT - KaHo Sint-Lieven
Voorbeeld van een wiskundig model De beperkingen: vereistenmatrix is een niet-negatieve n x t matrix R zodat Rjk het aantal keren voorkomen van taak Tk in shift Sj voorstelt kwalificatiematrix is een binaire m x t matrix Q zodat Qik=1 als werknemer Ei de taak Tk mag en kan uitvoeren, in het andere geval is Qik=0 beschikbaarheidsmatrix is een binaire m x n matrix A, waar Aij=1 als werknemer Ei beschikbaar is voor shift Sj, in het andere geval is Aij=0 Vakgroep IT - KaHo Sint-Lieven
Voorbeeld van een wiskundig model De beperkingen (vervolg): 3-dimensionele binaire n x n x m conflictmatrix C, zodat als Cj1j2i=0 dan kan werknemer Ei niet toegewezen worden aan de shifts Sj1 en Sj2 Werkbelasting: boven– en onderlimiet op het aantal taken waaraan elke werknemer kan aan worden toegewezen. Definieer daartoe een shiftverzameling G1,…,Gs, die elk shifts van een bepaalde soort groeperen. Definieer dan 2 geheeltallige m x s matrices V en W zodat werknemer Ei moet toegewezen worden aan ten minste Vik en ten hoogste Wik shifts van groep Gk. Vakgroep IT - KaHo Sint-Lieven
Voorbeeld van een wiskundig model Wiskundig geformuleerd: Vind xijk zodat: Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Doch echter… Opstellen van zo’n wiskundig model: geen eenvoudige taak, bijv. als er veel niet-lineaire beperkingen moeten worden uitgedrukt in vorm van lineaire ongelijkheden (bijv. geen 3 opeenvolgende nachtshifts) Bij realistisch problemen: aantal variabelen is heel groot Niet makkelijk interpreteerbaar voor de gebruikers Vakgroep IT - KaHo Sint-Lieven
Voorgesteld algemeen personeelsplanningmodel
Algemeen personeelsplanningsmodel Invoer Gegevens (Jan werkt dinsdag 30 maart) Beperkingen (na een late shift, geen vroege) Berekening Opbouwen interne rekenstructuur Via algoritmen oplossingenruimte genereren Uitvoer Weergave en bewerking van gekozen oplossing Vakgroep IT - KaHo Sint-Lieven
Interne rekenstructuur Gegevens Beperkingen P Jan D Interne rekenstructuur Piet 08h00 17h00 Din 30 maart T Algoritmen Oplossing P Jan werkt dinsdag 30 maart P Piet moet aan de inslag staan T D D De inslag moet bemand zijn van 8h00 tot 17h00 Vakgroep IT - KaHo Sint-Lieven T
Algemeen personeelsplanningsmodel Invoer Gegevens: Opslaan en lezen via XML Beperkingen: Constraint Generator (CoFfTeA) Berekening Opbouwen interne rekenstructuur: Gegevens in 3d-matrix en controleren op beperkingen algoritmen: Welke algoritmen gebruikt worden hangt af van de complexiteit Uitvoer Weergave en bewerking van gekozen oplossing Concrete informatie betreft personeel, tijd en taken Vakgroep IT - KaHo Sint-Lieven
Algemeen personeelsplanningsmodel Gegevens: Opslaan en lezen via XML Drie dimensies tijd/taken/personeel Tijd: Per dag (shifts) Volgens contract Volgens gewenste bezetting (coverage) Vakanties Taken: Kwalificatie Gewenste bezetting Personeel: Contract Vakantie Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Shifts Personnel Duties Qualifications Coverage Contract Naam Beginuur Einduur Pauze: Beginuur Verboden Zone: Beginuur Taak Shift Coverageperiode per # weken Minimale bezetting/dag Gewenste bezetting/dag Naam: Max uur/week Gem uur/week Min #weekend vrij per # weken Werkpatroon per# weken Mogelijke shifts/dag Voornaam Contracttype Vakanties Kwalificaties Alternatieve kwalificaties Vereiste kwalificatie Alternatieve kwalificatie Vakgroep IT - KaHo Sint-Lieven
Algemeen personeelsplanningsmodel Berekening Opbouwen interne rekenstructuur: Gegevens herleiden naar drie dimensies Invullen in matrixstructuur Controleren op beperkingen Inkleuren van de matrix in mogelijke en onmogelijke regio’s Algoritmen: Algoritmen maken keuzes uit mogelijke regio’s Hercontroleren deze op beperkingen Evalueren de oplossing Herbeginnen met nieuwe keuze Welke algoritmen toegepast worden hangt af van de complexiteit Vakgroep IT - KaHo Sint-Lieven
Algemeen personeelsplanningsmodel Uitvoer (weergave en bewerking van gekozen oplossing) Concrete informatie betreft personeel, tijd en taken (personeel, tijd): Kalender met wie wanneer moet werken (taken, tijd): Kalender met welke taken uitgevoerd worden (personeel, taken): Wie doet wat? Vakgroep IT - KaHo Sint-Lieven
Opslaan en inlezen van XML bestanden JDOM en XOM
Opslaan en inlezen van XML bestanden Gegevens worden opgeslagen in XML bestanden Voordeel is dat er geen speciale software nodig is om de gegevens te interpreteren Gegevens zijn makkelijk uit te wisselen Begrijpbaar voor iedereen Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven XML XML = eXtensible Markup Language XML is een markup taal voor documenten die gestructureerde informatie bevatten Uitbreidbaar: geen vast formaat zoals bijv. HTML XML is gecreëerd om informatie te structureren, opslaan en te verzenden Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven XML: voorbeeld rootelement attribuut element <?xml version="1.0" encoding="UTF-8"?> <shifts> <shift ID="1"> <description>vroege</description> <allowed> <start_time> <hour>6</hour> <minute>0</minute> </start_time> <end_time> <hour>14</hour> </end_time> <work_duration>8:0</work_duration> <break> <hour></hour> <minute></minute> Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven XML: voorbeeld <end_time> <hour></hour> <minute></minute> </end_time> </break> </allowed> <forbidden> <start_time> <hour>2</hour> <minute>0</minute> </start_time> <hour>23</hour> <minute>55</minute> </forbidden> </shift> … </shifts> Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven XOM, JDOM Java APIs om XML files te manipuleren JDOM is de meest gebruikte Echter 1 nadeel: heel moeilijk om door een XML boom te navigeren XOM is daarvoor veel beter geschikt: hoewel het nog niet vanzelfsprekend is XOM: heel recent, gebeuren constant aanpassingen aan de API (sommige methodes die in vroegere versies bestonden, verdwijnen soms) Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Snelcursus JDOM import org.jdom.*; import org.jdom.output.XMLOutputter; import java.util.*; import java.io.*; public class ConstraintSwing { private Element rootElement = new Element("constraints"); private DocType doctype = new DocType(rootElement.getName()); private Document doc = new Document(rootElement, doctype); public void Output2File(String xmlFileName){ try{ XMLOutputter outputter = new XMLOutputter("\t", true); FileOutputStream output = new FileOutputStream(xmlFileName); outputter.setEncoding("UTF-8"); outputter.output(doc, output); output.close(); output.flush(); adaptFile(xmlFileName); } Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Snelcursus JDOM catch (FileNotFoundException FNFE){ System.out.println(FNFE.getMessage()); } catch (IOException IOE){ System.out.println(IOE.getMessage()); public void createXMLElement(Element root, String child, String tkst){ Element child1 = new Element(child); child1.setText(tkst); root.addContent(child1); Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Snelcursus JDOM public Element createXMLElement1(Element root, String child, String attri){ Element child1 = new Element(child); child1.setAttribute("metaname", attri); root.addContent(child1); return child1; } … Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Snelcursus XOM import nu.xom.*; import java.io.*; public class XmlTranslator{ public void Output2File(String xmlFileName, Document doc){ try{ FileOutputStream output = new FileOutputStream (xmlFileName); Serializer outputter = new Serializer(output); outputter.write(doc); output.close(); output.flush(); } catch(FileNotFoundException FNFE){ System.out.println(FNFE.getMessage()); catch(IOException IOE){ System.out.println(IOE.getMessage()); Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Snelcursus XOM private Element createRootElement (String root){ Element rootElement = new Element(root); return rootElement; } private Document createDocument(Element rootElement){ Document doc = new Document(rootElement); return doc; public Document createRootAndDocument(String root){ return createDocument(createRootElement(root)); public void createXMLElement(Element rootElement, String child, String text){ Element child1 = new Element(child); child1.appendChild(text); rootElement.appendChild(child1); Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Snelcursus XOM public Element createXMLElement(Element rootElement, String child, String attribuut, String value){ Element child1 = new Element(child); Attribute att = new Attribute(attribuut, value); child1.addAttribute(att); rootElement.appendChild(child1); return child1; } public Element createXMLElement(Element rootElement, String child){ … Vakgroep IT - KaHo Sint-Lieven
Evaluatie van beperkingen voor personeelsplanning kostfunctiebenadering voor planning met een groot aantal beperkingen op uurroosters van personeel
Vakgroep IT - KaHo Sint-Lieven Beperkingen Verpleegkundigen, politie, arbeiders in productie en logistiek,… Harde beperkingen minimale bezetting per tijdslot Zachte beperkingen tijdgerelateerde beperkingen op de uurroosters van het personeel Doel: stel een uurrooster op met de beschikbare personeelsleden dat aan de harde beperkingen voldoet en dat streeft naar een goede kwaliteit met betrekking tot de zachte beperkingen Metaheuristieken vergen een groot aantal evaluaties van de doelfunctie (die de kwaliteit van een oplossing meet) Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Vereisten Functionele vereisten Korte evaluatietijd Verklarend Uitbreidbaar Probleem specifieke vereisten Harde beperkingen bezetting kwalificatie Zachte beperkingen Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Evaluatie Methode Laag geheugengebruik Simultane berekening van verschillende afdelingen Complexe problemen Snel Metaheuristieken Complexe reële problemen Eenvoudig Modulair Implementatie Evaluatie Verklarend Overtreden beperkingen Grootte van de overtreding Uitbreidbaar Nieuwe beperkingen Extra eigenschappen Modificeerbaar Kost parameters Waarden van de beperkingen Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Zachte beperkingen Beperkingen van de organisatie Minimum tijd tussen twee toekenningen Toegelaten alternatieve kwalificaties Beperkingen bepaald door het contract Maximum aantal toekenningen gedurende de planningsperiode Minimum/maximum aantal opeenvolgende dagen Minimum/maximum aantal werkuren Minimum/maximum aantal opeenvolgende vrije dagen Maximum aantal toekenningen per dag van de week Maximum aantal toekenningen per shift Maximum toekenningen van een bepaalde shift per week Aantal opeenvolgende shifts (van een type) Plan 2 vrije dagen na de nachtdienst Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Zachte beperkingen Volledige weekends plannen Identieke shifts toekennen tijdens het weekend Maximum aantal opeenvolgende weekends werken Maximum aantal weekends werken gedurende 4 weken Maximum (cumulatief) aantal toekenningen op feestdagen Beperking op de opeenvolging van shifts Patronen voor specifieke cyclische beperkingen Werkbelasting balanceren over het beschikbare personeel Persoonlijke beperkingen Vrije dag/vrije shift Gewenste shift Stagebegeleiding (studenten niet alleen aan het werk) Personeelsleden niet samen aan het werk Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Algemene variabelen planning periode (bvb 4 weken, 28 dagen) shifts, personeelsleden, kwalificaties event (toekenning), vrije dag Vakgroep IT - KaHo Sint-Lieven
Formele beschrijving: Nummeringen bewerkingen en variabelen Nummeringen: sjablonen Constraints max-total max-pert max-between max-consecutive Waarden Tellers total last Kostparameters min-total min-pert min-between min-consecutive consecutive pert (array) Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Voorbeeld planningsperiode 1 week zachte beperkingen: maximum aantal toekenningen 6 minimum 2 maximum aantal opeenvolgende vrije dagen 8 minimum 2 maximum aantal opeenvolgende toekenningen 4 maximum per dag 1 maximum aantal nachtdiensten 3 minimum aantal opeenvolgende nachtdiensten 2 volledige weekends werken Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Nummeringen rooster P1 constraints N1 max-total = 6 min-total = 2 max-between = 8 min-between = 2 max-consecutive = 4 min-consecutive = 2 max-pert = 1 constraints N2 max-total = 3 min-consecutive = 2 tellers last total consecutive constante max constraints N3 min-consecutive = 2 Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Kostfunctie P1 constraints N1 max-total = 6 min-total = 2 max-between = 8 min-between = 2 max-consecutive = 4 min-consecutive = 2 max-pert = 1 kost N1 cost-max-total = 0 cost-min-total = 0 cost-max-between = 0 cost-min-between = 0 cost-max-consecutive = 1 cost-min-consecutive = 0 cost-max-pert = 0 tellers last total consecutive constraints N2 max-total = 3 min-consecutive = 2 kost N2 max-total = 0 min-consecutive = 1 constraints N3 min-consecutive = 2 kost N3 min-consecutive = 0 totale kost (kostparameter * kost) Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Kostfunctie P2 constraints N1 max-total = 6 min-total = 2 max-between = 8 min-between = 2 max-consecutive = 4 min-consecutive = 2 max-pert = 1 kost N1 cost-max-total = 0 cost-min-total = 0 cost-max-between = 0 cost-min-between = 1 cost-max-consecutive = 0 cost-min-consecutive = 1 cost-max-pert = 0 tellers last total consecutive constraints N2 max-total = 3 min-consecutive = 2 kost N2 max-total = 0 min-consecutive = 2 totale kost (kostparameter * kost) constraints N3 min-consecutive = 2 kost N3 min-consecutive = 0 Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Kostfunctie P3 constraints N1 max-total = 6 min-total = 2 max-between = 8 min-between = 2 max-consecutive = 4 min-consecutive = 2 max-pert = 1 kost N1 cost-max-total = 1 cost-min-total = 0 cost-max-between = 0 cost-min-between = 0 cost-max-consecutive = 3 cost-min-consecutive = 0 cost-max-pert = 0 tellers last total consecutive constraints N2 max-total = 3 min-consecutive = 2 kost N2 max-total = 0 min-consecutive = 0 totale kost (kostparameter * kost) constraints N3 min-consecutive = 2 kost N3 min-consecutive = 0 Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Kostfunctie P4 constraints N1 max-total = 6 min-total = 2 max-between = 8 min-between = 2 max-consecutive = 4 min-consecutive = 2 max-pert = 1 kost N1 cost-max-total = 0 cost-min-total = 0 cost-max-between = 0 cost-min-between = 1 cost-max-consecutive = 0 cost-min-consecutive = 1 cost-max-pert = 0 tellers last total consecutive constraints N2 max-total = 3 min-consecutive = 2 kost N2 max-total = 0 min-consecutive = 0 totale kost (kostparameter * kost) constraints N3 min-consecutive = 2 kost N3 min-consecutive = 1 Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Kostfunctie P5 constraints N1 max-total = 6 min-total = 2 max-between = 8 min-between = 2 max-consecutive = 4 min-consecutive = 2 max-pert = 1 kost N1 cost-max-total = 0 cost-min-total = 0 cost-max-between = 0 cost-min-between = 1 cost-max-consecutive = 0 cost-min-consecutive = 0 cost-max-pert = 1 tellers last total consecutive constraints N2 max-total = 3 min-consecutive = 2 kost N2 max-total = 0 min-consecutive = 0 totale kost (kostparameter * kost) constraints N3 min-consecutive = 2 kost N3 min-consecutive = 0 Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Startvoorwaarden Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Kostfunctie P1 constraints N1 max-total = 6 min-total = 2 max-between = 8 min-between = 2 max-consecutive = 4 min-consecutive = 2 max-pert = 1 kost N1 cost-max-total = 0 cost-min-total = 0 cost-max-between = 0 cost-min-between = 0 cost-max-consecutive = 3 cost-min-consecutive = 0 cost-max-pert = 0 tellers N1 last = -1 total = 0 consecutive = 2 tellers N2 last = U total = 0 consecutive = U constraints N2 max-total = 3 min-consecutive = 2 kost N2 max-total = 0 min-consecutive = 1 tellers N3 last = -2 total = 0 consecutive = 2 constraints N3 min-consecutive = 2 kost N3 min-consecutive = 0 Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Evaluatiealgoritme Initialisatie: rekening houdend met wat vroeger gepland was Planning in de periode voor de planningsperiode staat vast Beeld de nummeringen af op de voorgaande planningsperiode Zoek waarden voor de tellers: initialiseer Geen kosten aanrekenen voor het verleden Tussentijdse evaluatie: tellers aanpassen en kosten berekenen indien nodig Finale evaluatie: kosten berekenen aan het einde van de planningsperiode per iteratie worden de algoritmen 1 x uitgevoerd per persoon in de planning; onafhankelijk van het aantal en het type van de zachte beperkingen Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven -1 U -2 2 2 Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven * U -2 1 3 2 1 3 1 Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Conclusie evaluatiefunctie is onafhankelijk van gebruikersdetails algemeen toepasbaar modulaire formulering eenvoudig uit te breiden verklarend, geeft feedback snelle evaluatieprocedure, laag geheugengebruik interessant wanneer toegepast op metaheuristieken (die een groot aantal evaluaties vergen) laat parallelle planningsessies toe Vakgroep IT - KaHo Sint-Lieven
Algoritmen voor personeelsplanning
Algoritmen voor personeelsplanning Mathematisch programmeren AI methoden: Constraint programming Expertsystemen en beslissingsondersteunende systemen Heuristieken Metaheuristieken Mierenalgoritmen Genetische algoritmen Simulated annealing Tabu search Vakgroep IT - KaHo Sint-Lieven
Mathematisch programmeren Geschikt voor zoeken van optimale oplossingen in kleinere zoekruimtes Meeste personeelsplanningvoorbeelden zijn ofwel vereenvoudigd of gebruiken testdata Lineair en integer programmeren Standaardvorm: Minimaliseer cx (d.i. doelfunctie) Onderworpen aan Ax=b en x≥0 (de beperkingen) Programma’s: CPLEX, OSL,… Vakgroep IT - KaHo Sint-Lieven
Mathematisch programmeren Multi-criteria aanpak Meerdere doelen (in tegenstelling tot vorige methode) Meerdere doelfuncties Pareto front Optimalisatietechnieken: dikwijls mathematisch programmeren en metaheuristieken Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven AI methoden Constraint programming Problemen oplossen door beperkingen te formuleren over het probleemdomein om zo oplossingen te vinden (die dus voldoen aan de beperkingen) Onderscheid tussen Constraint satisfaction (CSP) (eindige domeinen): Verzameling variabelen X={x1,…,xn} xi, is er een eindige verzameling Di met mogelijke waarden (zijn domein) en een verzameling beperkingen die de waarden die de variabelen gelijktijdig kunnen aannemen “beperken” Oplossing: toekenning van een waarde van het domein aan elke variabele zodat alle beperkingen voldaan zijn Constraint solving (oneindige en complexe domeinen): Combinatorische methodes volstaan niet Programma’s: Oz, CHIP, ILOG Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven AI methoden Expertsystemen en beslissingsondersteunende systemen Expertise beschikbaar stellen voor beslissingsnemers en technici die vlug antwoord willen Beperkt tot heel specifieke domeinen Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Heuristieken Meeste heuristieken emuleren trial-and-error die menselijke planners ook gebruiken Maakt gebruikt van een heuristisch functie: Gidst bij het zoeken in de boom Interpreteert probleemstructuur om zo tot een aanvaardbare (let op: niet noodzakelijk optimale) oplossing te komen Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Metaheuristieken Een van de betere methodes om aanvaardbare oplossing binnen aanvaardbare tijd te vinden, vooral als zoekruimte heel groot is en als het moeilijk is om een feasible oplossing te vinden Algemene strategie die andere heuristieken leidt Vaak geïnspireerd door natuurverschijnselen (zowel biologische als fysische) Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Mierenalgoritme Oorspronkelijk idee komt van Marco Dorigo Gebaseerd op de manier waarop mierenkolonies voedsel zoeken en hun bekwaamheid om daarbij het kortste pad te vinden Artificiële mieren vertrekken op geregelde tijdstippen vanuit elke knoop naar random gekozen bestemmingen Route van de mieren wordt probabilistisch bepaald door een probabiliteit die functie is van: Waarden van de artificiële feromonen nagelaten door andere mieren Heuristische waarden die bijgehouden worden op de knopen Mieren onthouden de gekozen routen en de verstreken tijd Bij aankomst doen ze dezelfde route in omgekeerde richting (waarbij de waarden van de feromonen worden aangepast) Vakgroep IT - KaHo Sint-Lieven
Genetische algoritmen zijn een klasse van algoritmen die geïnspireerd zijn door de mechanismen die gebruikt worden in de genetica. Het vereist de specificatie van 3 operaties (waarbij typisch elk probabilistisch is) op objecten, strings genaamd: Reproductie – combineren van strings in de populatie om zo nieuwe strings te creëren (offspring). Voorbeeld: neem het eerste karakter van de eerste ouder + rest van de string van de tweede ouder: [001001] + [111111] ===> [011111] Mutatie - spontane wijziging van de karakters in de string. Voorbeeld: Verandering van het meest linkse karakter in de string: [001001] ===> [101001] Crossover – combineren van strings om waarden uit te wisselen, om zo nieuwe strings te creëren. Voorbeeld: met crossover locatie op 2: [001001] & [111111] ===> [001111], [111001] Vakgroep IT - KaHo Sint-Lieven
Genetische algoritmen* Initialiseer een populatie van chromosomen Evalueer elk chromosoom (individu) in de populatie Creëer nieuwe chromosomen door chromosomen te paren in de huidige populatie (gebruikmakend van crossover en mutatie) Verwijder de leden van de huidige populatie om plaats te maken voor de nieuwe leden Evalueer de nieuwe leden en voeg hen toe in de populatie Herhaal het vorige totdat een stopcriterium is bereikt (normaal gebaseerd op tijd en het aantal populaties dat geproduceerd is) De oplossing het beste chromosoom * PowerPoint slides van Graham Kendall (Univ. Nottingham) Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Simulated annealing SA is oorspronkelijk een fysische proces waarbij een materiaal verhit wordt en nadien langzaam afkoelt (het zg. uitgloeien) zodat het een uniforme structuur krijgt Wordt nu als metafoor gebruikt (voor het eerst gebruikt door Kirkpatrick in 1983) Laat toe om te ontsnappen aan lokale minima Daartoe worden niet-verbeterende zetten toegestaan (met een waarschijnlijkheid die afneemt met de temperatuur) Snelheid van afname wordt bepaald door het koelschema (meestal exponentieel) Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Simulated annealing De waarschijnlijkheid om een slechtere zet te accepteren is een functie van zowel de temperatuur van het systeem als de verandering in de kostfunctie Als de temperatuur vermindert, dan vermindert eveneens de waarschijnlijkheid om slechtere zetten te accepteren Als T=0, dan worden geen slechtere zetten geaccepteerd Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Tabu search Oorspronkelijk ontwikkeld door Fred Glover Vermijdt het blijven hangen in lokale optima Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Tabu search Vermijden van blijven hangen in lokale optima door die zetten te verbieden (taboe) of straffen die de oplossing in de volgende iteratie naar punten in de oplossingenruimte brengt die reeds bezocht zijn Laat dus “slechtere” zetten toe om uit een lokaal minimum te raken Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Metaheuristieken Programma’s: OpenTS EasyLocal++ … Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Referenties Tabu search: F. Glover, Eric Taillard and D. de Werra, A user’s guide to tabu search, Annals of OR 41: 3-28 (1993) Simulated annealing: S. Kirkpatrick, C. D. Gelatt, M. P. Vecchi, Optimization by Simulated Annealing, Science (1983) Genetische algoritmen: D. Goldberg, Genetic Algorithms in Search, Optimization and Machine Learning, Addison-Wesley, Reading Massachusetts (1989) Mierenalgoritmen M. Dorigo, V. Maniezzo and A. Colorni, The Ant System: Optimization by a Colony of Cooperating Agents, IEEE Transactions on Systems, Man and Cybernetics-Part B, 26(1): 29-41 (1996) Vakgroep IT - KaHo Sint-Lieven
Algemeen gedeelte
Agenda Algemeen gedeelte Analyse personeelsplanning (WP 1) Classificatie van personeelsplanning problemen Modellering (WP2) Schematische voorstelling van het model Voorstelling gebruikersinterface Distributie (WP 5) Bestaande gedistribueerde werking Mogelijkheden en problemen Vakgroep IT - KaHo Sint-Lieven
Classificatie van personeelsplanning
Classificatie van personeelsplanning Permanentie gebaseerd Politie Ziekenhuizen Mobiliteit gebaseerd Veiligheid en preventie Mobiele verpleegsters Fluctuatie gebaseerd Distributie/magazijnen Interim-kantoren Fast food restaurants Call centers Project gebaseerd Consultancy en software ontwikkeling Vakgroep IT - KaHo Sint-Lieven
Permanentie gebaseerd Minimum coverage van personeel vereist: altijd! Personeel werkt in shifts (meestal 3) Cyclische roosters Maar dikwijls verstoord door afwezigheden Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Mobiliteit gebaseerd Toewijzingen van personeel aan taken: afhankelijk van werkvooruitgang en transport IDEWE: bus moet gereserveerd worden Wit-Gele Kruis: verpleegsters kunnen zelf hun route plannen (rekening houdend met allerlei beperkingen, tijdsvensters!) Opmerking: mobiliteit is niet echt een punt Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Fluctuatie gebaseerd Aantal personeelsleden: afhankelijk van veranderend vraag Meeste bedrijven houden een log bij: min of meer voorspellen wat toekomst brengt Bijv.: DistriMedia Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Project gebaseerd Verschillende mensen aan een project toegekend Afhankelijk van de vooruitgang en naderende deadline: herplannen van mensen Goede projectleider nodig die zijn mensen kent Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Opmerkingen Veel gebeurt nog manueel Neemt veel personeel en tijd in beslag Planner wordt verondersteld ALLES te weten Distributie van personeel: komt (nog?) weinig voor/ mogelijkheden worden nog niet benut Mobiele Equipe (ziekenhuis) Vlinderploeg (WGK) Roulatiesysteem (DistriMedia) Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Type perso-neelsplan-ning Dimensies van het probleem Harde beperkingen Gedistribueerd Extra Doelstelling Politie politieagenten (+kwalificaties), shifts Minimale bezetting + kwalificatie Verschillende divisies (piekploeg bijgestaan door recherche,…) Zeer strikte wettelijke beperkingen (in theorie) Minimaliseer aantal overuren Ziekenhuis Verpleegkun-digen (+kwali- ficaties), shifts Bezetting van verplegers Mobiele teams (departementen) Minimaliseer arbeidskosten Distributie/ Magazijn Werknemers (+kwalificaties) Individuen (personeel kan verschillende taken uitvoeren) Minimaliseer aantal overuren en interim-krachten Interim-agentschap Interim-krachten (+kwalificaties) Beschikbaarheid van de interim-krachten + Verschillende pools waaruit kan gekozen worden Grote database Maximaliseer klantentevre-denheid Veiligheid en preventie Personeel (+kwalificaties) kwalificatie + Minimale bezetting Bezetting van de bussen (geen vaste teams) + ruimtelijk Voldoen aan de wensen van de klant en de wet respecteren Minimaliseer het werk van menselijke planners Thuis-verpleging Verplegers (+kwalificaties), shifts kwalificatie + bezetting Vlinderploeg Softwarebe-drijven en consultancy Personeel (+ kwalificaties), projecten Kwalificatie + deadlines Uitwisseling van personeel tussen projecten Deadlines halen + rendabiliteit Vakgroep IT - KaHo Sint-Lieven
Voorgesteld algemeen personeels-planningmodel
Algemeen personeelsplanningsmodel Invoer Gegevens (Jan werkt dinsdag 30 maart) Beperkingen (na een late shift, geen vroege) Berekening Combineren van bestaande algoritmen Uitvoer Weergave en bewerking van gekozen oplossing Vakgroep IT - KaHo Sint-Lieven
Interne rekenstructuur Gegevens Beperkingen P Jan D Interne rekenstructuur Piet 08h00 17h00 Din 30 maart T Algoritmen Oplossing P Jan werkt dinsdag 30 maart P Piet moet aan de inslag staan T D D De inslag moet bemand zijn van 8h00 tot 17h00 Vakgroep IT - KaHo Sint-Lieven T
Vakgroep IT - KaHo Sint-Lieven Shifts Personnel Duties Qualifications Coverage Contract Naam Beginuur Einduur Pauze: Beginuur Verboden Zone: Beginuur Taak Shift Coverageperiode per # weken Minimale bezetting/dag Gewenste bezetting/dag Naam: Max uur/week Gem uur/week Min #weekend vrij per # weken Werkpatroon per# weken Mogelijke shifts/dag Voornaam Contracttype Vakanties Kwalificaties Alternatieve kwalificaties Vereiste kwalificatie Alternatieve kwalificatie Vakgroep IT - KaHo Sint-Lieven
Algemeen personeelsplanningsmodel Uitvoer (weergave en bewerking) Concrete informatie betreft personeel, tijd en taken (personeel, tijd): Kalender met wie wanneer moet werken (taken, tijd): Kalender met welke taken uitgevoerd worden (personeel, taken): Wie doet wat? Vakgroep IT - KaHo Sint-Lieven
Toelichting van het model aan de hand van prototype gebruikerinterfaces
Prototype voor de gebruikersinterface Demo Vakgroep IT - KaHo Sint-Lieven
Distributie
Vakgroep IT - KaHo Sint-Lieven Distributie Onderscheid maken tussen verschillen in organisatie van bedrijf: Beslissingsmacht: Centraal Departementaal Afhankelijk hiervan tool ontwikkelen Centraal: tool zoekt personeelsleden om uit te wisselen en 1 persoon geeft zijn goedkeuring Departementaal: tool stelt scenario’s voor waarover gediscussieerd kan worden Vakgroep IT - KaHo Sint-Lieven
Raad van afdelingshoofden Management Raad van afdelingshoofden Afdelingshoofd Afdelingshoofd Afdelingshoofd Personeel van afdeling A Personeel van afdeling B Personeel van afdeling C Vakgroep IT - KaHo Sint-Lieven
Vragen?
Planning volgende periode Studie algoritmen voor personeelsplanning Studie gedistribueerde planning Studie agententechnologie Afwerken model voor personeelsplanning Implementatie algoritmen voor automatische personeelsplanning Mijlpaal 2: 1-5-2004 Model personeelsplanning Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven
Vakgroep IT - KaHo Sint-Lieven Project website http://ingenieur.kahosl.be/projecten/DINGO/ Beveiligd gedeelte: login en paswoord: dingo downunder Informatie over: Bezoeken aan de leden van de gebruikerscommissie Presentaties, verslagen van de vergaderingen Voortgangsverslagen Literatuur (personeelsplanning, agententechnologie, algoritmen) Realisaties in het project ... Vakgroep IT - KaHo Sint-Lieven