Vrije resources toevoegen, wissels doorvoeren, en conflicten oplossen
Op de pagina “Roosters gecontroleerd manueel aanpassen” werd het manueel aanpassen van roosters via schuifoperaties (en typen) in het Planbord en Roosters al uitvoerig behandeld. Er werd ook uitleg gegeven over de controlemechanismen om de invoer van opdrachten en de correctheid van de roosters te controleren. Ook werd gesproken over de opties die men kan gebruiken om bepaalde manipulaties te beperken.
Op deze pagina gaan we verder in op 3 andere ondersteunde aspecten die te maken hebben met het manueel aanpassen van roosteropdrachten:
- Vrije resources toevoegen aan een in de tijd geplaatste opdracht.
- Een opdracht die geplaatst is van plaats wisselen met een of meerdere andere opdrachten.
- Een oplossing zoeken voor een opdracht waarvan een of meerdere resources een conflict hebben omdat ze op hetzelfde moment ook door een andere opdracht geplaatst zijn.
Al deze manipulaties op opdrachten zijn manieren om deze opdrachten aan te passen, maar op een ondersteunde manier. Nadat men dergelijke actie uitgevoerd heeft zijn de opdracht(en) gewoon aangepast op een slimme manier maar verder heeft dat geen speciale betekenis meer na de actie. Men zou dus hetzelfde effect kunnen bekomen door de opdrachten aan te passen in het opdrachten tabblad zonder hulpmiddelen, het zou enkel langer duren om uit te vinden hoe je dat best doet.
Merk op dat de opties in “Opties | Manueel Roosteren” van toepassing zijn tijdens het zoeken van wissels en NIET van toepassing zijn op de andere 2 aspecten die hier besproken worden.
Inhoud
- Vrije resources toevoegen aan een opdracht
- Opdrachtwissels doorvoeren
- Conflicten bekijken en oplossen
Vrije resources toevoegen aan een opdracht
Voor een geplaatste opdracht is het soms nuttig om aan deze opdracht een extra resource toe te kunnen voegen. Dit gebeurt meestal op een berekend rooster. Door achteraf resources toe te voegen maakt men een uitgestelde keuze. Wenst men bijvoorbeeld een extra vrije leerkracht, lokaal, of venster toe te voegen, dan kan dat via deze weg. Als men een opdracht bekijkt kan men resources toevoegen op verschillende niveaus. Het niveau kan men kiezen in het rechtermuisklikmenu
Dit menu kan men oproepen vanuit “Opdrachten | Opdrachten” of vanuit een Planbord of Rooster nadat men één of meerdere opdrachten of blokken uit het Planbord/Rooster geselecteerd heeft.
- Start men vanuit het opdrachten tabblad dan kan men de actie “Voeg vrije resources toe” enkel uitvoeren als men één of meerdere opdrachten geselecteerd heeft. De activiteit start hier dus steeds vanuit volledige opdrachten.
- Start men vanuit de Visualizers dan kan men individuele blokken selecteren van één of meerdere opdrachten. Hier hoeft de actie dus niet te starten vanuit een volledige opdracht. Indien men in de Visualizer alle blokken van eenzelfde opdracht selecteert heeft men uiteraard ook de volledige opdracht om van te vertrekken.
Het belang van deze opmerkingen wordt duidelijk als de 4 opties uitgelegd zijn waaruit men kan kiezen om vrije resources toe te voegen.
Per uur | Vrije resources zullen geselecteerd kunnen worden per individueel uur (roosterpunt). De uren waarvoor dit voorgesteld zal worden zijn alle uren van de rechtstreeks of onrechtstreeks geselecteerde deelopdrachten. De selectie bepaalt dus voor welke uren van welke opdrachten keuzes gemaakt kunnen worden. Merk op dat van zodra er blokken zijn met meer dan 1 uur (bv blok van 2 uur LO) dat we hier voor elk individueel uur van dat blok de vrije resources apart kunnen kiezen. Dit impliceert dat de originele deelopdracht waartoe dat blok behoort in aparte deelopdrachten of zelfs aparte opdrachten gesplitst zal worden. |
Per blok | Vrije resources zullen geselecteerd kunnen worden per blok. De blokken waarvoor dit voorgesteld zal worden, zijn alle blokken van de rechtstreeks of onrechtstreeks geselecteerde deelopdrachten. De selectie bepaalt dus voor welke blokken van welke opdrachten keuzes gemaakt kunnen worden. Merk op dat van zodra een opdracht of deelopdracht meerdere blokken plaatst (bv 4 uur in blokken van 2) dat we voor elk individueel blok de vrije resources apart kunnen kiezen. Dit impliceert dat de originele deelopdracht waartoe die blokken behoren in aparte deelopdrachten of zelfs aparte opdrachten gesplitst zal worden. |
Per deelopdracht | Vrije resources zullen geselecteerd kunnen worden per deelopdracht. De deelopdrachten waarvoor dit voorgesteld zal worden, zijn alle rechtstreeks of onrechtstreeks geselecteerde deelopdrachten. Indien verschillende deelopdrachten verschillende leerkrachten toegewezen zouden krijgen gaat de opdracht in verschillende opdrachten gesplitst worden. |
Per opdracht | Vrije resources zullen geselecteerd kunnen worden per opdracht. De opdrachten waarvoor dit voorgesteld zal worden, zijn alle opdrachten die rechtstreeks of onrechtstreeks geselecteerd werden. |
Om de verschillende opties uit te leggen gebruiken we volgende opdracht van 6 uur die bestaat uit 3 deelopdrachten. Twee deelopdrachten met telkens één blok van 2 uur en één deelopdracht met 2 blokken van 1 uur.
In de Rooster ziet deze opdracht er als volgt uit:
Vrije resources toevoegen vertrekkende van het opdrachten tabblad
Voorbeeld: toevoegen van een extra vrij lokaal voor beide uren van deelopdracht 1 (heeft 2 losse uren)
We selecteren de opdracht en kiezen in het rechtermuisklikmenu de optie “Voeg vrije resources toe > Per uur”. Volgend scherm komt tevoorschijn.
In het linkse paneel ziet men de geselecteerde opdracht(en). Per opdracht (in dit geval één) ziet men de geselecteerde deelopdrachten. Omdat we van de volledige opdracht vertrokken zijn, ziet men de 3 deelopdrachten. Per deelopdracht ziet men de blokken en per blok de uren. Wat hier met startpunt bedoeld wordt is dus een roosterpunt.
Per individueel uur kan men nu volgende soorten vrije resources selecteren:
- Lokalen: kunnen verschillen per deelopdracht maar niet per blok in eenzelfde deelopdracht.
- Vensters: kunnen verschillen per deelopdracht maar niet per blok in eenzelfde deelopdracht.
- Leerkrachten: kunnen niet verschillen per deelopdracht. Toewijzen van een vrije leerkracht aan één (maar niet alle) apart uur, apart blok, of aparte deelopdracht zal leiden tot een splitsing van de opdracht.
In dit voorbeeld kijken we naar vrijdag 6. We kunnen in de kolom Lokalen voor vr6 de dropdown openen en daar zien we alle lokalen die vrij zijn op het geselecteerde uur (vr6). De lokalen die hier zichtbaar zijn kunnen ofwel geen kleur hebben ofwel groen zijn. Lokalen die groen zijn, zijn lokalen waar de klas van de opdracht soms nog les heeft, het is dus geen onbekend lokaal voor de klas. De niet gekleurde lokalen zijn ook vrij op vr6 maar worden nog niet gebruikt door die klas.
Het rechtse paneel kan gebruikt worden om de verschillende resources te bekijken die vrij zijn op het geselecteerde uur van het linkse paneel. In het voorbeeld werd “Lokalen” als type resource geselecteerd bovenaan in het rechterpaneel. Men kan dan eenvoudig met de pijltjes toetsen door alle lokalen scrollen en hun roosters bekijken. In dit geval zullen alle getoonde lokalen vrij zijn op vr6.
We kiezen voor beide uren een vrij lokaal en drukken op OK.
Bekijken we het resultaat in het opdrachten tabblad:
Voor de actie hadden we 3 deelopdrachten. De eerste deelopdracht (1) werd nu in 2 deelopdrachten (1, 4) gesplitst omdat elk individueel uur een ander lokaal gekregen heeft. Indien we beide uren hetzelfde lokaal zouden geven dan gebeurt deze splitsing niet.
We tonen nog even het verschil voor het linkerpaneel moesten we per blok, per deelopdracht, of per opdracht werken:
Per blok: het startpunt van elke individueel blok is zichtbaar en per startpunt (blok in dit geval) kan men vrije resources toevoegen. Het toevoegen van een vrije resource per blok betekent dus dat die resource toegevoegd wordt voor elk uur van dat blok.
Per deelopdracht: men ziet geen blokken en startpunten meer. Men voegt vrije resources toe per deelopdracht (en dus voor alle blokken in die deelopdracht).
Per opdracht: men ziet geen deelopdrachten meer. Men voegt vrije resources toe voor de volledige opdracht (en dus voor alle deelopdrachten van die opdracht).
Voorbeeld: toevoegen van een extra vrije leerkracht voor de blokken van één deelopdracht, in dit geval 1 blok
We selecteren de opdracht en kiezen in het rechtermuisklikmenu de optie “Voeg vrije resources toe > Per deelopdracht”. Volgend scherm komt tevoorschijn.
In het linkse paneel ziet men de geselecteerde opdracht(en). Per opdracht (in dit geval één) ziet men de geselecteerde deelopdrachten. Omdat we van de volledige opdracht vertrokken zijn ziet men de 3 deelopdrachten. We passen deelopdracht 3 aan door een vrije leerkracht te kiezen. Een “vrije leerkracht” betekent hier een leerkracht die vrij is op elk uur van deze deelopdracht. In dit geval op do5 en do6. De voorgestelde leerkrachten zijn allemaal leerkrachten die hier aan voldoen.
Het feit dat bepaalde leerkrachten groen zijn betekent dat die leerkracht reeds les geeft in die klas. De andere leerkrachten, die niet groen zijn, zijn ook vrij maar onbekend voor de klas van de opdracht.
Het rechtse paneel is opnieuw ter info om door alle resources te scrollen die vrij zijn op elk uur van de in het linkerpaneel geselecteerde deelopdracht.
We kiezen voor de deelopdracht een vrije leerkracht EHMO en drukken op OK. Bekijken we het resultaat in het opdrachten tabblad:
We zien dat de oorspronkelijke opdracht gesplitst werd in 2 opdrachten. In het eerste scherm zien we de oorspronkelijke opdracht waarvan de deelopdrachten 1 en 2 overgebleven zijn en in totaal nog 4 van de 6 uur bevat.
In dit tweede scherm zien we de afgesplitste opdracht die die extra leerkracht bevat voor een blok van 2 uur.
Dus, voor elk gewenst verschil in leerkrachten tussen de deelopdrachten van een opdracht worden aparte opdrachten gemaakt. De reden is dat elk uur van een opdracht dezelfde leerkrachten moet bevatten.
Vrije resources toevoegen vertrekkende van een selectie in het Rooster of Planbord
Het enige verschil met een selectie vanuit het opdrachtentabblad is dat men in het Planbord of Roosters een combinatie kan selecteren van volledige opdrachten, deelopdrachten en individuele blokken. Verder maakt het geen verschil uit met de werking vanuit het opdrachten tabblad. Van zodra men een blok selecteert in het Planbord of Rooster zal de volledige deelopdracht, waartoe dit blok behoort, geselecteerd worden. Dat is het verschil met een selectie in het opdrachten tabblad. In de visualizers kan men per deelopdracht werken, in het opdrachten tabblad niet.
Voorbeeld: selecteren van een mix van blokken in het Rooster van een klas
Via de muis en de Ctrl-toets selecteren we hier 3 blokken in het rooster van 4TW. Meer specifiek selecteren we:
- een individueel blok van 1 uur (ma6) van een deelopdracht van 2 uur.
- een blok van 2 uur (vr1) van een multiblok opdracht van 4 uur.
- het blok van 2 uur (ma3) van een opdracht van 2 uur (= volledige opdracht)
We selecteren dus 5 uur maar vermits de selectiegranulariteit de “deelopdracht” is zullen er meer dan deze 5 uur getoond worden bij “Voeg vrije resources toe”. Omdat elke deelopdracht meekomt gaat het over 8 uur zoals we verder in de schermen zullen zien.
Vragen we via rechtermuisklik “Voeg vrije resources toe”, dan bekijken we wat dit betekent voor de 4 opties met deze selectie:
Per uur: van elk geselecteerde deelopdracht zien we ALLE uren.
Per blok: van elk geselecteerde deelopdracht zien we alle blokken.
Per deelopdracht: we zien elke geselecteerde deelopdracht.
Per opdracht: we zien elke geselecteerde opdracht.
Verder is er geen verschil met het toekennen van vrije resources op de manier besproken vanuit het opdrachten tabblad.
Opdrachtwissels doorvoeren
Opdrachten van plaats wisselen met een andere opdracht kan tegemoet komen aan volgende verbeteringen in een berekend rooster:
- Je wil een geïsoleerd uur wegwerken voor een leerkracht
- Je wil een conflict oplossen voor een leerkracht dat bijvoorbeeld ontstaat wanneer een leerkracht, al dan niet gedeeltelijk, de taken overneemt van een andere leerkracht
- Je wil de spreiding van een bepaald vak verbeteren voor een klas
- Je wil een vak voor een klas voor een ander vak plaatsen in een klas
- Je wil een springuur voor een klas wegwerken
Mondriaan biedt de mogelijkheid om voor een geselecteerde opdracht (of beter, een geselecteerd blok) mogelijke wisselopdrachten te vinden waarbij gekeken wordt naar de opties in “Opties | Manueel roosteren”. Dus, elke van de opdrachten die Mondriaan voorstelt zijn kandidaat om van plaats te wisselen met de geselecteerde opdracht waarbij steeds voldaan blijft aan de beperkingen gesteld in het rooster. Via het aanpassen van de opties in “Opties | Manueel roosteren” kan men tijdelijk bepaalde soorten beperkingen uitschakelen om het vinden van wisselopdrachten te vereenvoudigen. Indien dergelijke relaxatie gebeurt en we voeren een wissel uit met een opdracht die géén kandidaat zou zijn zonder deze relaxatie dan moeten we daarna wel weer een ander probleem oplossen. Dat maakt deel uit van het normale manuele roosterproces.
De actie “Zoek wisselopdrachten” kan enkel uitgevoerd worden wanneer men één blok selecteert in een Rooster of in het Planbord (op voorwaarde dat in het planbord de verticale of horizontale as roosterpunten bevat, of indien de assen op uur/dag of dag/uur staan).
Na het oproepen van “Zoek wisselopdrachten” komt er ofwel de melding dat er in de huidige context van “Opties | Manueel roosteren” geen wisselopdrachten te vinden zijn, ofwel verschijnt er een scherm waarin de mogelijke wisselopdrachten getoond worden.
Volgend scherm toont de mogelijke wisselopdrachten voor de opdracht waarvoor het gevraagd werd. De titel van dit scherm bevat de beschrijving van de opdracht waarvoor wisselopdrachten gezocht moeten worden. Het gaat blijkbaar om een deelopdracht van 1 uur PROJ in klas 4IW met leerkracht Schellens_Wim.
Er zijn blijkbaar 3 mogelijke plaatsen waarmee deze opdracht gewisseld kan worden. We zouden kunnen wisselen met de opdracht die op ma2 staat. Dat is een opdracht van een andere leerkracht in dezelfde klas. Als men het rechtermuisklikmenu oproept na selectie van een van de voorgestelde wisselopdrachten krijgt men de gekende opties om: details in het opdrachtentabblad te bekijken, of in een van de visualizers, of om een export naar een file te doen.
Als we deze wissel doorvoeren (knop “Wissel opdrachten”) gaat in 4IW de opdracht op ma1 gewisseld worden met de opdracht op ma2 en kan leerkracht Schellens_Wim een uur later beginnen. Het resultaat in deze rooster na de wissel ziet er als volgt uit:
Betekenis van een wissel en hoe Mondriaan de mogelijkheden bepaalt
De startopdracht waarvoor wissels gezocht moeten worden (we willen namelijk niet dat de startopdracht staat waar ze nu staat) heeft een aantal resources (bv A, B en C) en de startopdracht staat in het rooster van al deze resources op hetzelfde moment in de tijd. Een wissel betekent dan volgende zaken:
- De startopdracht staat in eerste instantie op een bepaalde plaats in het rooster. Stel dat ze roosterpunten (x1, …, xn) inneemt. Dit wil zeggen dat in de roosters van A, B, en C de roosterpunten (x1, …, xn) bezet zijn door deze opdracht.
- We verplaatsen de startopdracht naar een andere plaats in de roosters van A, B, en C. Stel dat we die nieuwe plaats (y1, …, yn) noemen.
- Omdat de resources A, B, en C mogelijk bezet waren door andere opdrachten op de roosterpunten (y1, …, yn), moeten die opdrachten ook ergens anders heen. We noemen deze opdrachten de ‘wisselopdrachten’. Het zijn deze opdrachten die een andere plaats moeten krijgen opdat de startopdracht op de nieuwe roosterpunten (y1, …, yn) kan staan.
- Deze hele wisseloperatie is maar mogelijk indien het resultaat na de wissel aan alle gestelde beperkingen blijft voldoen. Met beperkingen bedoelen we geen resourceconflicten, spreidingsregels, etc. We hebben al aangehaald dat men via de opties “Opties | Manueel roosteren” tijdelijk bepaalde relaxaties kan doen om de wissels te vergemakkelijken.
Mondriaan ondersteunt de gebruiker door alle mogelijke wissels voor te stellen die gevonden kunnen worden door 2 zetten vooruit te kijken. Dit is een vrij eenvoudige benadering (die in een latere versie van Mondriaan eventueel uitgebreid kan worden). Wat het betekent om 2 zetten vooruit te kijken hebben we net uitgelegd. De startopdracht wordt op een andere plaats gezet en we kijken of we alle conflicterende opdrachten zonder conflict een andere plaats kunnen geven. Verdere zetten vooruit kijken laten we nu niet toe via dit mechanisme. Hiervoor kan de MBE (Mondriaan Backtrack Engine) gebruikt worden.
Als men de actie “Zoek wisselopdrachten” uitvoert, genereert Mondriaan dus een lijst met mogelijke andere startpunten voor de startopdracht. Bij elk voorgesteld startpunt toont Mondriaan de wisselopdrachten die zullen verplaatst worden naar een ander moment om de wissel mogelijk te maken. Hebben we bijvoorbeeld 3 resources in een startopdracht van 1 uur dan zullen we om de wissel uit te voeren maximaal 3 wisselopdrachten zien. Het is ook mogelijk dat er een gemeenschappelijke vrije plaats is voor elk van de resources. Als in dat geval die plaats ook een geldig startpunt is voor de startopdracht dan zijn en geen wisselopdrachten en kan de startopdracht gewoon verplaatst worden naar dat punt.
Opmerking: Het zoeken van wisselopdrachten houdt momenteel geen rekening met de mogelijkheid om andere keuzes te maken uit de keuzeresources. De opdrachten worden met de gekozen resources verplaatst in de tijd, er worden geen andere keuzeresources gekozen.
Ongewenste wissels
Als een opdracht uit meerdere gelijke blokken bestaat, heeft het geen zin om het ene blok voor het andere te wisselen. Het resultaat van dergelijke wissel is dat er geen verschil te zien zou zijn. Deze wissels worden dan ook niet voorgesteld.
Echter, wanneer diezelfde blokken niet in één maar over meerdere opdrachten verdeeld zijn dan zal Mondriaan die wissels toch voorstellen. Dit heeft niet veel zin en we beschouwen deze dan ook als ongewenste wissels.
In volgend rooster wordt dit verduidelijkt met 2 voorbeelden:
- De 2 blauwe PVBOU blokken van 4 uur op maandag en dinsdag zullen niet als elkaars wissel voorgesteld worden omdat ze van dezelfde opdracht zijn.
- De 3 groene PAV blokken van 2 uur zijn in feite van dezelfde soort maar zitten in aparte opdrachten. Hierdoor worden ze wel als elkaars wisselsopdrachten voorgesteld. Dit zijn dus ongewenste of nutteloze wissels die geen zin hebben om uitgevoerd te worden.
Enkele voorbeelden van wissels
Voorbeeld: eenvoudige 1-op-1 wissel vertrekkende vanuit het rooster van een leerkracht.
In het voorbeeld dat we al gezien hebben werd een startopdracht van 1 uur gewisseld met een enkele andere opdracht:
- De startopdracht heeft resources (4IW, Schellens, D18) en staat op ma1
- De enige wisselopdracht op ma2 heeft resources (4IW, Van Bael, C11)
- Om te bepalen dat dit inderdaad een goede wissel is worden volgende zaken nagekeken voor de resources:
- 4IW kan makkelijk gewisseld worden want is gemeenschappelijk in deze opdrachten.
- Schellens is volgens zijn rooster vrij op ma2 dus kan van ma1 -> ma2
- D18 is vrij op ma2 en kan dus van ma1 -> ma2
- Van Bael is vrij op ma1 en kan dus van ma2 -> ma1
- C11 is vrij op ma1 en kan dus van ma2 -> ma1
- Verder wordt nagekeken of de nieuwe startpunten voor beide opdrachten kloppen volgens hun uurlijsten, of er aan spreidingen voldaan is, etc.
Voorbeeld: blok van 2 uur die moet verplaatst worden maar dit kan enkel door leerkracht en lokaal conflicten toe te laten
We selecteren een blok van 2 uur in dit rooster van 3EM en na de actie “Zoek wisselopdrachten” zien we dat er geen wissels mogelijk zijn in de huidige context van actieve beperkingen.
Als we tijdelijk de resource conflict beperkingen uitschakelen voor leerkrachten en lokalen kan er misschien wel een wissel gevonden worden. We wijzigen de opties om dit toe te laten als volgt:
Opnieuw voeren we actie “Zoek wisselopdrachten uit”. Blijkbaar zijn er nu 2 mogelijkheden. We kiezen de eerste waarbij we wisselen met één blok van 2 uur dat onder de startopdracht staat.
We voeren de wissel uit en bekijken meteen via “Valideer rooster” welke problemen we veroorzaakt hebben in het rooster. We hebben inderdaad 3 conflicten veroorzaakt. 2 voor leerkrachten en één voor een lokaal.
Om de uitgevoerde wissel nu accepteerbaar te maken moeten deze 3 conflicten opgelost worden. Om deze conflicten op te lossen kunnen we ofwel weer opzoek gaan naar wisselopdrachten voor de conflicterende opdrachten ofwel moeten bijvoorbeeld andere resources inschakelen om de taken over te nemen van de leerkrachten en lokaal.
Als we via de knop “Conflicten” de bestaande resource conflicten oproepen zien we inderdaad de problemen die we gecreëerd hebben door de wissel. We zien dat er 2 tabs aangemaakt werden. Er is een tab voor de 2 leerkracht conflicten en een tab voor het lokaal conflict.
Dit wordt behandeld in de sectie “Resource Conflicten Oplossen”.
Conflicten bekijken en oplossen
Als we het over conflicten hebben dan gaat het steeds over resourceconflicten.
Ontstaan van conflicten
Resourceconflicten ontstaan doordat verschillende opdrachten dezelfde resource op hetzelfde moment bezetten. Dergelijke conflicten kunnen op verschillende manieren ontstaan:
- Door manueel manipulaties te doen in het rooster. Bijvoorbeeld via schuifoperaties, door wisselopdrachten te bepalen, etc. Alles hangt hier af van de opties die gezet zijn in “Opties | Manueel roosteren” en wat de gebruiker juist doet. Hij kan conflicten veroorzaken, al dan niet bewust.
- Door de MBE (Mondriaan Backtrack Engine) een deel of heel de rooster te laten berekenen waarbij bepaalde opties uitgevinkt zijn in “Opties | Roosteren”. Een voorbeeld is “Lokalen meeroosteren” uitvinken. De MBE houdt dan geen rekening met vaste lokalen waardoor de opdrachten dus conflicten kunnen veroorzaken op lokalen.
- De enige andere manier waarop dit kan ontstaan is wanneer de MBE een subset van de opdrachten berekend heeft (op vraag van de gebruiker) waarbij niet alle vastgezette opdrachten meegeselecteerd werden. Vastgezette opdrachten zijn voor Mondriaan steeds geplaatst in het rooster. Als men deze dan niet meeneemt in de selectie naar de MBE dan kan het zijn dat na de berekening conflicten ontstaan. Dat is een uitzonderlijke situatie.
Merk op dat het concept “conflict” géén rekening houdt met opties in “Opties | Roosteren” en ook niet met “Opties | Manueel roosteren”. Het enige wat wel effect heeft op een resourceconflict is het al dan niet actief zijn van de resource. Dit is een setting die men kan doen in elk “Elementen” tabblad. Dus, als je een lokaal op inactief zet dan kunnen er ook geen conflicten voor bestaan.
Bekijken van conflicten
Conflicten kunnen op verschillende manieren zichtbaar gemaakt worden.
Valideer Rooster
Via “Valideer Rooster” krijgen we het gekende overzicht van fouten en waarschuwingen. Onder de rubriek “Fouten | Conflicterende opdrachten” krijgt men een overzicht van de opdrachten die resourceconflicten veroorzaken. In het getoonde voorbeeld zien we 2 sets van 2 opdrachten die conflicten veroorzaken:
- opdracht 527 en 495 veroorzaken een conflict op roosterpunt di5 voor de leerkracht Peter en lokaal D33
- opdracht 858 en 495 veroorzaken een conflict op roosterpunt di5 voor leerkracht Paul
Merk op dat “Valideer rooster” geen rekening houdt met de instellingen in “Opties | Roosteren” en al zeker niet met die in “Opties | Manueel roosteren”. Als er een conflict is zal dit steeds naar boven komen.
Valideer Rooster met opties
Via de instellingen in “Opties | Roosteren” kan men ervoor kiezen om tijdens het roosterproces (uitgevoerd door de MBE) geen rekening te houden met bepaalde types van resources. Een voorbeeld van deze instellingen wordt hier getoond. Stel dat we vragen om geen rekening te houden met de vaste lokalen die in de opdrachten zitten voor de berekening van een rooster via de MBE.
Indien we nu via “Valideer Rooster” naar de conflicten zouden kijken dan krijgen we nog steeds hetzelfde te zien. Het lokaal D33 zou nog steeds conflicteren. Om rekening te houden met de gekozen opties kan de gebruiker de knop “Valideer Rooster met opties” kiezen zoals hier getoond:
Het enige verschil dat we nu zien is dat het conflict D33 niet meer vermeld wordt. Dit kan handig zijn om tijdens het onderzoeken van problemen in het rooster bepaalde problemen weg te filteren.
Linkerpaneel “Conflicten” in de visualizers
In het linkerpaneel in de visualizers kan men naar de subtab “Conflicten” navigeren om alle bestaande conflicterende opdrachten te bekijken. Dit zijn dus opdrachten die in het planbord en roosters te zien zijn maar wel conflicten veroorzaken. Merk op dat een conflict maar veroorzaakt kan worden als er minstens 2 opdrachten in het spel zijn die dezelfde resource op hetzelfde roosterpunt zetten. Alle opdrachten die in een conflict betrokken zijn zullen dan ook in het linkerpaneel getoond worden.
In volgend voorbeeld zien we weer dezelfde conflicterende opdrachten als voorheen.
Merk op dat de conflicten in dit linkerpaneel dezelfde zijn als diegene die we zien als in “Valideer Rooster”. Er wordt dus geen rekening gehouden met de opties in “Opties | Roosteren” en ook niet met “Opties | Manueel roosteren”.
Rechtermuisklikacties voor conflictenopdrachten in het linkerpaneel
Afhankelijk van de visualizer (Planbord of Rooster) heeft men bepaalde acties die mogelijk zijn door een rechtermuisklik op een opdracht uit te voeren:
Roosters | Planbord |
![]() |
![]() |
De rechtermuisklikacties zijn:
Toon conflicten | Heeft hetzelfde effect als de knop “Conflicten” in de menubalk en toont het conflictenscherm waarin conflicten bekeken en opgelost kunnen worden. Dit scherm wordt verder in deze sectie bekeken. Is beschikbaar in beide visualizers. |
Toon conflicterende elementen | Voor elk van de conflicterende resources in de opdracht wordt een roostergrid geopend waarin het rooster van de resource bekeken kan worden (maximum 5). Dit is enkel beschikbaar in Roosters. |
Toon resource in andere grid > | Hier kan de gebruiker kiezen om eender welke resource uit de conflicterende opdracht in een roostergrid te bekijken. |
Opdrachten inkleuren op basis van conflicten
Om het visueel nog eenvoudiger te maken kunnen we via “Opties | Andere” er ook voor kiezen om alle opdrachten in de visualizers in te kleuren op basis van het al dan niet veroorzaken van een resourceconflict. De kleuren die hiervoor gebruikt worden zijn rood (veroorzaakt conflict) en groen (veroorzaakt geen conflict).
Het resultaat ziet er in de visualizers (in dit voorbeeld “Roosters”) er als volgt uit. Het is meteen duidelijk waar er conflicten optreden.
Het Conflictenscherm
Het conflictenscherm laat toe om per resource type en per resource, waarvoor conflicten bestaan, te onderzoeken welke opdrachten deze conflicten veroorzaken. In het voorbeeld dat we hier tonen zien we opnieuw dezelfde 3 resources waarvoor conflicten bestaan. Per resource type is er een apart tabblad met de opdrachten die het conflict mee veroorzaken. Omdat dezelfde opdrachten verschillende resourceconflicten kunnen veroorzaken is het dus mogelijk dat dezelfde opdracht te zien is in verschillende van deze tabbladen.
Rechtermuisklikacties in linker en rechterpaneel van het conflictenscherm
Opmerking: Indien men “Bekijk op Rooster” vraagt met als doel de opdracht te bekijken in de Roosters van de samenstellende resources kan het zijn dat men niet onmiddellijk ziet wat men verwacht. Deze operatie neemt namelijk steeds van elke type resource (Klas, Leerkracht, Lokaal) de eerst voorkomende in alfabetische volgorde. Als je dan een opdracht hebt met 2 lokalen A en B en lokaal B geeft het conflict dan zal men toch het rooster van A zien staan. Door via de rechtermuisklik “Toon resource in andere grid >” uit te voeren kan men B dan uiteraard wel tevoorschijn halen.
Kolommen in het rechterpaneel
Voor de geselecteerde resource worden in het rechterpaneel de opdrachten getoond die een conflict veroorzaken. Volgende read-only kolommen zijn beschikbaar in dit rechterpaneel:
Roosterpunt | De plaats waar het conflict zich voordoet. Merk op dat het voor blokopdrachten met meer dan één uur perfect mogelijk is dat het conflict zich niet op alle roosterpunten van dat blok voordoet. |
ID | Unieke identifier van de opdracht. |
Klassen | De klassen van de opdracht. |
Leerkrachten | De leerkrachten van de opdracht. |
Vakken | De vakken van de opdracht. |
Lokalen | De lokalen van de opdracht. Hier kan een “en:” en/of een “of:” vermeld staat voor de naam/namen van de lokalen. “en:” betekent in dit geval dat het om een vast lokaal gaat. “of:” betekent dat het om een set van keuzelokalen gaat. |
Gekozen Lokalen | De voor dit roosterpunt gekozen lokalen. Indien hier een lokaal vermeld staat dat zal ook in de kolom “Lokalen” dit lokaal als een van de mogelijke keuzes vermeld staan in een “of:” lijn. |
Vensters | De vensters van de opdracht. Hier kan een “en:” en/of een “of:” vermeld staat voor de naam/namen van de vensters. “en:” betekent in dit geval dat het om een vast venster gaat. “of:” betekent dat het om een set van keuzevensters gaat. |
Gekozen Vensters | De voor dit roosterpunt gekozen vensters. Indien hier een venster vermeld staat, dan zal ook in de kolom “Vensters” dit venster als een van de mogelijke keuzes vermeld staan in een “of:” lijn. |
Type | Het type opdracht. Kan “Les” of “Wens” zijn. |
Oplossen van conflicten
Indien men manueel resourceconflicten wenst op te lossen dan kan het conflictenscherm hulp bieden. Het is evenwel niet noodzakelijk om het conflictenscherm hiervoor te gebruiken maar het is wel een handige ondersteuning bij het manueel oplossen van conflicten.
Het conflictenscherm toont per resource de conflicterende opdrachten. Heeft men een opdracht geselecteerd in het rechterscherm (zie voorbeeld hiervoor) dan is dat een opdracht die voor een bepaalde resource (die geselecteerd is) een conflict veroorzaakt op een bepaald roosterpunt (wat als eerste kolom vermeld wordt in de opdrachtlijn). Via het rechtermuisklikmenu kan men de actie “Vervang <xxx> door …” kiezen. Via deze actie kan met de resource waarvoor het conflict bestaat vervangen door een andere vrije resource van hetzelfde type. Alle vrije resources worden in een menu getoond. Een specifieke mogelijkheid voor klassen die in conflict met zichzelf zijn, is om de klas te vervangen door een partitie-element. Klas 1A staat bijvoorbeeld in conflict met zichzelf voor LO met 2 verschillende leerkrachten. Waarschijnlijk was het dan de bedoeling om klas 1A te splitsen in 2 groepen, misschien volgens geslacht. Vervangt men 1A dan in de ene opdracht door 1A:jongen en in de andere door 1A:meisje dan is het conflict ook opgelost.
Belangrijk: Een beperking van het oplossen van conflicten is dat het gebeurt per roosterpunt. Vanwege deze beperking is het mogelijk dat een opdracht wordt opgesplitst in meerdere opdrachten. Een opdracht wordt nooit in deelopdrachten gesplitst, steeds in opdrachten. Volgende gevallen zijn te onderscheiden wanneer op een roosterpunt een resource vervangen wordt door een andere resource voor een bepaalde opdracht:
- Het gaat om een blok van 1 uur en de vervangresource maakt WEL deel uit van een keuzelijst van resources in die opdracht: In dit geval wordt de opdracht NIET gesplitst. Deze operatie is dus dezelfde als het vervangen van een keuzeresource door een andere voor dit uur. Merk op er in dit gunstigste geval toch geen rekening gehouden wordt met het aspect “Ontdubbelen” van de opdracht. Deze beperking kan dus nog wel geschonden worden.
- Het gaat om een blok van 1 uur en de vervangresource maakt GEEN deel uit van een keuzelijst van resources in die opdracht: in dit geval wordt de opdracht WEL gesplitst. Het ene uur waarvoor deze wijziging gebeurd is wordt afgesplitst in een aparte opdracht.
- Het gaat om een blok van MEER dan 1 uur. Bijvoorbeeld 4 uur. In dit geval wordt het blok opgesplitst in 4 individuele uren. De 3 uren waarvoor niets gewijzigd is blijven samen in één opdracht. Het uur waarvoor de resourcewijziging gebeurd is wordt afgesplitst in een aparte opdracht.
Belangrijk: Conflicten kunnen in het conflictenscherm enkel opgelost worden door in een van de conflicterende opdrachten de conflicterende resource te vervangen door een andere resource van hetzelfde type (of een klas vervangen door een partitie-element). Het scherm biedt dus géén andere mogelijkheden zoals het verplaatsen (verschuiven) in de tijd of keuzeresources kiezen. Die 2 laatste opties kunnen dikwijls beter eerst uitgetest worden alvorens over te gaan tot het oplossen van resourceconflicten door resources in opdrachten te wijzigen.
Belangrijk: Conflicten oplossen houdt geen rekening met het aspect “Ontdubbelen” van een opdracht.
Voorbeeld: vervangen van een lokaal in een conflicterende opdracht:
We openen het Conflictscherm, gaan naar de tab van conflicterende lokalen en selecteren D33. We zien de 2 opdrachten (495 en 527) die het conflict veroorzaken op di5. We selecteren 495 en via de rechtermuisknop vragen we “Bekijk op Rooster”. Op de achtergrond verschijnen de 3 grids met roosters voor de eerste resource van elk type in deze opdracht. We zien in het rooster van D33 duidelijk het conflict. Vervolgens doen we weer rechtermuisklik op 495 en vragen “Vervang D33 door …”. Een lijst van lokalen wordt getoond die vrij zijn op di5. We selecteren W1:
Na selectie van W1 wordt op de achtergrond de informatie in de Roosters aangepast en ziet men ook in het Conflictenscherm dat de Lokalen tab verdwenen is omdat er geen lokaalconflicten meer zijn. Wat is er nu in de opdracht gewijzigd die we aangepast hebben door op di5 het lokaal W1 te selecteren ipv D33:
- De opdracht was oorspronkelijk een blok van 2 uur. Deze opdracht stond op de uren di5 en di6. Omdat op di5 nu een ander lokaal staat dan op di6 voor dat zelfde blok, is de opdracht in 2 losse uren gesplitst.
- Op di5 hebben we nu een opdracht van 1 uur met lokaal W1
- Op di6 hebben we nu een opdracht van 1 uur met het oude lokaal D33.
Belangrijk om te onthouden is dat dergelijke acties de opdracht dus effectief kunnen wijzigen. Niet alleen kunnen er heel andere resources in gezet worden dan oorspronkelijk bedoeld, de opdrachten kunnen ook opgesplitst worden door deze acties.
Voorbeeld: vervangen van een leerkracht in een conflicterende opdracht:
We hernemen weer hetzelfde voorbeeld, selecteren de eerste leerkracht Maris, selecteren de eerste conflicterende opdracht (858) en vragen via rechtermuisklik “Bekijk op Rooster”. Op de achtergrond zien we de 3 grids verschijnen voor de eerste resource van elk type in de opdracht. We zien duidelijk in het Rooster van Maris dat er een conflict is op di5. Via een rechtermuisklik vragen we voor opdracht 858 om alternatieve leerkrachten te zoeken. De lijst van leerkrachten die vrij zijn op di5 wordt getoond. We selecteren Buts.
Na selectie van Buts wordt op de achtergrond de informatie in de Roosters aangepast en ziet men ook in het Conflictenscherm dat de Leerkrachten tab nu nog maar 1 conflict toont omdat we er net een weggewerkt hebben. Wat is er nu in de opdracht gewijzigd die we aangepast hebben door op di5 het leerkracht Buts te selecteren i.p.v. Maris? :
- De opdracht was oorspronkelijk een blok van 1 uur. Omdat het maar 1 uur is blijft de opdracht intact.
- Op di5 hebben we nu een opdracht van 1 uur met leerkracht Buts ipv Maris.
Ook hier is de oorspronkelijke opdracht gewijzigd. Er staat nu effectief een leerkracht in die niet oorsponkelijk bedoeld was voor deze opdracht.
Voorbeeld: Een blok van 4 uur heeft een lokaal en leerkracht conflict op 1 van de 4 uren
We hebben een opdracht van 4 uur op vr1. We zien de opdracht in 3 roosters en in het rooster van lokaal D03 zien we een conflict met een opdracht op vr3 die hetzelfde lokaal gebruikt. Er is ook een conflict voor leerkracht De Reyck maar dat Rooster wordt nu even niet getoond.
Om het conflict duidelijker te tonen kunnen we via “Opties | Andere” de kleuring volgens conflicten selecteren. In het rooster van D03 maakt het linkse rode blokje deel uit van de opdracht van 4 uur, het rechtse rode blokje is de andere conflicterende opdracht van 1 uur.
De makkelijkste manier om dit conflict op te lossen zou zijn om die storende opdracht van 1 uur op vr3 te verplaatsen. We zouden ook voor deze ene opdracht van 1 uur een ander lokaal kunnen kiezen. Echter, om te tonen wat het effect is op het blok van 4 kiezen we ervoor om op vr3 een ander lokaal te kiezen voor de opdracht van 4 uur. In het opdrachten tabblad ziet de opdracht van 4 uur er als volgt voor het conflict werd opgelost:
We lossen het conflict op door opdracht 478 (blok van 4 uur) lokaal G01 te kiezen voor vr3.
Het resultaat in Roosters ziet er dan als volgt uit. De originele blokopdracht van 4 uur is opgesplitst in 4 losse blokjes. Het rode blokje betekent dat er nog steeds een conflict is maar niet meer met de resources die nu zichtbaar zijn. Het gaat hier om leerkracht De Reyck.
Het effect van deze operatie in het opdrachten tabblad:
- De oorsponkelijke opdracht van 4 uur in blok is vervangen door 2 opdrachten. Een opdracht van 3 losse uren en een opdracht van 1 uur.
- De opdracht van 1 uur verschilt van de andere omdat daar het lokaal vervangen werd van D03 naar G01.
Het oplossen van het leerkrachtconflict kan dan verder als volgt verlopen: We kiezen opnieuw het conflictenscherm en selecteren voor De Reyck opdracht 878 (is de afgesplitste van de vorige operatie) en vervangen de leerkracht door Kegelaers.
Het resultaat is dat er geen rode blokjes meer te zien zijn. Deze conflicten zijn opgelost.
De wijziging in het opdrachten tabblad:
De reeds afgesplitste opdracht 878 heeft nu een extra verschil gekregen met de originele, nl de leerkracht is ook vervangen door een andere.
Voorbeeld: Lokaal met conflict kan vervangen worden door een andere keuze van lokaal.
In dit voorbeeld hebben we één opdracht voor 5HT van 2 blokken van één uur waarbij elk blok uit lokalen (B31,B32) mag kiezen. Op ma3 hebben we B31 en op do4 hebben we B32. Echter, op do4 heeft B32 een conflict omdat het ook nog door een andere opdracht gebruikt wordt. Wat we hier willen aantonen is dat indien we dit conflict oplossen via het Conflictenscherm, en we ervoor zorgen dat we in onze opdracht het lokaal B32 vervangen door B31 (een keuzeresource die vrij is op do4), dat Mondriaan in dit geval de opdracht NIET opsplitst in 2 opdrachten. Mondriaan probeert in dit geval, indien het oplossen van een conflict inhoudt dat er gewoon andere keuzeresources gekozen worden, dat de opdracht niet gesplitst wordt en dus intact blijft. Effect is gelijk aan het wijzigen van een keuzeresource in dit geval.
Het conflict is te zien in deze Roosters. B32 heeft 2 opdrachten op do4.
Voor de opdracht waarvan we vertrokken zijn kiezen we op do4 een ander lokaal. Wetende dat B31 een keuzeresource is kiezen we die. De andere getoonde resources zijn ook mogelijk maar zijn geen keuzeresources. Zij zouden wel als resultaat hebben dat de opdracht gesplitst wordt.
Na het oplossen van het conflict zien we dat het verdwenen is in de Roosters.
Bekijken we de opdracht weer in het Opdrachtentabblad dan zien we inderdaad dat de opdracht gewoon intact gebleven is. In “Gekozen lokalen” zien we nu enkel B31 staan omdat deze gekozen werd voor beide blokken.
Voorbeeld: Klas in conflict met zichzelf met 3 leerkrachten en 3 lokalen.
(Beschikbaar vanaf versie 2024.1.0)
Klas KL_HW staat hier 3 keer op hetzelfde roosterpunt, zowel op ma8 als op di8
Het conflictscherm toont het volgende:
Via rechtermuisklik vervangen we in de eerste opdracht de klas door een partitie-element van de partitie Godsdienst:
Resultaat: Omdat we het voor de hele opdracht gedaan hebben is het nu op ma8 en di8 aangepast.
Het conflict is nog niet weg. Ze herhalen dat voor de andere 2 opdrachten en kiezen PGD en RKG als partitie-elementen.
Conflict is verdwenen.