Andy Cole een Chemisch Proces: Casestudie van Lanxess Een Hiërarchische Aanpak voor Productieplanning in Academiejaar 2008-2009 Faculteit Ingenieurswetenschappen Voorzitter: prof. dr. ir. Hendrik Van Landeghem Vakgroep Technische bedrijfsvoering operationeel onderzoek Master in de ingenieurswetenschappen: bedrijfskundige systeemtechnieken en Masterproef ingediend tot het behalen van de academische graad van Begeleiders: Carles Sitompul, Patrick Missiaen Promotor: prof. dr. El-Houssaine Aghezzaf
197
Embed
Een Hiërarchische Aanpak voor Productieplanning in een ...lib.ugent.be/fulltxt/RUG01/001/418/187/RUG01-001418187_2010_0001_AC.pdf · Een Hiërarchische Aanpak voor Productieplanning
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Andy Cole
een Chemisch Proces: Casestudie van LanxessEen Hiërarchische Aanpak voor Productieplanning in
Academiejaar 2008-2009Faculteit IngenieurswetenschappenVoorzitter: prof. dr. ir. Hendrik Van LandeghemVakgroep Technische bedrijfsvoering
operationeel onderzoekMaster in de ingenieurswetenschappen: bedrijfskundige systeemtechnieken en
Masterproef ingediend tot het behalen van de academische graad van
Begeleiders: Carles Sitompul, Patrick MissiaenPromotor: prof. dr. El-Houssaine Aghezzaf
Development of a Hierarchical Production Planningin a Chemical Process: Casestudy of Lanxess
Andy Cole
Supervisor(s): prof. dr. El-Houssaine Aghezzaf, Patrick Missiaen
Abstract— A Mixed Integer Linear Programming model is proposed inthis paper that targets the optimal production scheduling for a specificchemical process. The model takes into account all the standard con-straints encountered in production scheduling. There are also some con-straints that are typical for this chemical process such as sequence depen-dent changeovers. The ultimate goal is a production plan that states whathas to be produced every month by using the theory of Hierarchical Pro-duction Planning. The model is applied to a chemical production plant,Lanxess located in Belgium.
Keywords— Hierarchical Production Planning, Time Aggregation,Sequence-Dependent Changeovers, Linear Programming, Optimization,Chemical Process
I. INTRODUCTION
HIERARCHICAL production planning is a well-covereddomain in the literature. Instead of one model, it uses sev-
eral models on different levels. Most of the time, the models arelinked with the different managerial decision areas. The strate-gic or first level looks for the best production planning on a longrolling horizon, typically one year ahead. The following levelsare considered as more operational, more in-depth levels, butover a shorter time span.
Between these levels, there is a need for a carefully thought-out aggregation and disaggregation procedure. The upper levelmakes estimations for the production of large groups of productsover a long time, while the lower level splits these estimationsto the specific products in a shorter time period. This aggrega-tion also means that you need aggregated parameters for productgroups. To make an estimation of these parameters, you oftenneed some iterative procedures between the different levels. Sothis method is not just a top-down approach.
The big advantage of hierarchical production planning is thegain in computational effort because you can solve some smallerproblems instead of one big. On the other hand, due to the splitin different levels, the optimal solution can never be reached.Some accuracy is lost on each level and in the end, you can onlyreach a suboptimal solution. The relatively fast way though tocome to this solution is a big advantage.
II. AIMS
The ultimate aim is to create models in a hierarchical waywhich provides realistic and optimal production estimations fora chemical process. The model ensures that the production goalsare met, while the costs are minimized. The costs include vari-able production costs, inventory costs, changeover costs andshortage costs. The model should also cope with a list of 103
A. Cole is with the Industrial Management Department, Ghent University(UGent), Gent, Belgium. E-mail: [email protected] .
constraints provided by the company. In the end, we shouldhave estimates of the product quantities for each month.
III. SOLUTION
Because of the small amount of products and because none ofthe products can be seen as almost similar, it is not relevant toaggregate the products in groups. We only use the aggregationin time. For the first model, we use a rolling planning horizonfrom 12 months with a planningsbucket of one month, for thesecond model, we use a bucket from one day with a horizon ofone month.
The solution algorithm looks like in figure 1
Fig. 1. Solution algorithm
First, we solve the first phase. This one looks for the cheapestsolution for the coming twelve months and gives the first esti-mates of the product quantities.
Thereafter, phase two checks for each month seperately ifthe proposed estimation is feasible or not. This phase tries tomake a schedule for the whole estimation and minimizes the to-tal makespan.
After the scheduling, the analysis part checks if the makespanis smaller than the available amount of days in that month. If themakespan is smaller, which means that the scheduling is feasi-ble, we verify if there are some days at the end of the monthwhich are not used for the scheduling. If this is the case, wememorise these days and use them for solving problems in an-other month. In the end, we move on to the next month in phase2.
If the makespan is not smaller, it means that the schedulingis not feasible. We try to solve the problem by using the freedays from a month before. If there are no free days availablewe return to phase one and make new estimates for the wholeproduction planning after restricting capacity. The whole storygoes about: ’Are there enough days to schedule the planning inthe month?’, so if we have for example two days in shortage, wego back to phase one and solve it again with a difference on theamount of days for the particular month from two days.
IV. APPLIED TO THE CASE
The most difficult part exists in translating all the restrictionsto the different levels. Most of the restrictions are written indays and tell something about the flow between the products indays. Therefore it is not that easy to make the aggregation to thefirst level, because the only thing we could model at this level isthe flow between two months.
So the main part is the modelling of the first phase in orderto make very accurate estimates, which should avoid a lot ofproblems in the second phase. For the real mathematical part ofthis work, we like to refer to the whole work because it is reallyinteresting to discover how we solved all aggregation problemsexcept for one.
There is one type of restriction that we did not include in themodel. All the restrictions about forbidden days for changeoversare ignored. This is normally a typical restriction for the secondphase, but if it is not managed in the first one, there could be alot of problems in the second one, because the production cam-paigns must wait on the correct day to start a changeover. Thisleads to a lot of capacity losses and with an estimation lookingfor the smallest shortage cost, each capacity loss creates prob-lems in the second phase. Because of implementation difficul-ties we ignored them in the first phase.
V. RESULTS
The first phase works perfectly and gives wonderfull estima-tions. The only disadvantage is the calculation time. At thismoment, starting from three hours or more, you can reach asolution which is very close to an optimal one. In the secondphase, unfortunately, there is a small error. This is no big prob-lem, though, due to the large calculation time of the first phase.The feedback mechanism could not be triggered too much, sothat the calculation time would not boom. That is the reasonwhy the first phase is needed to be as accurate as possible. Sothe first phase could actually be used on his own.
VI. CONCLUSION
At this moment, there are three problems that we do not solve.Firstly, we have the small error in phase two. This is actuallynot a real problem. Secondly, we have the large calculation time
and thirdly, we have ignored the restrictions about the forbiddendays for changeovers.
For the last two problems, We propose to make some adap-tations in the solution algorithm. Instead of checking for eachmonth if the planning is feasible, it’s justifiable to only check thefirst two months, because the planning after these two monthswill certainly change. This adaptation means that there is atmost two times a feedback which implies a great reduction incalculation time.
Second adaption: if we just check the first two months itis allowed to only implement the restrictions about forbiddenchangeovers for the first two months in the first phase.
After implementing these last adaptations, we are sure thatthe output from the hierarchical planning gives great results forthis specific problem.
ACKNOWLEDGMENTS
The author would like to thank prof. dr. E.H. Aghezzaf andP. Missiaen for their much needed and appreciated help.
REFERENCES
[1] Sven Axsater, “Aggregation of product data for hierarchical productionplanning,” Operations Research, vol. 29, no. 4, pp. 744–756, 1981.
[2] Gabriel R. Bitran, Elizabeth A. Haas, and Arnoldo C. Hax, “Hierarchicalproduction planning: A single stage system,” Operations Research, vol.29, no. 4, pp. 717–743, 1981.
[3] Gabriel R. Bitran, Elizabeth A. Haas, and Arnoldo C. Hax, “Hierarchicalproduction planning: A two-stage system,” Operations Research, vol. 30,no. 2, pp. 232–251, 1982.
[4] Gabriel R. Bitran and Arnoldo C. Hax, “Disaggregation and resource al-location using convex knapsack problems with bounded variables,” Man-agement Science, vol. 27, no. 4, pp. 431–441, 1981.
[5] J. Erschler, G. Fontan, and C. Merce, “Consistency of the disaggregationprocess in hierarchical planning,” Operations Research, vol. 34, no. 3, pp.464–469, 1986.
[6] Matthew J. Liberatore and Tan Miller, “A Hierarchical Production Plan-ning System,” INTERFACES, vol. 15, no. 4, pp. 1–11, 1985.
[7] M. M. Qiu and E. E. Burch, “Hierarchical production planning andscheduling in a multi-product, multi-machine environment.,” InternationalJournal of Production Research, vol. 35, no. 11, pp. 3023 – 3042, 1997.
[8] Germaine H. Saad, “Hierarchical production-planning systems: Exten-sions and modifications,” The Journal of the Operational Research Soci-ety, vol. 41, no. 7, pp. 609–624, 1990.
[9] E. Vicens, M. E. Alemany, C. Andrs, and J. J. Guarch, “A design and ap-plication methodology for hierarchical production planning decision sup-port systems in an enterprise integration context,” International Journalof Production Economics, vol. 74, no. 1-3, pp. 5 – 20, 2001.
[10] Gabriel R. Bitran and Arnoldo C. Hax, “On the Design of HierarchicalProduction Planning Systems,” Decision Sciences, vol. 8, no. 1, pp. 28–55, 1977.
i
Voorwoord
In dit voorwoord wil ik in de allereerste plaats mijn promotor prof. dr. El-Houssaine
Aghezzaf bedanken om mij de mogelijkheid aan te bieden deze thesis uit te voeren en om
mij hierin vervolgens te ondersteunen en te begeleiden als geen ander. Dankzij zijn hulp
was ik in staat om deze thesis uit te werken tot wat het geworden is. Bedankt om tijd te
maken voor al mijn ’kleine’ problemen op elk moment van de dag en voor de opbouwende
commentaren.
Ik zou ook nadrukkelijk de heer Patrick Missiaen willen bedanken voor het geduld dat hij
aan de dag heeft gelegd bij elke vraag die ik stelde. De eindeloze emailcorrespondentie over
de probleemsituatie bij Lanxess spreekt hier voor zich. Maar ook bedankt voor de kritische
blik op mijn resultaten om zo tot een correct model te kunnen komen.
De mensen van de vakgroep technische bedrijfsvoering die me geholpen hebben bij andere
technische en niet-technische problemen verdienen ook een dankjewel. Hulp bij het program-
meergedeelte of een vriendelijke goedemorgen als het weer eens veel te vroeg was, waren een
enorme opsteker.
Voorts zou ik graag m’n metgezellen uit de PC-klas van Zwijnaarde willen bedanken. Zon-
der jullie was het daar vrij stil en eenzaam. Bedankt voor de vele droge moppen, de kleine
ironische opmerkingen en de ’feestjes’ overdag. Ze waren een welgekomen bron van afwisse-
ling.
Mijn gezinsleden ben ik onnoemelijk dankbaar voor al hun indirecte en directe aanmoedi-
gingen, voor de talrijke kleine attenties en om mijn thesis taalkundig correct te maken. Alle
kennissen, vrienden, familie die me met net zo veel oprechtheid en vertrouwen ondersteun-
den, bedankt!
En als laatste wil ik mijn vriendin bedanken om me tijdig weer met mijn voeten op de grond
te zetten als ik het allemaal weer te losjes opnam, om me aan te moedigen verder te werken
indien er toch leukere dingen te doen waren en om de momenten zonder thesisgedachten op
te vrolijken.
Andy Cole, 1 juni 2009
Universiteit Gent
Faculteit Ingenieurswetenschappen
Vakgroep Technische Bedrijfsvoering
Verklaring in verband met de toegankelijkheid van de masterproef
Ondergetekende, Andy Cole, afgestudeerd aan de UGent in het academiejaar 2008-2009 en
auteur van de masterproef met als titel:
Een Hierarchische Aanpak voor Productieplanning in een Chemisch Proces:
Casestudie van Lanxess
verklaart hierbij:� dat hij geopteerd heeft voor de hierna aangevinkte mogelijkheid in verband met de
consultatie van zijn masterproef:
❐ de masterproef mag steeds ter beschikking gesteld worden van elke aanvrager;
❐ de masterproef mag enkel ter beschikking gesteld worden met uitdrukkelijke,
schriftelijke goedkeuring van de auteur;
❐ de masterproef mag ter beschikking gesteld worden van een aanvrager na een
wachttijd van x jaar;
✔❐ de masterproef mag nooit ter beschikking gesteld worden van een aanvrager;� dat elke gebruiker te allen tijde gehouden is aan een correcte en volledige bronverwij-
zing.
Gent, 1 juni 2009
Andy Cole
Een Hierarchische Aanpak voor
Productieplanning in een Chemisch
Proces:
Casestudie van Lanxess
door
Andy Cole
Masterproef ingediend tot het behalen van de academische graad van
Master in de ingenieurswetenschappen:
bedrijfskundige systeemtechnieken en operationeel onderzoek
Academiejaar 2008–2009
Promotor: prof. dr. E.-H. Aghezzaf
Begeleiders: P. Missiaen en C. Sitompul
Faculteit Ingenieurswetenschappen
Universiteit Gent
Vakgroep Technische bedrijfsvoering
Voorzitter: prof. dr. ir. H. Van Landeghem
Samenvatting
Hoofdstuk 1 geeft de lezer een algemene indruk van de inhoud van deze masterproef. Inhoofdstuk 2 wordt de context van deze masterproef kort gesitueerd binnen de uitgebreideliteratuur over productieplanning. De probleemstelling van de specifieke case die hier wordtuitgewerkt, komt aan bod in hoofdstuk 3. Hoe de algemene structuur van de oplossing er uitziet wordt in hoofdstuk 4 uiteengezet om vervolgens stuk voor stuk het wiskundige modeluit te werken voor de verschillende onderdelen: hoofdstukken 5, 6, 7 en 8 voor respectievelijkde analyse van de terugkoppeling, de preprocessing stap, level 1 en level 2. Het uiteindelijketoepassen van het model en de correcte werking ervan wordt in hoofdstuk 9 besprokenom dan ook in ditzelfde hoofdstuk conclusies te trekken. Voor de volledigheid worden degegevens waarmee het model wordt getest en de broncode meegegeven in de appendix.
HET ultieme doel van deze masterproef is een bruikbaar lineair model opstellen dat de
productieplanning genereert voor een chemisch proces voor de komende twaalf maan-
den vertrekkende van de voorspelling van de vraag en de beginvoorraden van de producten.
Dit is een uitbreiding op het werk van Andy Maenhout die getracht heeft om dit probleem
op te lossen aan de hand van een model. Computationele beperkingen zorgden er echter voor
dat men niet verder kwam dan een productieplanning voor enkele maanden. Vandaar dat
we op zoek gingen naar een alternatieve methode om deze productieplanning te verkrijgen.
Hierarchische productieplanning
Bij een hierarchische productieplanning maakt men gebruik van meerdere modellen om een
productieplanning te genereren. Op het hoogste level gaat men strategische beslissingen
nemen door het aggregeren van producten en door het gebruiken van grote tijdsperiodes.
Een planningshorizon van 1 jaar is hierbij zeker niet vreemd. De aggregatie van producten
in de tijd vraagt een specifieke behandeling. Niet elk product uit dezelfde productgroep
heeft dezelfde parameters, maar de producten uit een groep worden wel beschreven met een
parameter. Men heeft dus nood aan geaggregeerde verwachte waarden.
Het volgende level gaat de resultaten uit het bovenliggende level disaggregeren in zowel de
tijd als over de verschillende producten van een groep. Bijvoorbeeld er wordt eerst een
planning gemaakt voor de productie van t-shirts voor het komende jaar, vervolgens wordt er
een planning gemaakt voor de komende maand waarbij de totale productiehoeveelheid van
1
HOOFDSTUK 1. INLEIDING 2
1de t-shirts wordt opgeplitst in hoeveelheden per kleur van een t-shirt. In de onderliggende
levels spreekt men daarom vaak over het nemen van operationele beslissingen.
Het grote voordeel van hierarchische productieplanning is de opsplitsing in kleinere modellen
waardoor men mathematisch sneller tot een oplossing komt. Het nadeel is dat door deze
opsplitsing niet de meest optimale oplossing wordt gevonden, maar slechts een suboptimale.
Bovendien kan men ook niet spreken van een simpele top-down benadering en is er vaak
nood aan iteratief switchen tussen de verschillende modellen.
Oplossingsalgoritme
Door de beperking in het aantal producten en omdat er geen twee producten ook maar
een gelijke behandeling kennen, aggregeren we niet naar productgroepen. We maken enkel
gebruik van de aggregatie in de tijd. Voor een planningshorizon van 12 maanden kiezen we
een planningsbucket van 1 maand in de eerste fase. De tweede fase maakt gebruik van een
planningshorizon van 1 maand met een bucket van 1 dag.
Het oplossingsalgoritme ziet er dan als volgt uit:� In eerste instantie lossen we de eerste fase op. Deze gaat op zoek naar de goedkoopste
planning voor de komende twaalf maanden en genereert de eerste productiecijfers.� Vervolgens wordt er per maand gekeken of de vooropgestelde productiehoeveelheden
voor die maand in te plannen zijn. Dit wordt door de tweede fase uitgevoerd die de
totale makespan van de productie van de vooropgestelde schattingen gaat minimalise-
ren.
– Indien de makespan kleiner is dan het aantal beschikbare dagen, gaan we over
naar de controle van de volgende maand met behulp van fase 2. Bovendien wordt
het aantal dagen van de beschikbare dagen, die vrij zijn van productie omdat
de makespan voldoende klein is, bijgehouden om eventueel een probleem in een
volgende maand op te vangen.
– Indien de makespan groter is dan het aantal beschikbare dagen en het overschot
aan dagen niet kan opgevangen worden door eerder opgespaarde dagen, wordt te-
ruggekeerd naar fase 1 en wordt er gezocht naar een nieuwe goedkoopste planning
mits het updaten van het aantal beschikbare dagen in de probleemmaand. Indien
we bijvoorbeeld 2 dagen tekort hebben voor de huidige planning, dan lossen we
fase 1 op met het aantal dagen voor die maand verminderd met 2.
Voor het opstellen van de modellen is het van belang om alle restricties van het chemische
proces op een correcte manier te vertalen naar de verschillende aggregatieniveaus. Veel van
deze restricties staan uitgedrukt in dagen wat het niet eenvoudig maakt om ze in de eerste
HOOFDSTUK 1. INLEIDING 3
1fase toe te passen. Bovendien wordt de flow van alle producten ook uitgedrukt in dagen,
maar kan in het eerste model met de planningsbucket van 1 maand deze flow enkel per maand
verzekerd worden. Het was in eerste instantie dan ook de bedoeling om een zeer nauwkeurig
model op te stellen voor fase 1 om latere moeilijkheden in fase twee te verminderen. Voor de
wiskundeliefhebber verwijs ik dan graag naar de hoofdstukken in verband met het opstellen
van deze modellen. Alle restricties zijn verwerkt in beide fasen behalve die restricties die de
start van een omstel op een bepaalde datum verbieden. Dit is een perfecte restrictie die pas
in fase twee aan bod moet komen, maar indien ze niet in fase een wordt gemodelleerd, levert
dat zeer grote problemen in de tweede fase. De implementatie hiervan zou te uitgebreid
worden en is daarom weggelaten.
Resultaten en Conclusie
De eerste fase werkt perfect en geeft schitterende schattingen voor de goedkoopste planning.
Het nadeel hierbij is de nodige rekentijd. Op dit moment is minimaal drie uur nodig om
min of meer in de buurt te komen van de optimale oplossing. In de tweede fase is ergens een
kleine logische fout gekropen waardoor deze voorlopig niet werkt, aangezien de nadruk toch
vooral lag op de eerste fase. Op zich is dat een spijtige zaak, maar door de lange rekentijd
van de eerste fase zijn meerdere terugkoppelingen toch uitgesloten. Bovendien kan door de
zeer nauwkeurige resultaten van de eerste fase deze ook als een losstaand geheel worden
gebruikt.
Naar de toekomst toe moet er een oplossing worden gezocht voor fase 2, voor de computa-
tionele problemen en voor de restricties in verband met dagen waarop geen omstel mag
voorkomen. Indien men in plaats van voor alle maanden, slechts voor de eerste twee maan-
den fase twee gaat controleren en mits toevoeging in fase een van deze weggelaten restricties
voor de verboden dagen van de eerste twee maanden, dan kunnen beide problemen op een
correcte manier behandeld worden.
2Literatuurstudie
HIERARCHISCHE productieplanning heeft in de literatuur al uitgebreid de aandacht
gekregen. Het is hier zeker niet de bedoeling om een uitgebreide reflectie te geven
van alles wat er in de literatuur is te vinden. We gaan hier voor een zo concreet en bondig
mogelijke uitleg over wat hierarchische productieplanning nu juist is, waar het voor gebruikt
wordt en wat de voor- en nadelen zijn. Op deze manier heeft de lezer een algemeen begrip
voor de toepassing van hierarchische productieplanning voor de specifieke case. We starten
eerst met een algemene uitleg over wat hierarchische productieplanning is. Vervolgens gaan
we meer in detail in op enkele aspecten van een single-stage systeem en een multi-stage
systeem en bekijken we de verschillende mogelijkheden van aggregatie en disaggregatie.
Wat is hierarchische productieplanning
Volgens Bitran et al. (1981) draait de methode van hierarchische productieplanning om het
herkennen van de verschillen tussen strategische en operationele beslissingen. De modellen
voor de productieplanning die hieruit volgen, zijn dan volledig in overeenstemming met het
reele beslissingsproces. De strategische beslissingen die in eerste instantie worden genomen,
komen overeen met een geaggregeerde eerste productieplanning. De operationele beslissingen
komen dan aan bod in een lager level met een gedisaggregeerde planning.
In het meest algemene geval treedt er aggregatie op door zowel het samennemen tot langere
tijdsperiodes als door het samennemen van verschillende producten in 1 groep. Vandaar
de analogie met het strategische level van het beslissingsproces. Er wordt bijvoorbeeld in
4
HOOFDSTUK 2. LITERATUURSTUDIE 5
2
eerste instantie een forecast gemaakt voor een heel lange tijdsperiode en voor verschillende
productgroepen. Met een simpel voorbeeld uitgelegd: het is in januari nog niet van belang
om te weten hoeveel t-shirts van elke kleur zullen verkocht worden in december van datzelfde
jaar, maar het is wel het totaal aantal t-shirts voor het komende jaar ongeacht de kleur en
ongeacht de maand van verkoop dat ons op dit niveau interesseert. In het gedisaggregeerde
level wordt er dan naar kleinere periodes gekeken en per product afzonderlijk. De operati-
onele beslissingen zijn daarbij van belang. Hierbij willen we enkel voor de maand januari
weten hoeveel t-schirts er in welke kleur verkocht zullen worden. Eventueel ook nog voor
februari, maar dat is niet strikt noodzakelijk. Een combinatie van deze twee levels met alle
mogelijke tussenliggende vormen is mogelijk. Zolang er maar duidelijk in elk level wordt
nagegaan wat de tijdshorizon is en hoe de producten gegroepeerd zijn.
Het grote voordeel van deze aggregatie en disaggregatie is dat een productieplanning kan ge-
genereerd worden voor een grote planningshorizon, maar dat er geen gedetailleerde gegevens
noodzakelijk zijn voor heel deze planningshorizon. De planning die werkelijk zal uitgevoerd
worden, is deze van een kortere planningshorizon. Hiervoor zijn wel gedetailleerde gegevens
nodig, maar deze zijn eenvoudiger te voorspellen op korte termijn dan op een lange termijn.
Het nadeel van het opsplitsen in verschillende niveaus is dat er aan nauwkeurigheid wordt
ingeboet. Het meest optimale geval wordt gevonden indien al de informatie gekend is voor
de hele planningsperiode zodat er 1 model kan opgesteld worden. Deze gedetailleerde for-
mulering van het probleem leidt vaak tot meer problemen. Het is moeilijk om het op te
lossen, het vereist data die op langere termijn moeilijk nauwkeurig te bepalen zijn en het is
vaak duur om het te laten werken. Het verlies van nauwkeurigheid door de opsplitsing is
dus zeker gerechtvaardigd.
Single-Stage System
Bitran et al. (1981) geeft een heel uitgebreide uitleg over de toepassing van deze theorie voor
single-stage systemen. Er wordt een opsplitsing gemaakt in drie aggregatielevels:� Items: de eindproducten zoals geleverd aan de klanten� Families: een groepering van items die gelijkaardige setups delen. Indien een item
van een familie wordt geproduceerd, kan elk ander item van deze familie zonder grote
omstelling ook geproduceerd worden.� Product types: een groepering van families met gelijkaardige kosten, voorraadkosten,
hoeveelheden,...
In het eerste level wordt voor de product types een geaggregeerde planning opgesteld met
een typische planningshorizon van 1 jaar om strategische beslissingen te kunnen nemen.
HOOFDSTUK 2. LITERATUURSTUDIE 6
2
Enkel de hoeveelheid van elk product type dat gepland wordt in de eerste periode wordt
doorgegeven naar het familie-level. In dit level wordt de geplande hoeveelheid van het
producttype opgesplitst in de families die tot dit type behoren. Deze hoeveelheden worden
doorgegeven aan het item level om de te produceren hoeveelheid te bepalen van elk item
in deze eerste periode. We zien hierin dus duidelijk dat gedetailleerde voorspellingen op
het item niveau niet nodig zijn voor de hele planningshorizon, enkel voor de eerste periode.
Aangezien geaggregeerde voorspellingen ook nauwkeuriger zijn dan meer gedetaileerde zullen
de productieplannen door deze aanpak stabieler zijn in de tijd.
Bitran et al. (1981) suggereren het gebruik van convexe knapzak problemen voor de disag-
gregatie tussen de verschillende levels. Op het hoogste niveau worden de productiekosten
en de voorraadkosten geminimaliseerd. Het tweede niveau probeert de setupkosten tussen
de verschillende families te minimaliseren. Op dit moment zijn alle kosten bepaald. Op het
derde niveau is het dan de bedoeling om te kijken naar de invloed op de toekomstige kos-
ten. De hoeveelheden per familie worden opgesplitst per item op zo’n manier dat alle items
ongeveer in een zelfde tijdspanne een nieuwe productierun vragen. Voor meer gedetailleerde
uitleg hierover verwijs ik je naar de tekst van Bitran et al. (1981). Mits het gebruik van
enkele aanpassingen aan de heuristieken kan voor de meeste situaties een optimaal model
worden gevonden.
Een two-stage system
Bitran et al. (1982) geeft uitbreidingen op het algemene model van een hierarchische produc-
tieplanning voor een tweedelig productieproces. Naast de producten voor de eindgebruiker
hebben we hier ook grondstoffen voor deze producten die ingepland moeten worden. Ook
voor deze grondstoffen wordt een verdeling gemaakt in verschillende types en families. Wat
hieruit vooral kan besloten worden is dat elk probleem zijn specifieke oplossing vergt. Je
kan je baseren op een algemene structuur, maar de uiteindelijke oplossing blijft afhankelijk
van het specifieke probleem.
Aggregatie en Disaggregatie
Een moeilijkheid bij de aggregatie is dat door het samennemen van verschillende producten
in 1 producttype er ook aggregatieparameters voor dit producttype moeten bepaald worden.
Een gezamenlijke voorraadkost, een gezamenlijke productiekost, een gezamenlijke produc-
tierate, een verwachte setupkost (Qiu en Burch, 1997),. . . Vaak doet men dit door gewichten
toe te kennen per product om zo tot 1 parameter te komen. Hieruit blijkt duidelijk dat
hierarchische planning geen pure top-down benadering kent. Via een iteratief proces is het
beter om deze parameters te updaten tot ze de gewenste waarden bereiken (Vicens et al.,
2001).
HOOFDSTUK 2. LITERATUURSTUDIE 7
2
Een goede aggregatie en disaggregatieprocedure heeft daarnaast ook nog heuristieken en
consistencyvergelijkingen om infeasible problemen te vermijden en om feedback te geven
tussen de verschillende modellen. Op deze manier wordt de beste suboptimale oplossing
gevonden (Erschler et al., 1986; Vicens et al., 2001).
Conclusie
Samenvattend kunnen we stellen dat een hierarchische productieplanning zijn voordelen en
nadelen kent. Het grote nadeel is dat men op zoek moet naar een correcte aggregatie- en
disaggregatieprocedure. Dit is niet voor de hand liggend en elk probleem vraagt een eigen
oplossing. Bovendien verliezen we door de opsplitsing in meerdere levels aan nauwkeurigheid
en vinden we een suboptimale oplossing. De voordelen wegen echt zwaarder door dan de
nadelen, want naast de link met het reele beslissingsproces is vooral de beperking in rekentijd
en de noodzaak aan een minder gedetailleerde productieforecast van zeer grote waarde.
Voor meer details in verband met de wiskundige modellering verwijs ik door naar de meer
gespecialiseerde literatuur. Na het eerste level is het op langere termijn reeds mogelijk
om eerste essentiele trade-offs op te merken en kan er reeds op ingespeeld worden door
manageriele interactie.
3Probleemstelling: De case van Lanxess
IN theorie is het een zeer eenvoudige probleemstelling:
Stel een optimalisatiemodel op voor de automatisering van de productieplanning voor een
chemisch proces van het chemische bedrijf Lanxess.
Achter deze ene zin zit echter meer dan men op het eerste zicht denkt. Daarom overlopen
we kort alle elementen die in deze probleemstelling aan bod komen.
3.1. Optimalisatiemodel
De bedoeling is om een wiskundig model op te stellen dat bestaat uit een doelfunctie en
een aantal voorwaarden waaraan de variabelen moeten voldoen, waaruit de meest optimale
oplossing van het probleem moet volgen. Een zeer eenvoudig voorbeeld van een wiskundig
model is het volgende: maximaliseer de winst door het produceren van twee producten x en
y, waarbij rekening moet gehouden worden met de beschikbaarheid van een grondstof: 20
stuks. Voor x heb je 5 eenheden van de grondstof nodig en win je 10 euro. Voor y heb je 4
eenheden nodig, maar win je ook maar 9 euro.
Max. 10x + 9y
o.v. 5x + 4y ≤ 20
x ∈ Z+
y ∈ Z+
8
HOOFDSTUK 3. PROBLEEMSTELLING: DE CASE VAN LANXESS 9
3
Het is hier duidelijk dat de oplossing wordt gegeven door x = 0 en y = 5. De probleemstelling
houdt dus in om de correcte doelfunctie en de correcte voorwaarden op te stellen voor het
specifieke probleem.
3.2. Automatisering
Op dit moment gebeurt de planning handmatig. Hier zijn onmiddellijk twee nadelen aan
verbonden. Enerzijds is het een tijdrovend proces, anderzijds is men nooit zeker of de
gevonden planning wel de beste is. De bedoeling van het automatiseren van de planning
is dan ook tweedelig. Men kan zogezegd op de ’start’-knop drukken en na een verloop van
tijd terugkomen om te zien dat je planning klaar is. Ondertussen kan er dus iets anders
gedaan worden. Bovendien is men ook zeker dat dit de beste planning is onder de gegeven
voorwaarden.
3.3. Productieplanning
Productieplanning is een zeer ruim begrip. In het algemeen is het de bedoeling dat de
productie van producten gepland wordt doorheen de tijd om zo aan de doelstellingen te
voldoen. Ik stap nu af van het algemene geval om meer in detail het specifieke probleem te
bekijken.� Input
– De beginvoorraden van alle producten op de eerste van een bepaalde maand
– De verkoopsprognoses voor de komende 12 maanden
– De door het management ingeplande stilstanden
– De restricties specifiek voor het proces
– De variabelen van de productieplanning (kosten, capaciteiten,. . . )� Output: Een planning voor de komende 12 maanden die voor elke maand de produc-
tiehoeveelheden geeft.� Doelstelling: het vinden van die planning die de totale kost zo klein mogelijk maakt.
De planningshorizon is dus 1 jaar, de tijd waarover men in de toekomst wil kijken om de
producten te plannen. De planningsbucket lijkt 1 maand, maar achteraf zal blijken dan
een planningsbucket van 1 dag nodig is. Dit is de kleinste eenheid voor planning. En de
planningsfrequentie is 2 weken, of de basis waarop de planning geupdate wordt. Hieraan
moet het model allemaal voldoen.
HOOFDSTUK 3. PROBLEEMSTELLING: DE CASE VAN LANXESS 10
3
3.4. Chemisch proces van Lanxess
3.4.1. Schematisch
Al het voorgaande moet specifiek toegepast worden op een chemisch proces van het bedrijf
Lanxess. Een schematische voorstelling van dit proces is gegeven in figuur 3.1. Hierop
zien we dat, om het bedrijfsgeheim niet te schaden, alle producten en processen een code
gekregen hebben. Dit is voor het model van geen belang, aangezien het slechts namen zijn.
Figuur 3.1.: Schematische voorstelling van het productieproces
We overlopen in het kort dit schema. We zien twee grondstoffen AG en E. Deze grondstoffen
zijn in een onbeperkte hoeveelheid aanwezig, er moet enkel rekening gehouden worden met
een eventuele ingeplande stilstand van de processen die aan deze grondstoffen vooraf gaan.
Tijdens die periode zijn er geen grondstoffen beschikbaar.
Uit grondstof E kunnen dan de producten F , L, M en O gemaakt worden, wat aangeduid
wordt door de blauwe pijl op het schema. Alle pijlen op het schema, uitgezonderd de
dunne blauwe lijntjes, duiden aan wat de grondstoffen zijn voor andere producten en welke
producten er al dan niet nog verder worden verwerkt.
HOOFDSTUK 3. PROBLEEMSTELLING: DE CASE VAN LANXESS 11
3
Indien verschillende producten in 2 aaneengesloten kadertjes staan, zoals bijvoorbeeld pro-
ducten C en D1 betekent dit dat ze op dezelfde installatie vervaardigd worden. Dit is een
exclusiviteitsrelatie. Op elk moment kan slechts 1 product gemaakt worden.
We onderscheiden twee grote delen. Enerzijds het linkerdeel van het schema met de pro-
ducten A1, B, C, D1 en A2. Anderzijds het rechterdeel met alle overige producten. Het
linkerdeel wordt ook wel installatie 1 genoemd, het rechterdeel installatie 2. In installatie 2
hebben we 5 productiestraten gevolgd door 1 maalstraat. Op straat 1 worden bijvoorbeeld
F en G geproduceerd. Vervolgens hebben we nog straten 3, 4, 5 en 6. Straat 2 bestaat niet
meer. Alle producten van deze straten worden verkocht (behalve D2). 3 van deze producten
kunnen eventueel ook nog gemalen worden. Deze gemalen producten worden ook verkocht.
En ook van A2 is er verkoop mogelijk.
Ter illustratie gaan we even verder in op A1. Gewoon om te duiden dat achter dit schema nog
veel meer zit dan op het eerste gezicht. Deze informatie is echter niet helemaal nuttig voor de
productieplanning en wordt dus voor de rest achterwege gelaten. Het is belangrijk om enkel
de nodige aspecten uit deze informatie te halen. A1 is een volledige chemische installatie
met reactoren, extracties, ...enz. Uit deze installatie komt het product A1. We hebben geen
stapelcapaciteit voor A1. Product A2 wordt uit A1 gemaakt. De A2-installatie is niet meer
dan een indamping (destillatie). Deze indamping kan relatief gemakkelijk gestopt en gestart
worden. Voor deze A2-installatie gelden de 21 dagen stilstand natuurlijk niet. We kunnen
bij wijze van spreken de A2-installatie ook voor een paar dagen stilleggen. Dan moeten we
natuurlijk ook de capaciteit van de A1-installatie verminderen omdat we A1 niet kunnen
bufferen. Dit doen we dus zelden omwille van de energie-inefficientie.
Er zijn ook vier voorraadtanken beschikbaar voor tijdelijke opslag van producten. In tank
1 kan A2 opgeslagen worden. In tank 3 kan A2, C of D1 opgeslagen. Ook hier exclusiviteit,
slechts 1 product op elk moment. Deze tanken zijn beperkt in capaciteit. Er kan niet
oneindig veel in opgeslagen worden. Indien er geen tank staat is er ook geen opslag mogelijk
en moeten de geproduceerde producten ook onmiddellijk verbruikt worden. Indien er dus
A1-productie is, moet dat onmiddellijk omgezet worden naar A2, F , . . .C- of D1 kan eerst
opgeslagen worden, indien de tank beschikbaar is, alvorens verder te worden verwerkt.
Dan rest er ons nog alleen AW1, AW2 en AW3 uit te leggen. Dit zijn drie afvalwaterin-
stallatie die met de verschillende producten in verbinding staan. Voor de werking hiervan
in combinatie met de producten verwijs ik naar de behandeling van de restricties. Een
voorbeeld om de complexiteit van deze installaties te illustreren: als er maar op 1 straat
geproduceerd wordt (1 product), dan mag bij uitval van AW2 terwijl AW1 nog loopt elk
product geproduceerd worden behalve product N.
HOOFDSTUK 3. PROBLEEMSTELLING: DE CASE VAN LANXESS 12
3
3.4.2. Restricties
Naast deze floweigenschappen zoals vastgelegd in het schema zijn er ook nog 103 andere
restricties waaraan het chemische proces moet voldoen. Deze lijst is ter beschikking ge-
steld door Lanxess. Ik ga deze hier niet allemaal opsommen. Ze komen voldoende aan bod
bij de uitwerking van het wiskundig model. In het kort gezegd gaan deze restricties over
de omstellingen die tussen bepaalde producten op eenzelfde straat moeten gebeuren. Ver-
plichtingen in verband met productiesequenties, de lengte van een productierun, het aantal
productiecampagnes, stilstanden, de kosten die hiermee gepaard gaan, . . .
3.4.3. Bemerkingen
Het grote probleem hierbij is dat er met zeer veel factoren rekening moet worden gehouden.
Geen enkel product is hetzelfde en kan dus op dezelfde manier behandeld worden. Het
analoge geldt voor de productiestraten. Het probleem vraagt dus echt een zeer specifieke
oplossing.
Vorig jaar reeds heeft een thesis-student zich gebogen over het probleem. Toen is men van
een straightforward aanpak uitgegaan. Het bleek echter al snel dat door de planningsbucket
van slechts 1 dag het aantal variabelen voor het model zeer snel toenam. Elke ingevoerde
variabele voor 1 dag, moet vermenigvuldigd worden met 365 om voor het hele jaar de
planning te kunnen bepalen. De rekencapaciteit en rekentijd nam dus ook toe, zodat de
enige correcte conclusie die hieruit volgde was: het gaat niet op deze manier. Er moest dus
gezocht worden naar een nieuwe manier om dit probleem aan te pakken.
4Werkelijke model: structuur
IN de volgende hoofdstukken wordt al het voorgaande samengenomen om tot een op-
lossing van het specifieke planningsprobleem van Lanxess te komen. We beginnen in
dit hoofdstuk met het uitleggen van de algemene structuur van de oplossing, zodat al de
onderdelen onmiddellijk kunnen gesitueerd worden in het volledige plaatje. In de vier daar-
opvolgende hoofdstukken behandelen we de belangrijkste bouwblokken om tot het resultaat
te komen.
4.1. Algemene structuur
Zoals aangehaald in het theoretische onderdeel over hierarchische productieplanning is het
mogelijk om op verschillende manieren de hierarchie in het beslissingsproces te verwerken.
De combinatie van een aggregatie over tijd en producten is bij ons probleem niet toepas-
baar omwille van de complexiteit van een chemisch proces. Aggregatie van producten in
productfamilies en productgroepen om zo voor deze groepen een geaggregeerde planning op
te stellen is niet mogelijk omdat elk product verschillend is en bovendien gaat het ook maar
over een beperkt aantal producten.
Aggregatie over enkel de tijd is wel mogelijk om toe te passen. Ondanks dat er gevraagd
wordt naar productiehoeveelheden per maand voor de komende twaalf maanden, is het toch
noodzakelijk om de planningsbucket kleiner te kiezen dan die maand aangezien zeer veel
restricties en voorwaarden worden uitgedrukt in dagen. Bijvoorbeeld, een omstelling op
straat 1 duurt twee dagen, een stilstand duurt minstens 21 dagen, . . . Om zo een correcte
13
HOOFDSTUK 4. WERKELIJKE MODEL: STRUCTUUR 14
4
productieplanning te krijgen moeten we kijken per dag of dat mogelijk is. Zoals al eerder
gezegd is het niet mogelijk om dit als 1 wiskundig model te formuleren voor een volledig
jaar. Elke variabele moet dan vermenigvuldigd worden met de factor 365, wat tot een te
grote rekentijd leidt.
Indien we nu echter aggregeren over de tijd om vervolgens opnieuw te disaggregeren, is het
wel mogelijk om dit probleem op te lossen. Het algemene schema van deze aggregatie/dis-
aggregatie is te zien op het schema van figuur 4.1.
HOOFDSTUK 4. WERKELIJKE MODEL: STRUCTUUR 15
4
Figuur 4.1.: Algemene structuur van de oplossing
HOOFDSTUK 4. WERKELIJKE MODEL: STRUCTUUR 16
4
We onderscheiden drie grote delen:� Input� Wiskundige model� Output
Over de input en de output kunnen we zeer kort zijn. Op vraag van Lanxess en uiteraard
omwille van de gebruiksvriendelijkheid wordt alles ingegeven via Excel en wordt de output
gegenereerd in Excel. Het wiskundige model zelf wordt in AMPL, ’A Modeling Language
for Mathematical Programming’ geschreven, wat een begrijpbare en krachtige algebraısche
modelleertaal is voor lineaire en niet-lineaire optimalisatieproblemen. Daarom is er dus
nood aan de koppeling tussen Excel en AMPL enerzijds en AMPL en Excel anderzijds.
Deze koppeling is niet zomaar met 1 commando te regelen. Vooral voor de output was het
een hele opgave om de correcte waarden op de correcte plaats te krijgen in de geleverde
excelsjablonen. Ik ga hier verder niet op in omdat dat niet relevant is voor de oplossing van
het echte probleem.
4.1.1. De theorie achter het wiskundige model
Na het inlezen van alle parameters en de beginvoorwaarden uit excel is er eerst nog nood
aan een kleine preprocessing stap alvorens echt over te gaan op de wiskundige modellen.
Deze preprocessing komt uitgebreid aan bod in sectie 6.
Zoals op schema 4.1 te zien bestaat het werkelijke model uit drie grote onderdelen die op
allerlei manieren met elkaar gekoppeld zijn. We beschrijven het doel van elk afzonderlijk deel
en hoe ze met elkaar gekoppeld worden. De wiskunde per onderdeel wordt in desbetreffende
hoofdstukken gegeven.
Fase 1: planning per maand voor een heel jaar
Zonder in al te veel detail te treden, worden er hier productiehoeveelheden per product
voor de komende 12 maanden vastgelegd. Dit zou dan een eerste ruwe schatting moeten
geven voor de uiteindelijke productieplanning. We doen dit door te aggregeren over de
tijd en alles te bekijken op het maandelijks niveau. We kijken helemaal niet op welke
dag een bepaald product geproduceerd wordt of in welke volgorde de producten worden
geproduceerd. Zolang de algemene flow voor een hele maand maar behouden blijft en dat
er geen producten geproduceerd worden die dan plots verdwijnen in de overgang naar de
volgende maand. Op deze manier moet elke variabele slechts vermenigvuldigd worden met
12, voor elke maand 1. Dit zorgt voor een zeer sterke reductie van de rekentijd. Bovendien
behandelen we ook een volledig jaar, wat zonder aggregatie onmogelijk zou zijn.
HOOFDSTUK 4. WERKELIJKE MODEL: STRUCTUUR 17
4
We trachten hier wel al de kosten reeds in rekening te brengen om zo die schatting te bekomen
waarvoor de totale kost geminimaliseerd wordt. Het grote probleem door deze aggregatie is
dat alles moet worden uitgedrukt in maanden en dat we daardoor aan correctheid inboeten.
Het is dus nooit mogelijk om echt de optimale oplossing te vinden voor het gehele probleem,
maar we zullen wel een suboptimale oplossing vinden die een zeer goede benadering is van
het gehele probleem.
Indien de exacte productievolgorde niet geweten is, is het ook onmogelijk om hier de exacte
omstellingen in rekening te brengen. We zullen dus een methode moeten vinden om een
verwachte omstelduur en een verwachte omstelkost per straat te definieren. Ook stiltanden
kunnen moeilijk worden ingepland, we weten namelijk niet wanneer deze stilstand zal plaats-
vinden. Is dat in het begin van de maand, op het einde of in het midden van die maand. De
eisen voor een minimale duur van een stilstand zullen dus over verschillende maanden moe-
ten lopen waarbij er zeer goed nagedacht moet worden over de verschillende mogelijkheden
en hoe die te modelleren. Indien je voor elke dag exact weet wat er geproduceerd wordt,
weet je ook perfect of dit voldoet aan de capaciteit. Je weet nu niet welke omstellingen
er gebeuren op welke dagen er productie is van welk product, dus het definieren van een
restrictie die eist dat een straat op vollast moet lopen is ook niet zo eenvoudig aangezien de
totale capaciteit van die straat moeilijk te voorspellen is.
Er wordt dus bij elke restrictie nagedacht of er een equivalente formulering bestaat op het
maandelijkse niveau en de keuze wordt gemaakt om restricties door te schuiven naar de
volgende fase of niet.
Het resultaat van deze eerste fase is een eerste ruwe schatting voor de productiehoeveelheden
voor de komende twaalf maand. Met andere woorden de gevraagde planning voor het
probleem. We zijn echter door het aggregeren over de tijd en door het uitstellen van enkele
restricties niet zeker of deze planning wel haalbaar is en dus aan alle eisen voldoet. Daarom
worden deze eerste ruwe schattingen en enkele andere variabelen dan doorgegeven aan de
tweede fase van het model.
Fase 2: scheduling per dag voor een maand
Per maand wordt er gekeken of er een schedule bestaat die al de geplande producties uit
de eerste fase inplant over de verschillende productiestraten. Indien er zo een schedule
bestaat voor elke maand en indien al deze schedules voldoen aan alle restricties dan is het
volledige probleem opgelost. Dit is eigenlijk gedeeltelijk te vergelijken met het rechtstreeks
modelleren van het probleem voor een heel jaar, maar ik heb hier wel voor een andere
doelfunctie gekozen. Bovendien zal de rekentijd ook een heel stuk ingekort worden aangezien
een zeer groot deel van de producties in bepaalde maanden op nul wordt gesteld, wat dus ook
weer aanleiding geeft tot een groot aantal variabelen in het model die onmiddellijk worden
HOOFDSTUK 4. WERKELIJKE MODEL: STRUCTUUR 18
4
vastgelegd.
Er wordt dus 12 keer een ’kleiner’ model opgelost. Dit model plant voor elke dag van een
maand welk product er wordt geproduceerd of welke omstelling er gebeurt. We beginnen
met de eerste maand vertrekkend van de beginvoorwaarden uit de huidige maand en plannen
de geschatte hoeveelheden in op de productielijnen rekening houdend met alle restricties.
We bekijken dan voor elke straat afzonderlijk hoeveel dagen er noodzakelijk zijn om aan deze
planning te voldoen, dit is de makespan. Het is natuurlijk de bedoeling dat deze makespan
kleiner is dan of gelijk aan het aantal dagen van een maand. De fout op deze makespan
moet dus zo klein mogelijk gemaakt worden. Hoe meer dagen we tekort hebben om alles in
de maand te produceren, hoe slechter dus de eerste schattingen waren.
Analyse van de schedule
We analyseren deze schedule van de eerste maand en nemen een beslissing of we de schatting
behouden of niet. Indien de schatting voor deze maand goed is, starten we de tweede fase
voor de tweede maand uitgaande van de beginvoorwaarden bepaald door de schedule van de
eerste maand. Indien de schatting niet goed is keren we terug naar de eerste fase en bepalen
we nieuwe schattingen. Welke beslissingsregels er opgesteld worden, wordt besproken in het
deel over deze analyse.
Uiteindelijk komen we in de situatie waarbij het tweede model voor elke maand de schedule
heeft bepaald en beslist heeft dat deze allemaal in orde zijn. Op dat moment weten we
dat de laatst gevormde schattingen een volledig haalbare productieplanning geeft voor de
volgende twaalf maanden en is het probleem opgelost.
Terugkoppeling naar fase 1
Aangezien alles draait rond voldoende capaciteit hebben om alles te kunnen produceren
in een maand of in een jaar ligt hier de sleutel tot de terugkoppeling. Capaciteit kan
onmiddellijk vertaald worden naar het aantal beschikbare dagen voor productie. Indien we
dus merken dat er enkele dagen tekort zijn om de huidige productiehoeveelheden in 1 maand
in te plannen, laten we het eerste model opnieuw lopen, maar met een beperking op het
aantal dagen in de maand die niet voldeed in fase 2. We merken bijvoorbeeld in de maand
mei dat we 32 dagen nodig hebben om aan de huidige planning te kunnen voldoen. Er zijn
slechts 31 dagen beschikbaar in mei. We laten deze eerste fase dus opnieuw lopen, maar
met een beperking van het aantal dagen in mei tot slechts 30, wat 1 dag minder is dan de
realiteit. Op deze manier gaan er nieuwe schattingen gecreeerd worden die nu hopelijk wel
voldoen. Het is dus een iteratief proces dat op zoek gaat naar de beste optimale oplossing.
Een tweede aspect in verband met deze terugkoppeling is of we al dan niet alle maanden gaan
HOOFDSTUK 4. WERKELIJKE MODEL: STRUCTUUR 19
4
herrekenen. Stel dat we bijvoorbeeld op een bepaald moment reeds vijf maanden hebben
die in orde zijn. De zesde maand die we bekijken is niet in orde en er wordt een terugkop-
peling gemaakt naar de eerste fase. Er zijn nu twee mogelijkheden. Ofwel berekenen we
nieuwe schattingen voor alle maanden, ofwel berekenen we enkel nieuwe schattingen voor
die maanden die nog niet in orde zijn. Het is duidelijk dat in de eerste situatie fase 2 voor
alle maanden opnieuw moet doorlopen worden, maar dit geeft wel een perfecte aggregatie/-
disagggregatie. In de tweede situatie is door het vastleggen van deze productiehoeveelheden
in fase 1, de schatting niet veranderd, en hoeft fase 2 niet opnieuw doorlopen worden voor
de maanden die reeds in orde zijn. Twee grote voordelen, enerzijds is er door het vastleggen
in fase 1 van een groot aantal variabelen minder tijd nodig om tot nieuwe schattingen te
komen, anderzijds is er ook tijdswinst in fase 2 omdat niet opnieuw alle maanden moeten
gecontroleerd worden. Het nadeel echter is dat er met deze methode ook weer een klein
verlies aan optimaliteit wordt ingecalculeerd, omdat eventuele wijzigingen enkel nog kunnen
voorkomen in de laatste maanden. We verkiezen omwille van de tijdswinst toch voor deze
tweede methode.
4.1.2. Probleem: Restricties 88-91 en 96
Nu reeds zou ik willen wijzen op de grote moeilijkheid in het specifieke probleem. Indien
onderstaande restricties worden genegeerd is het bovenstaande model perfect in staat om in
een beperkte rekentijd tot een goede oplossing te komen.� (88) een productomstel moet op maandag, dinsdag, woensdag of donderdag gebeuren.
Er mag geen wettelijke feestdag binnen deze dagen vallen.� (89) de productomstel van straat 1 en 3 mag niet gelijktijdig gebeuren omwille van de
personeelsbezetting.� (90) de productomstel van straat 4 en 6 mag niet gelijktijdig gebeuren omwille van de
personeelsbezetting.� (91) een productomstel van straat 1, 3, 4, 5 en 6 mag niet gelijktijdig gebeuren omwille
van de personeelsbezetting. Opgepast: het zou kunnen zijn dat deze voorwaarde in de
nabije toekomst komt te vervallen terwijl de twee vorige behouden blijven.� (96) een productomstel in de maalstraat moet op maandag, dinsdag, woensdag of don-
derdag gebeuren. Er mag geen wettelijke feestdag binnen deze dagen vallen.
In het geval deze restricties niet worden genegeerd zitten we met meer problemen. Enerzijds
volgt uit deze restricties dat ze niet van belang zijn in de eerste fase, omdat ze expliciet
spreken over producties op bepaalde dagen. Maar deze worden helemaal nog niet vastgelegd
in deze eerste fase waardoor de restricties logischerwijze worden doorgeschoven naar de
tweede fase.
HOOFDSTUK 4. WERKELIJKE MODEL: STRUCTUUR 20
4
In de tweede fase zullen deze restricties echter voor zeer grote problemen zorgen indien er in
de eerste fase nog geen rekening met gehouden is. Een productierun is bijvoorbeeld geschat
voor 8 dagen in de maand. Deze run stopt op een vrijdag, wat betekent dat we twee dagen
moeten wachten, tot een maandag, alvorens de omstelling kan starten. Nog erger is het
dan als ook op een andere straat deze productierun toevallig stopt in het einde van die
week, zodat ook die omstelling op maandag moet starten. Maar 1 omstelling tegelijkertijd
betekent zelfs het uitstellen van de omstelling naar de volgende week. Dit effect kan zeer
snel oplopen, wat leidt tot fouten op de makespan van een groot aantal dagen. Het is niet de
bedoeling dat deze fouten te groot worden, want dit zal leiden tot inconsistenties tussen de
twee fasen. Mits enkele kleine aanpassingen zou waarschijnlijk de schatting wel voldoen aan
bovenstaande restricties zonder al te veel verlies van capaciteit. Er moet dus een oplossing
worden gezocht om deze voorwaarden in de eerste fase reeds in te plannen.
Dit gaat weer gepaard met voor- en nadelen. De eerste fase is op dit moment al meer dan
genoeg belast en heeft al voldoende tijd nodig om nauwkeurige schattingen te berekenen
zonder deze restricties. Het is mogelijk om deze restricties uit te schrijven voor de eerste
fase indien men de volledige productievolgorde gaat proberen vastleggen van alle straten en
de productiehoeveelheden dan zo gaat beperken zodat een productierun steeds eindigt op
een dag waarbij een omstelling kan beginnen. Er moeten dus ranges opgesteld worden voor
deze productiehoeveelheden. Dit vraagt echter een zeer groot aantal aan extra variabelen
en bovendien is dan de tweede fase ook helemaal niet meer van belang.
Voorlopig negeren we deze restricties en we komen er op terug bij de bespreking van de
resultaten.
5Analyse en terugkoppeling
ALVORENS over te gaan op de behandeling van de echte wiskundige modellen wordt
eerst het ’analyse-blok’ nog verder besproken, omdat dit van belang is voor een correct
begrip van de beide modellen.
De grote vraag die in dit blok wordt gesteld is of de vooropgestelde schedule haalbaar is in
de maand of niet. Indien het niet haalbaar is, is het dan mogelijk om wijzigingen aan te
brengen zodat het alsnog haalbaar wordt?
5.1. Ambitieuze plan
Het ambitieuze plan houdt in dat voor elke maand de makespan wordt geminimaliseerd. Alle
producten worden ingepland en beslissingen die afhangen van de volgende maand worden
uitgesteld. Zo zal het starten van een stilstand, of het starten van een omstelling op het
einde van de maand afhangen van de situatie in de volgende maand. Alle dagen die op
het einde van de maand op deze manier onbepaald blijven voor een straat noemen we de
vrije dagen van die straat. Deze vrije dagen kunnen dan worden gebruikt om verschillende
problemen van de komende maanden op te vangen.
Bekijken we bijvoorbeeld de situatie van figuur 5.1. In de eerste maand wordt er slechts voor
15 dagen F-productie ingepland. De laatste 15 dagen van de maand zijn over. We zouden
nu al kunnen beslissen om er een stilstand te starten, maar dit hangt ook af van de daarop-
volgende maand. Deze 15 dagen worden dus voorlopig beschouwd als vrije dagen. Indien nu
21
HOOFDSTUK 5. ANALYSE EN TERUGKOPPELING 22
5
maand 2 volledig is volgepland met G-productie, betekent dit dat er een omstel noodzakelijk
is tussen de F-productie uit maand 1 en de G-productie uit maand 2. Twee van de vrije
dagen worden dus ingenomen door omsteldagen en dan blijven er nog 13 dagen over. Indien
maand 2 gedeeltelijk is volgepland met G-productie, zou er ook nog een stilstand mogelijk
zijn. Stellen we dat deze stilstand bijvoorbeeld minstens 20 dagen moet duren, dan kunnen
een aantal vrije dagen daarvoor gebruikt worden tot het minimum aantal stilstand dagen
bereikt is voor maand 2 in combinatie met maand 1. Maand 3 veronderstellen we volledig
volgepland zodat er geen problemen zijn. In maand vier zijn door omstandigheden twee
dagen productie tekort voor de F-productie. De schedule is niet haalbaar in het vooropge-
stelde aantal dagen en een terugkoppeling naar fase 1 is vereist. We hebben echter geluk,
want we hadden nog een aantal dagen over in de eerste maand. Het ambitieuze plan houdt
dus in om de overproductie naar voor te schuiven en de vrije dagen op deze manier vol te
plannen.
Het grote nadeel hierbij is dat deze methode impliceert dat opnieuw moet worden gecon-
troleerd of maand 1 nog wel feasible is. Het naar voor brengen van F impliceert ook meer
A1-productie, en al de daarbij horende andere verbanden met de andere producten. Het
opnieuw doorlopen van de eerste maand en uiteraard dan ook de daaropvolgende maanden
vraagt extra rekentijd. Ten tweede ontstaat er een veel groter gevaar door het naar voor
brengen van producties. De schattingen uit de eerste fase worden dus gewijzigd en indien
in een latere maand een terugkoppeling naar de eerste fase noodzakelijk is, worden deze
schattingen vastgelegd, maar is het mogelijk dat er op die manier een infeasible probleem is
gecreeerd voor de eerste fase. Deze twee problemen zijn niet helemaal onoverkomelijk, maar
in de realiteit is het zeer moeilijk om dit allemaal te implementeren. Het ambitieuze plan
wordt bij deze dus afgevoerd.
Figuur 5.1.: Grafische voorstelling van het ambitieuze plan
5.2. Radicale plan
Indien de schedule niet feasible is voor een bepaalde maand, omdat er bijvoorbeeld 33 dagen
noodzakelijk zijn om de vooropgestelde schattingen te produceren, maar de maand slechts
31 dagen telt, zouden we radicaal kunnen zeggen: ’Die twee dagen produceren we niet’.
Bijgevolg is de planning uiteraard haalbaar in 31 dagen, maar we verliezen op deze manier
wel een grote productiehoeveelheid en dit leidt tot een grote hoeveelheid tekorten. Het is
HOOFDSTUK 5. ANALYSE EN TERUGKOPPELING 23
5
duidelijk dat ook deze oplossing niet wordt verkozen.
5.3. Intermediaire oplossing
Praktisch gezien zoeken we dus een oplossing die iets van beide voorgaande oplossingen
heeft. De terugkoppeling naar voorgaande maanden door het verschuiven van productie-
hoeveelheden laten we achterwege. Er wordt nog enkel naar de laatst ingeplande maand
gekeken om de productiehoeveelheden van de huidige maand in te plannen. Indien in de
vorige maand in totaal een overschot van 1 dag is op elke productiestraat, dan kan deze
dag ter beschikking worden gesteld van de volgende maand. De tweede fase gaat dus op
zoek naar die schedule die het minst lang duurt en niet zoals in de oorspronkelijke structuur
van de oplossing gezegd naar die schedule die de totale fout op de makespan minimaliseert.
We behouden het concept van de vrije dagen, maar deze keer niet per straat, maar voor de
hele productie. Dit aantal vrije dagen voegen we dan toe aan het aantal beschikbare dagen
van de volgende maand. Dit kan voor elke maand herhaald worden en op deze manier gaan
we iteratief een volledig vrije dag doorschuiven naar een latere periode op het jaar tot het
moment waarbij deze vrije dag nodig is. Een illustratie hiervan is te zien op figuur 5.2. Zeer
eenvoudig zouden we kunnen stellen dat door de overschot van 1 dag in januari we beslissen
dat januari maar 1 dag telt en februari 28 dagen. Aangezien er geen probleem is in februari,
telt februari opnieuw 28 dagen en schuiven we de dag door naar maart welke dan 32 dagen
telt. Uiteindelijk zien we dat in april een dag tekort is, dus indien april 31 dagen zou tellen
is het probleem opgelost. Door het verschuiven van de overschot-dag uit januari naar april
is dit probleem opgelost.
Figuur 5.2.: Grafische voorstelling van het praktische plan
Volledige productieruns worden op deze manier verschoven naar voren. We passen echter
niet de schattingen uit de eerste fase aan om het daaraan gekoppelde probleem bij de te-
rugkoppeling te vermijden, we passen wel het aantal beschikbare dagen aan door gebruik te
maken van formule 5.1 waarin ∆dm−1 gelijk is aan de vrije dagen van de voorgaande maand.
#dm,update = #dm,oud + ∆dm−1 (5.1)
Alles hangt feitelijk af van de correctheid van de schattingen uit fase 1. Zoals eerder reeds
besproken zou de terugkoppeling naar fase 1 gebeuren door het inperken van het aantal
HOOFDSTUK 5. ANALYSE EN TERUGKOPPELING 24
5
beschikbare dagen in een maand. Een terugkoppeling gaat wel gepaard met een aanzienlijk
tijdsverlies. Ik kan nu al zeggen dat fase 1 niet zo klein uitvalt en dat het nood heeft aan
een relatief grote rekentijd. Dus terugkoppelingen worden liefst zoveel mogelijk vermeden.
Een oplossing hiervoor zou kunnen zijn om reeds in fase 1 een zeer grote beperking op de
totale capaciteit per maand in te voeren. Alle maanden kunnen dan perfect de geschatte
productiehoeveelheden in de maand inplannen, maar verschillende maanden zullen meer-
dere vrije dagen hebben. Bovendien geeft een beperking van de capaciteit aanleiding tot
meer tekorten. Met andere woorden, er is hier sprake van een tradeoff. Ofwel regelmati-
ge terugkoppeling en een aanzienlijk tijdsverlies, ofwel geen terugkoppeling en veel dagen
die moeten worden doorgeschoven tussen de verschillende maanden en het daarbij horende
capaciteitsverlies. Er moet dus gezocht worden naar de perfect afweging tussen deze twee
aspecten.
Indien de makespan na het opgebruiken van alle vrije dagen nog steeds te lang uitvalt is er
noodzaak voor een terugkoppeling naar fase 1. Indien terugkoppeling niet noodzakelijk is
gaat men wel naar de volgende maand om te kijken of het mogelijk is om de schattingen in
te plannen mits gebruik van een vrije dag of mits zelf een extra vrije dag te creeren.
Hieronder staat het gebruikte algoritme welk het verband aangeeft tussen de eerste en de
tweede fase en waarin de terugkoppelingsmechanismen ook verwerkt zijn. Dit algoritme
geeft schematisch weer wat hierboven reeds is uitgelegd.
– V T12p,maandF2−1, V T3p,maandF2−1,. . .� Ingeplande stilstanden door het management vastleggen voor fase 2� Initialiseren van de dagen waarop geen omstel mag plaatsvinden
HOOFDSTUK 5. ANALYSE EN TERUGKOPPELING 25
5
� Oplossen fase 2� Bepalen van het aantal dagen dat er tekort of te veel zijn in de gevonden schedule
– ∆DmaandF2 := #d2maandF2 − totMakespan� Indien ∆DmaandF2 < 0, dan zijn er dagen tekort en is de schedule niet feasible
a) Updaten van het aantal beschikbare dagen voor maandF2 in fase 1, het
beschikbare aantal dagen wordt kleiner gemaakt
– #d1maandF2 := #d1maandF2 + ∆DmaandF2
b) Opnieuw oplossen van fase 1 (eventueel met vastleggen van de produc-
tiehoeveelheden uit maanden die reeds in orde zijn)� Anders, dus als ∆DmaandF2 >= 0, wat wil zeggen dat de schedule feasible is,
maken we alles klaar om over te gaan naar de volgende maand in fase 2
a) De schattingen uit de maand die in orde is worden vastgelegd
b) Indien er een overschot is, ∆DmaandF2 > 0, wordt het aantal dagen van de
huidige maand geupdate:
– #d2maandF2 := #d2maandF2 − ∆DmaandF2
c) De gevonden schedule is de begintoestand voor de volgende maand
d) #d2maandF2+1 := #d2maandF2+1 + ∆DmaandF2
e) maandF2 := maandF2 + 1
5.4. Probleem: Restricties 88-91 en 96
Ook hier weer een kleine zijsprong naar het eerder besproken grote probleem. De eerder
gevormde conclusie om de restricties 88-91 en 96 te negeren wordt hier verder aangemoedigd.
Het gevaar van het uitstellen van omstellingen geeft aanleiding tot de mogelijkheid dat er
een groot aantal dagen tekort kunnen zijn in elke maand. Dit kan niet opgelost worden
door enkel gebruik te maken van de terugkoppeling door het aantal dagen te beperken. Er
moeten dus meer gesofisticeerde oplossingen worden bedacht, die alvorens terug te koppelen
echt gaan kijken waar het probleem van het tekort aan productiedagen zich werkelijk bevindt.
Zo een probleem analyse vergt echter zeer veel extra tijd om nog volledig in detail te kunnen
uitwerken. We blijven dus bij de conclusie om deze restricties te negeren.
6Preprocessing
6.1. Stilstanden ingevoerd door het management
ER zijn verschillende stilstanden die op voorhand ingevoerd worden door het manage-
ment. Deze zijn niet gelijk aan de stilstanden die door het model worden ingevoerd
zoals verderop wordt uitgelegd. Volgende opsomming is een samenvatting van al deze stil-
standen en de relaties onderling.� (1) jaarlijkse technische stilstand van de AG-installatie gedurende 3 weken, door het
management vast te leggen. Drie weken betekent vanaf maandagmorgen van de eerste
week tot vrijdag 16u30 van de derde week of 18.3 kalenderdagen (dit getal moet als
variabele kunnen ingegeven worden).� (2) de A1-, A2- en B-productie kan alleen lopen als de AG-installatie loopt.� (23) geen C- of D1-productie als de AG-installatie stilstaat (zie hierboven).� (25) geen C- of D1-productie tussen 15 december en 15 maart omdat de installatie niet
wintervast is (deze grenzen moeten als variabele kunnen ingegeven worden).� (32) jaarlijkse technische stilstand van de E-installatie gedurende 1 of 2 weken, door
het management vast te leggen. De weken lopen vanaf maandagmorgen tot vrijdag
16u30. 1 week is dus 4.3 dagen, 2 weken zijn 11.3 dagen (dit getal moet als variabele
kunnen ingegeven worden).
26
HOOFDSTUK 6. PREPROCESSING 27
6
� (33) de O-, F-, L- en M(in L)-producties kunnen alleen lopen als de E-installatie loopt.� (37) indien een technische stilstand van de AW3-installatie noodzakelijk is, wordt deze
gedurende 1 of 2 weken afgesteld. Dat wordt door het management vastgelegd. De
weken lopen vanaf maandagmorgen tot vrijdag 16u30. 1 week is dus 4.3 dagen, 2
weken zijn 11.3 dagen (dit getal moet als variabele kunnen ingegeven worden).� (38) bij een stilstand van de AW3-installatie, moeten alle producties stilgelegd worden.� (39) jaarlijkse technische stilstand van de AW1-installatie gedurende 1 of 2 weken,
door het management vast te leggen. De weken lopen vanaf maandagmorgen tot vrijdag
16u30. 1 week is dus 4.3 dagen, 2 weken zijn 11.3 dagen (dit getal moet als variabele
kunnen ingegeven worden).� (40) de H1-, H2-, H3-, L-, M(in L)- en O- en M(in L)-producties kunnen alleen lopen
als de AW1-installatie loopt.� (41) jaarlijkse technische stilstand van de AW2-installatie gedurende 1 of 2 weken,
door het management vast te leggen. De weken lopen vanaf maandagmorgen tot vrijdag
16u30. 1 week is dus 4.3 dagen, 2 weken zijn 11.3 dagen (dit getal moet als variabele
kunnen ingegeven worden).� (43) als de AW2-installatie niet loopt, is alleen onderstaande combinatie van producties
mogelijk (zie spreadsheet ’variabelen productieplanning, 2e blad) op voorwaarde dat de
AW1-installatie loopt.� (46) jaarlijkse algemene energiestilstand in installatie 2 tijdens de AG-/A1-stilstand
(o.a. spanningstesten) gedurende 2 dagen (dit getal moet als variabele kunnen ingege-
ven worden).� (47) indien een langere algemene energiestilstand in installatie 2 noodzakelijk is (warm-
watersysteem, koelwatersysteem, stoomsysteem) wordt het aantal dagen door het ma-
nagement vastgelegd (dit getal moet als variabele kunnen ingegeven worden).
Aangezien deze stilstanden allemaal op voorhand vastgelegd worden, zorgen we voor een
preprocessing stap die een aantal parameters met betrekking tot deze stilstanden initiali-
seert. In eerste instantie worden de noodzakelijke stilstanden per installatie of per straat
ingegeven in een excel-file (meerdere per installatie zijn mogelijk). Restricties (1), (25),
(32), (37), (39), (41), (46) en (47) zijn hierdoor onmiddellijk voldaan. Enkel de ingave van
de startdatum en de duur van de stilstand zijn voldoende, dit is inclusief de afstel- en op-
starttijd. Het is ook niet noodzakelijk om de daaruitvolgende stilstanden ook allemaal in
te geven. Het is bijvoorbeeld voldoende om de productie van AG 20 dagen stil te leggen.
Het onmiddellijke gevolg hiervan is dat ook A1, A2 en B 20 dagen zullen stilliggen. Dit
HOOFDSTUK 6. PREPROCESSING 28
6
mag mee ingegeven worden, maar is niet strikt noodzakelijk. De preprocessing stap zorgt
automatisch voor het doorgeven van de ingeplande stilstanden. Voor fase 1 is het vooral van
belang dat we weten hoeveel dagen er effectief geproduceerd kan worden. Daarom voeren we
volgende parameter in: ingeplandeSs,m ∈ Z+, deze parameter geeft voor elke straat s in el-
ke maand m weer hoeveel dagen er verloren gaan door een op voorhand ingeplande stilstand.
De preprocessing stap gaat als volgt te werk:
1. Bepalen van de einddatum horend bij de ingegeven stilstand
2. Doorgeven van de ingegeven stilstand naar daaropvolgende productiestraten volgens
de relaties uit tabel 6.1:� Stilstand bestaat reeds in de daaropvolgende straat: er wordt niets gedaan� Stilstand bestaat nog niet: stilstand wordt toegevoegd� Stilstand overlapt gedeeltelijk met een stilstand in de daaropvolgende straat: de
correcte totale stilstand wordt bepaald
3. Per straat wordt uitgaande van de resulterende stilstanden uit vorige stappen in elke
maand het totaal aantal dagen ingeplande stilstand bepaald: ingeplandeSs,m
Tabel 6.1.: Relaties tussen de stilstanden. vb: stilstand in AG wordt doorgegeven aan A1 omwille
De restricties (33), (40) en (42) zijn slechts gedeeltelijk voldaan door de relaties in tabel 6.1,
het andere gedeelte wordt behandeld in het model zelf en we komen er later dus nog op terug.
HOOFDSTUK 6. PREPROCESSING 29
6
Op deze manier blijft enkel restrictie (43) nog over. Dit is niet eenvoudig te modelleren,
zowel niet in de preproces-stap als in de eerste of de tweede fase. Aangezien echter de
afvalwaterinstallatie zeer bedrijfszeker is, er geen stilstanden moeten ingepland worden door
het model en vanuit het management slechts 1 stilstand wordt ingepland per jaar, betekent
dit dat deze restrictie slechts in 2 weken van het hele jaar zou moeten gelden. Vanuit
deze optiek besluiten we om ze pas in fase 2 nauwkeuriger te bekijken. Indien AW2 dan
toch onverwacht uitvalt door een storing, kan dit toch niet op voorhand voorspeld worden
wanneer dit juist gaat gebeuren. Op dat moment maakt men het best gebruik van een
manuele planning om de storingsperiode op te vangen.
7Fase 1: Planning
HET is in de eerste fase de bedoeling dat we een zo goed mogelijke schatting maken
voor alle maandelijkse productiehoeveelheden. Deze beste schatting moet voortkomen
uit een zo klein mogelijke totale kost. De doelfunctie van deze eerste fase zal dan ook
bestaan uit het minimaliseren van een totale kost. Deze totale kost bestaat uit zeer veel
verschillende termen aangezien er ook zeer veel interacties zijn in het chemische proces. Een
kleine opsomming van de meeste aspecten die in de totale kost zitten vervat, wordt hierna
gegeven:� Voorraadkosten� Gebonden voorraadkosten� Omstellingskosten� Kosten voor tekorten� Winst en verlies ten gevolge van energie-(in)efficientie� Kosten en opbrengsten door invoeren van stilstanden
Deze totale kost wordt niet als 1 onderdeel behandeld, maar er worden telkens termen toe-
gevoegd indien ze voortkomen uit een behandeld onderwerp. Hou vooral in het achterhoofd
dat deze kost geminimaliseerd moet worden, omdat we naar de goedkoopste planning op
zoek zijn.
30
HOOFDSTUK 7. FASE 1: PLANNING 31
7
7.1. Veel gebruikte notaties
We beginnen eerst met het geven van de notatie van enkele veel gebruikte parameters.� startM geeft de maand waarin de planning wordt gestart� #dm is het aantal dagen in een maand. Bijvoorbeeld maand 5 is de meimaand die 31
dagen telt.� Tenzij anders wordt vermeld, geldt voor de index m het volgende: m ∈ {startM, . . . , startM+
11} Deze index geeft de maand aan waarvoor de variabelen gelden.� Vervolgens hebben we nog de index p die het product aangeeft waarvoor de variabele
geldt� Een laatste, veel voorkomende, index is s, die de productiestraat aangeeft
7.2. Algemene beslissingsvariabelen
De belangrijkste beslissingsvariabelen die worden ingevoerd zijn:� Qp,m ∈ R+: de productiehoeveelheden van elk product p per maand m� Pp,m :=
1, als productie van product p in maand m,
0, als geen productie van product p in maand m
De binaire productievariabelen.
We voeren voorwaarde 7.1 in die de relatie tussen Qp,m en Pp,m vastlegt. Indien Pp,m gelijk
is aan 0, dan zorgt vergelijking 7.1a er voor dat Qp,m ook gelijk is aan 0. Indien Pp,m = 1
dan kan Qp,m elke mogelijke productiehoeveelheid aannemen. De omgekeerde relatie wordt
vastgelegd door vergelijking 7.1b.
∀p,∀m : Qp,m ≤ Pp,m · dagcapaciteitp · 31 (7.1a)
∀p,∀m : Pp,m ≤ Qp,m (7.1b)
In het voorgaande is p elk product dat mogelijks wordt geproduceerd. Voor sommige voor-
waarden is het noodzakelijk om deze producten op te splitsen in verschillende subproducten.
Het product G kan hier perfect als voorbeeld voor dienen:
HOOFDSTUK 7. FASE 1: PLANNING 32
7
Tabel 7.1.: Opsplitsing van product G
G product G
→ G1 G geproduceerd op straat 1
→ G1v1 G1 uit grondstof A1
→ G1v2 G1 uit grondstof A2
→ G1v2T12 G1v2 via tank 1 en 2
→ G1v2T3 G1v2 via tank 3
→ G3 G geproduceerd op straat 3
→ G3v1 G3 uit grondstof A1
→ G3v2 G3 uit grondstof A2
→ G3v2T12 G3v2 via tank 1 en 2
→ G3v2T3 G3v2 via tank 3
In tabel 7.1 zien we dus dat G kan opgesplitst worden afhankelijk van de wijze waarop het
geproduceerd wordt. De index p kan al deze productvormen aannemen. Voor de andere
producten gelden analoge opsplitsingsregels, we splitsen echter niet op indien het niet strikt
noodzakelijk is voor verder gebruik in de voorwaarden. Voorwaarde 7.2 wordt toegevoegd
voor die producten die opgesplitst worden, zodat de totale productiehoeveelheid de som is
van de deelproducties.
∀m,∀(p1, p2, p) ∈ {alle producten p die opgesplitst worden in p1 en p2} :
Qp1,m + Qp2,m = Qp,m
(7.2)
We gaan vervolgens verder met de opsomming van de belangrijkste beslissingsvariabelen:� Tp,m ∈ R+: de tekorten van elk product p in de maand m zodat niet aan de vereiste
vraag voor die maand kan voldaan worden. Uiteraard geldt deze variabele enkel voor
die producten die verkocht worden. Bovendien kan een tekort in een maand ook
nooit groter zijn dan de vraag in die maand. Hier hoort wel nog een opmerking bij,
er is namelijk ook nog steeds een veiligheidsvoorraad waar het model rekening met
houdt. Dus een tekort in de vraag kan eventueel wel opgevangen worden door de
veiligheidsvoorraad indien het tekort uiteraard niet te groot is.� Vp,m ∈ R+: de voorraden van elk product p op het einde van de maand m� V T12A2,m, V T3p,m, V T4p,m en V TBB,m ∈ R
+: de voorraad van p in tank 1 en 2,
respectievelijk tank 3, respectievelijk tank 4, respectievelijk tank B op het einde van
de maand m.
HOOFDSTUK 7. FASE 1: PLANNING 33
7
� V V IBCp,m ∈ R+: de voorraad van p in vaten en IBC’s op het einde van de maand m� V Cp,m ∈ R
+: de voorraad van B in containers op het eind van maand m
In wat volgt zullen er indien nodig nog andere beslissingsvariabelen worden ingevoerd. We
proberen dit echter zoveel als mogelijk te vermijden. Eerst trachten we de problemen op te
lossen met de bestaande beslissingsvariabelen. Indien het echter onmogelijk blijkt, voeren
we toch nieuwe beslissingsvariabelen in. Dit om het aantal variabelen en de daarbij horende
rekentijd toch zoveel mogelijk te beperken.
7.3. Flowvoorwaarden
7.3.1. Vraag versus Aanbod eindproducten
Voorwaarden
Voor p ∈ {Alle producten die verkocht worden uitgezonderd A2} moet de algemeen gekende
voorwaarde 7.3 gelden: de voorraad op het begin van de maand samen met de productie
in de maand moet gelijk zijn aan de vraag naar het product in de maand samen met de
voorraad op het eind van de maand eventueel verminderd met de tekorten in de maand
indien de productie niet kan voldoen aan de vraag. We laten ook backlogging toe om
tekorten uit de vorige maand op te vangen met een eventueel productieoverschot van de
huidige maand. Indien het in de volgende maand nog niet opgevangen is, wordt er weer
een penalty aangerekend. Op zich kan je de vraagp,m + Tp,m−1 zien als de geupdate vraag
Twee korte bemerkingen in verband met deze tekorten: ten eerste is dit niet expliciet een
tekort omdat er niet geleverd kan worden. Zoals eerder gezegd is er ook nog de minimum-
voorraad waaruit het tekort kan geleverd worden. Ten tweede is het aan het bedrijf zelf om
de strategie in verband met deze tekorten te bepalen.
Voorwaarde 7.3 moet niet gelden voor A2 omdat daar ook nog intermediair verbruik is.
In plaats daarvan geldt voorwaarde 7.4 waarbij het verbruik van A2 voor de productie
van andere producten in rekening wordt gebracht. We maken hier de opsplitsing tussen
producten rechtstreeks vervaardigd uit A2 (PA2) en producten die enkel uit A2 worden
vervaardigd indien er een tekort is van A1 (PA1vA2).
HOOFDSTUK 7. FASE 1: PLANNING 34
7
∀m : QA2,m + VA2,m−1 + TA2,m =∑
p∈PA2
(verbruikp,A2 ·Qp,m)+∑
p∈PA1vA2
(verbruikp,A2 ·Qp,m)+VA2,m +vraagA2,m +TA2,m−1
(7.4)
We splitsen deze voorwaarde ook nog op volgens de tank die gebruikt wordt voor de tussen-
opslag van A2 en we maken ook gebruik van een opsplitsing voor VA2,m. Bij deze opsplitsing
zien we in voorwaarden 7.5 ofwel T12 ofwel T3 bij komen. Dit wil niets anders zeggen dan
het product dat via tank 1 en 2, respectievelijk tank 3 wordt geproduceerd. Bijvoorbeeld
PA2T12 is dan die set van producten die rechtstreeks vervaardigd worden uit A2, zoals PA2
ons leert, maar waarbij A2 afkomstig is uit tank 1 en 2. We veronderstellen hier ook bij dat
zowel de vraag als de voorraad van de vaten en de IBC’s altijd wordt voldaan vanuit tank
1 en 2.
∀m : VA2,m = V T12p,m + V T3p,m + V V IBCp,m (7.5a)
∀m : QA2T12,m + V T12A2,m−1 + V V IBCA2,m−1 + TA2T12,m =∑
p∈PA2T12
(verbruikp,A2 · Qp,m) +∑
p∈PA1vA2T12
(verbruikp,A2 · Qp,m)+
V T12A2,m + V V IBCA2,m + vraagA2,m + TA2T12,m−1 (7.5b)
∀m : QA2T3,m + V T3A2,m−1 + TA2T3,m =∑
p∈PA2T3
(verbruikp,A2 · Qp,m) +∑
p∈PA1vA2T3
(verbruikp,A2 · Qp,m) + V T3A2,m + TA2T3,m−1
(7.5c)
De opsplitsing van de producties is reeds behandeld in een vorige paragraaf. Dan rest er al-
leen nog enkele voorwaarden te schrijven in verband met de tekorten. Enerzijds hebben we de
tekorten opgesplitst en moet deze som gelijk zijn aan de totale som van tekorten (voorwaarde
7.6), anderzijds mag het tekort van A2 enkel dienen om de tekorten voor de verkoop van A2
op te vangen (en de eventuele tekorten uit de vorige maand), hiervoor schrijven we voorwaar-
de 7.7. Indien de productie van A2 nog meer beperkt wordt dan kan het tekort van enkel A2
dit niet meer alleen opvangen. Bijgevolg zal de productiehoeveelheid van een volgend pro-
duct ook verminderd worden en worden de tekorten uit vergelijking 7.3 verschillend van 0.
Ook voor de andere producten p ∈ {Alle producten die verkocht worden uitgezonderd A2}
HOOFDSTUK 7. FASE 1: PLANNING 35
7
is er een beperking op de grootte van de tekorten. Deze voorwaarde 7.8 is niet strikt nood-
zakelijk, omdat het model automatisch de tekorten probeert te minimaliseren, maar ze zorgt
wel voor extra intelligentie zodat er sneller een oplossing wordt gevonden.
∀m : TA2T12,m + TA2T3,m = TA2,m (7.6)
∀m : TA2,m ≤ vraagA2,m + TA2,m−1 (7.7)
∀p∀m : Tp,m ≤ vraagp,m + Tp,m−1 (7.8)
7.3.2. Voldoende productie tussenproducten
De algemene flowvergelijking 7.3 is niet geldig voor de tussenproducten. We passen hier 1
na 1 deze vergelijking aan met betrekking tot de andere producten.
A1-productie:
∀m : QA1,m = verbruikA2,A1 · QA2,m +∑
p∈PA1
verbruikp,A1 · Qp,m (7.9a)
In voorwaarde 7.9a bestaat het set PA1 uit al die producten die rechtstreeks uit A1 vervaar-
digd kunnen worden, A2 uitgezonderd. De termen in verband met de voorraden en de vraag
vallen weg omdat er geen opslagmogelijkheid is van A1 en omdat A1 niet verkocht wordt.
Bijgevolg kunnen er ook geen tekorten zijn voor A1, want de tekorten waren zo gedefinieerd
als die hoeveelheid waaraan men niet kon voldoen voor de vraag. Indien er een tekort aan
capaciteit is op de productiestraat van A1 weerspiegelt dit in lagere productiehoeveelheden
Q voor de andere producten, en dit wordt in de eigen flowvergelijking opgevangen door de
tekorten van de andere producten. Dit is in overeenstemming met volgende restrictie: (15)
er is geen opslag van A1. De productie moet dus direct verbruikt worden of tot A2 worden
omgezet. De A2-productiecapaciteit is kleiner dan de A1-productiecapaciteit. Indien er geen
verbruik is van A1 moet de A1-productie verminderd worden.
C-productie:
∀m : QC,m + V T3C,m−1 = verbruikI,C · QI,m + V T3C,m (7.9b)
Een analoge uitleg geldt voor voorwaarde 7.9b. Wel voorraden omdat er opslag mogelijk is,
geen vraag en dus ook geen tekorten omdat er geen verkoop is van product C.
HOOFDSTUK 7. FASE 1: PLANNING 36
7
D1-productie
∀m : QD1,m + V T3D1,m−1 =∑
p∈PD1
(verbruikp,D1 · Qp,m) + V T3D1,m (7.9c)
Het set PD1 wordt als volgt gedefinieerd: PD1 := {D2, J}.
D2-productie
∀m : QD2,m + V T4D2,m−1 = verbruikK,D2 · QK,m) + V T4D2,m (7.9d)
Molen-productie
∀m,∀(p1, p2) ∈ {(F, FC), (G, GC), (L, LC)} :
dagcapaciteitp2
dagcapaciteitp1· Qp1,m ≥ Qp2,m
(7.9e)
De vergelijking voor de producten in de molen is eigenlijk al vervat in 7.3, maar aangezien
er geen tussenopslag is tussen de productiestraten en de maalstraat, moet er een beperking
ingevoerd worden op de molenproductie per product. Bijvoorbeeld 1 dag productie van F
betekent 25.4 ton, indien op diezelfde dag ook de molen draait voor F kan niet die volledige
25.4 ton vermaald worden, maar slechts 19.3 ton. Dus de hoeveelheid van gemalen producten
per maand moet kleiner zijn dan een fractie van de ongemalen producten per maand wat is
uitgeschreven in vergelijking 7.9e. Hiermee is voldaan aan restrictie: (93) om een product
te kunnen malen, moet de overeenkomstige productiestraat lopen, straat 1 voor F/c, straat
1 of 3 voor G/c en straat 4 voor L/c.
B-productie
Voor B is nog een speciale uitbreiding nodig omdat het een bijproduct is van A1, met beper-
kingen op de geproduceerde hoeveelheid van B afhankelijk van de geproduceerde hoeveelheid
van A1. Vergelijkingen 7.9f en 7.9g worden ingevoerd omwille van restrictie: (17) B is een
nevenproduct uit de A1-productie en kan dus enkel geproduceerd worden als de A1-productie
loopt. De B-productie ’voor verkoop’ is minimaal 3.5% (ondergrensB) en maximaal 7.0%
(bovengrensB) van het A1-productievolume (deze grenzen moeten als variabele kunnen in-
gegeven worden).
∀m :ondergrensB
100· QA1,m ≤ QB,m (7.9f)
∀m :bovengrensB
100· QA1,m ≥ QB,m (7.9g)
HOOFDSTUK 7. FASE 1: PLANNING 37
7
Flow-producties
Voor volgende restricties moeten niet expliciet voorwaarden worden uitgeschreven. Door
een correcte definitie van het set producten waaraan elke voorwaarde moet voldoen is auto-
matisch aan deze restricties voldaan.� (34) De O-, N- en M(in N)-producties kunnen enkel uit A2 als grondstof lopen.� (35) De F-, G(in F), G(in H1)-, H1-, H2-, H3-, L- en M(in L)- en L- en M(in L)-
producties lopen preferentieel uit A1 als grondstof.� (36) De F-, G(in F), G(in H1)-, H1-, H2-, H3-, L- en M(in L)-producties kunnen ook
uit A2 als grondstof geproduceerd worden zolang er voorraad beschikbaar is.� (53) op straat 6 kunnen N of M(in N) geproduceerd worden.� (57) op straat 4 kunnen L of M(in L) geproduceerd worden.� (66) op straat 1 kunnen F of G (=G(in F) geproduceerd worden.� (71) op straat 3 kunnen G(in H1), H1, H2, H3, I, J, D2 of K geproduceerd worden.� (72) K wordt uitsluitend uit D2 geproduceerd.� (92) in de maalstraat kunnen F/c, G/c en L/c geproduceerd worden.
Nog een kleine bemerking is op zijn plaats bij restricties 35 en 36. In heel de voorgaande
discussie is er nog geen enkele keer gesproken over hoe de voorkeur wordt gegeven tot
productie uit A1 in plaats van productie uit A2. Door de restricties te schrijven zoals
hierboven is namelijk deze voorkeur er automatisch ingeslopen. Enerzijds heeft productie
over A2 noodzaak aan meer verbruik van A1, dus hieruit volgt al de logische beslissing om
rechtstreeks uit A1 te produceren. Anderzijds krijgen we ook een weerspiegeling van de
voorkeur in de kosten. Zowel voor A2 als voor de producten wordt een kost aangerekend.
Dus de kost van rechtstreekse productie uit A1 is kleiner dan productie via A2. Deze twee
bemerkingen zouden de preferenties op een correcte manier moeten weerspiegelen. Of het
model tot dezelfde conclusies leidt, zullen we verifieren bij de resultaten.
7.4. Totale kost (1)
In dit onderdeel behandelen we de belangrijkste termen uit de doelfunctie tot nu toe. In
latere onderdelen worden er indien nodig extra termen aan de doelfunctie toegevoegd. We
houden in ons achterhoofd dat het de bedoeling is om de totale kost te minimaliseren.
De totale kost is dan het resultaat van verschillende effecten die op elkaar inwerken. We
behandelen hier achtereenvolgens de voorraadkosten en de tekortkosten.
HOOFDSTUK 7. FASE 1: PLANNING 38
7
7.4.1. Voorraadkost
De voorraadkosten zijn een combinatie van de kost voor opslag van de geproduceerde pro-
ducten in het magazijn en het gebonden kapitaal dat in de voorraad zit. Want indien de
voorraad niet aanwezig is, dan zou op het bespaarde kapitaal van die voorraad een rendement
zijn van 7.5%.
Voorraadkost omwille van opslag:
(103) de opslag van F, G, H1, H2, H3, I, J, K, L, M, O en N gebeurt in een extern maga-
zijn en kost 3.15 Euro/ton/maand (voorraadKost). 400 ton (maximumOpslag) wordt
kostenloos in het bedrijf gestockeerd (deze getallen moeten als variabele kunnen ingege-
ven worden). We breiden deze restrictie uit door ook de gemalen producten in reke-
ning te brengen. We voegen volgende term toe aan de te minimaliseren totale kost met
p ∈ {F, G, H1, H2, H3, I, J, K, L, M, O, N, FC, GC, LC}:
+∑
m
(
∑
p
∑mt=m−1 Vp,t
2− maximumOpslag
)
· voorraadKost (7.10)
We sommeren over alle maanden het teveel aan gemiddelde voorraad van die maand en
vermenigvuldigen dit met de voorraadkost voor het bijhouden van de voorraad per maand.
Het teveel aan gemiddelde voorraad per maand, is niets anders dan de de totale gemiddelde
voorraad van alle producten verminderd met de maximum opslag capaciteit. We nemen het
gemiddelde in een maand, omdat er niet exact geweten is op elk moment van de maand
hoeveel voorraad er aanwezig is. De beste schatting hiervoor is de voorraad in het begin
van de maand plus de voorraad op het einde van de maand te delen door 2.
Een tweede aspect van de voorraadkost voor opslag vind je in restrictie (9) 4.4 Euro/ton/-
maand (voorraadKostV atenEnIBC) opslagkost voor vaten en IBC’s (dit getal moet als
variabele kunnen ingegeven worden). Deze restrictie geldt voor alle producten die in vaten
en IBC’s kunnen opgeslagen worden, dus p ∈ {A2, B}.
+∑
m
(
∑
p
∑mt=m−1 V V IBCp,t
2
)
· voorraadKostV atenEnIBC (7.11)
Een analoge uitleg als bij term 7.10 geldt voor deze term.
In verband met deze voorraadkosten is er nog niets in rekening gebracht wat het kost voor
de opslag van de voorraden in de tanks. Indien deze ook noodzakelijk zijn kunnen deze
eenvoudig aan deze termen toegevoegd worden.
HOOFDSTUK 7. FASE 1: PLANNING 39
7
Voorraadkost omwille van het gebonden kapitaal:
Het gebonden kapitaal wordt als volgt berekend:
+∑
m
∑
p
(∑m
t=m−1 Vp,t
2· varProductieKostp
)
·7.5%
12(7.12)
Hierin zit de productiekost reeds vervat, dus het is niet noodzakelijk om de productiekosten
apart in de doelfunctie op te nemen.
7.4.2. Tekortkosten
De kost voor een ton tekort van een product is gelijk aan de marge van dat product in ton.
De tekortkost kan dan heel eenvoudig geschreven worden als volgt:
+ (∑
m
∑
p∈verkochte producten
Tp,m · margep) (7.13)
De tekorten zoals in het model beschreven, zijn de tekorten indien we onder de totale mi-
nimum voorraad zitten. In praktijk kunnen deze producten dus wel nog geleverd worden
zolang de voorraad maar niet negatief wordt. Een echt tekort is er dus maar als de voorraad
negatief wordt en de klanten dus niet meer bediend kunnen worden. We behouden toch
deze vergelijking 7.13 omdat het niet de bedoeling is om onder de minimale voorraad te
gaan. Op die manier bestraffen we elke productiehoeveelheid tekort voor het behouden van
dit minimumlevel, ondanks het feit dat in de praktijk alle klanten toch beleverd kunnen
worden. Om in de praktijk met deze tekorten om te gaan is het aan het bedrijf zelf om een
goede strategie te ontwikkelen. Ze geven een eerste indicatie waar het in de komende 12
maanden verkeerd kan gaan door een tekort aan capaciteit.
Het voorgaande was het eenvoudige geval. Het is echter ook de bedoeling dat indien er een
tekort is, dit tekort zo wordt opgevangen dat er het minste verlies is zoals beschreven in
onderstaande restricties.� (98) bij capaciteitsengpassen op straat 4 en 6 voor L,M en N moet volgende productie
prioriteit gevolgd worden in functie van de variabele marge/dag: N > M > L (deze
volgorde moet manueel kunnen ingegeven worden). P98 := {L, M, N}� (99) bij capaciteitsengpassen op straat 1 en 3 bij F, G, H1, H2, H3, I, J en K moet
volgende productie prioriteit gevolgd worden in functie van de variabele marge/dag:
K > I > J > H1 > H2 > F > G > H3 (deze volgorde moet manueel kunnen
ingegeven worden). P99 := {F, G, H1, H2, H3, I, J, K}� (100) bij capaciteitsengpassen bij de A1-/A2-productie moet volgende productie prio-
riteit gevolgd worden in functie van de marge/kg A1/A2: N > M > H1 > H2 >
HOOFDSTUK 7. FASE 1: PLANNING 40
7
O > L > F > G > H3 > verkoopA2 (deze volgorde moet manueel kunnen ingegeven
worden). P100 := {F, G, H1, H2, H3, L, M, N, O, verkoopA2}� (101) bij capaciteitsengpassen bij de D1-productie moet volgende productie prioriteit
gevolgd worden in functie van de marge/kg D1: K > I > J (deze volgorde moet
manueel kunnen ingegeven worden). P101 := {K, I, J}
In overleg is er besloten dat de volgorde automatisch uit het model moet volgen indien de
marge en het verbruik van de producten gegeven zijn. De eis om de volgorde manueel te
kunnen ingegeven vervalt dus.
Het is dus de bedoeling om de algemene vergelijking van de kost voor de tekorten 7.13 zo te
manipuleren dat de correcte productievolgordes worden gegeven, maar dat de tekortkost per
product wel in dezelfde grootteorde blijft. Indien we de vier sets van producten P98, P99,
P100 en P101 samennemen zien we dat elk product er tweemaal in voorkomt uitgezonderd
verkoopA2 en O. Bovendien zien we ook dat de volgordes in deze vier restricties consequent
zijn. Bijvoorbeeld M > L in zowel restrictie 98 als 100. We bekomen volgende voorwaarden:
+ (∑
m
∑
p∈P98⋃
P99⋃
{O, verkoopA2}
Tp,m · margep) ·1
2(7.14a)
+ (∑
m
∑
p∈P100
Tp,m ·margep
verbruikp,A1/A2) ·
1
2(7.14b)
+ (∑
m
∑
p∈P101
Tp,m ·margep
verbruikp,C/D1) ·
1
2(7.14c)
+ (∑
m
∑
p∈{FC, GC, LC, B}
Tp,m · margep) (7.14d)
Door de factor 12 in de eerste drie voorwaarden van 7.14 wordt de grootteorde van deze te-
kortkost behouden, aangezien elk product voorkomt in 2 van die vergelijkingen. De laatste
voorwaarde 7.14d bepaalt de tekortkost van de andere producten die niet door restricties
98-101 worden vermeld. Een kleine illustratie bij deze termen: een tekort op straten 4 en
6, betekent dat enkel de tekorten van {L, M, N} verschillend kunnen zijn van 0. Alleen in
term 7.14a en in term 7.14b kunnen er dus delen bijdragen aan de totale kost. Door de eer-
der vermelde conclusie dat de volgorde ten gevolge van de restricties overeenkomen, zullen
deze twee termen ook tot een gelijk resultaat komen, nl. zo weinig mogelijk tekorten van N
en zoveel mogelijk tekorten van L. Een analoge redenering geldt voor een capaciteitsverlies
op de andere straten.
Het enigste nadeel van deze methode is dat er een mogelijke switch in de volgorde kan
voorkomen. Beschouwen we het denkvoorbeeld in tabel 7.2. In de eerste situatie zien we
HOOFDSTUK 7. FASE 1: PLANNING 41
7
dat de volgorde voor N en M gelijk is volgens beide restricties. In het huidige geval geldt
dit voor alle producten. Het gevaar bestaat er nu echter in dat, door het wijzigen van een
marge of een verbruik de volgorde niet meer hetzelfde blijft voor alle restricties zoals te
zien in situatie 2. We gaan er hier vanuit dat zo’n drastische veranderingen in de praktijk
niet zullen voorkomen en dat de volgordes steeds behouden blijven of slechts zeer minimaal
zullen verschillen. Tenslotte is het verschil in kost voor het tekort dan niet extreem groot.
Tabel 7.2.: Denkvoorbeeld in verband met de capaciteitsengpassingen
Situatie 1 N M Situatie 2 N M
Marge 8 2 Marge 3 2
Verbruik 4 2 Verbruik 4 2
Volgorde 98 1 2 Volgorde 98 1 2
Volgorde 100 1 2 Volgorde 100 2 1
7.5. Stilstanden
Dit onderdeel betreft alle stilstanden, zowel de stilstanden vastgelegd door het management
die in deel 6.1 aan bod zijn gekomen als de stilstanden die achteraf door het model worden
ingepland omwille van overcapaciteit. De stilstanden die hier ingevoerd worden, zijn inclusief
de afstel- en opstarttijd. We introduceren eerst een aantal nieuwe variabelen, daarna geven
we de bijhorende restricties. In eerste instantie geldt voor de index s het volgende: s ∈
{sA1, sA2, sCD1, s1, s3, s4, s5, s6, sM}. In tweede instantie passen we voor sommige
productiestraten de eerder gegeven vergelijkingen aan.
7.5.1. Beslissingsvariabelen in verband met Stilstanden
Eerst definieren we twee binaire variabelen SS : StartStilstand en ES : EindStilstand die
aanduiden of er al dan niet een stilstand in een bepaalde maand plaatsvindt. Voor een
grafische voorstelling verwijs ik naar figuur 7.1. Op deze figuur zijn enkel de variabelen
verschillend van nul weergegeven.
∀m : SSs,m ∈ {0, 1} en ESs,m ∈ {0, 1} (7.15)
SSs,m :=
1, als een stilstand wordt gestart op straat s in maand m,
0, anders(7.16)
ESs,m :=
1, als een stilstand wordt geeindigd op straat s in maand m,
0, anders(7.17)
HOOFDSTUK 7. FASE 1: PLANNING 42
7
Figuur 7.1.: Grafische voorstelling variabelen stilstand
Vervolgens definieren we nog een gehele variabele dagenSs,m ∈ Z+ : dagenStilstand. Deze
variabele houdt voor elke productiestraat in elke maand bij hoeveel dagen het model de
productiestraat stillegt. Deze dagen stilstand zijn inclusief de afstel- en opstarttijd van de
(dagenSs,m − (afstels + opstarts) · SSs,m) (7.25)� (10) de A1-productie loopt best op vollast met 3 straten. 83 dagen op 2/3-last t.o.v.
28 dagen afstel en 55 dagen op vollast levert 160,000 Euro besparing op (dit getal moet
als variabele kunnen ingegeven worden). Deze besparing is lineair te extrapoleren naar
andere deellasten. We voegen daarom bij de doelfunctie de volgende term waarbij
de getallen in het model worden meegegeven als parameters die op voorhand nog
te wijzigen zijn. Per dag stilstand van de straat A1 krijgen we dus een bonus van
160000/28 euro.
HOOFDSTUK 7. FASE 1: PLANNING 46
7
−160000
28·
startM+11∑
m=startM
dagenSsA1,m (7.26)
Op restrictie 10 wordt later in combinatie met restrictie 22-bis nog dieper op ingegaan.� De stilstanden gaan uiteraard ook gepaard met kosten. Voorlopig worden hier enkel de
kosten voor afstel en opstart in beschouwing genomen. Indien er tijdens een stilstand
ook nog kosten zijn tengevolge van een omstel naar een ander product worden deze kos-
ten bij de omstellingskosten in rekening gebracht. s ∈ {sA1, sA2, sCD1, s1, s3, s4, s5, s6, sM}.
Aan de doelfunctie wordt de volgende term toegevoegd:
De eerste voorwaarde 7.33a eist dat indien er een productieblok van H123 start in de maand
m (SPH123,m = 1) en indien er productie is van p ∈ {H1, H2, H3} in de maand m
(Pp,m = 1), dat het aantal dagen dat er productie is in m en m + 1 groter is dan het
minimum aantal dagen. Indien aan 1 van deze twee voorwaarden niet voldaan is, dan wordt
het rechterlid van de voorwaarde 0 en is er geen beperking voor het linkerlid. De tweede
voorwaarde doet juist hetzelfde enkel dat er nu gekeken wordt of er productie is van p in
de volgende maand m + 1, want het productieblok van H123 kan over meerdere maanden
verspreid zijn. Een verduidelijking voor deze twee situaties wordt gegeven in figuur 7.3.
Waarbij voorwaarde 7.33a geldt voor productie van H1 en H2 en voorwaarde 7.33b voor
H2 en H3. Voorwaarde 7.33c is dan een strengere versie van de vorige twee. Deze zal eisen
dat het aantal dagen productie van p ∈ {H1, H2, H3} in 1 maand groter is dan 5 indien
het productieblok van H123 start en eindigt in dezelfde maand.
Figuur 7.3.: Grafische voorstelling bij vergelijkingen 7.33a en 7.33b
Door het invoeren van deze voorwaarden is voldaan aan volgende restricties:
HOOFDSTUK 7. FASE 1: PLANNING 50
7
� (54) een N-productiecampagne moet minstens 14 dagen duren (dit getal moet als vari-
abele kunnen ingegeven worden).� (55) een M-productiecampagne in straat 6 (=M(in N)) moet minstens 14 dagen duren
(dit getal moet als variabele kunnen ingegeven worden).� (58) een L-productiecampagne moet minstens 14 dagen duren (dit getal moet als vari-
abele kunnen ingegeven worden).� (59) een M-productiecampagne in straat 4 (=M(in L)) moet minstens 14 dagen duren
(dit getal moet als variabele kunnen ingegeven worden).� (67) een F-productiecampagne moet minstens 14 dagen duren (dit getal moet als vari-
abele kunnen ingegeven worden).� (68) een G-productiecampagne in straat 1 moet minstens 7 dagen duren (dit getal moet
als variabele kunnen ingegeven worden).� (75) de H1-, H2- en H3-productiekampagnes moeten telkens in blok gebeuren met een
totale minimale campagneduur voor het blok van 15 dagen en indien H1, H2 of H3 in
het blok voorkomen moeten ze elk een minimale duur hebben van 5 dagen (deze getallen
moeten als variabele kunnen ingegeven worden).� (94) een maalcampagne van F/c, G/c en L/c moet minstens 7 dagen duren (dit getal
moet als variabele kunnen ingegeven worden).
O-productierun
Straat 5 was niet in vorige beschouwing inbegrepen omdat we daar slechts 1 product op
kunnen produceren. Bijgevolg betekent ook dat een einde van een stilstand gelijk is aan
het begin van de productie van O, en het einde van de productie van O komt dan overeen
met het begin van een stilstand op straat 5. Om deze reden hebben we niet de extra
variabelen voor productieruns ingevoerd in straat 5. Om toch de minimale lengte van een
productierun te verzekeren zoals gevraagd in (50) een O-productiecampagne moet minstens
3 weken duren (dit getal moet als variabele kunnen ingegeven worden), is een kleine wijziging
van voorgaande voorwaarden noodzakelijk. Voorwaarde 7.32f is onmiddellijk over te nemen
mits wijziging van SP in ES, voorwaarde 7.32e is niet mogelijk om over te nemen, omdat
er op straat 5 twee mogelijkheden zijn waarbij zowel SSs5,m = 1 als ESs5,m = 1. De eerste
mogelijkheid is die waarbij er een stilstand eindigt in het begin van de maand, vervolgens
21 dagen productie is en op het einde van de maand een nieuwe stilstand wordt gestart.
Hiervoor zou een aanpassing van 7.32e nog gelden. De tweede mogelijkheid echter, waarbij
een stilstand wordt gestart en gestopt in dezelfde maand zorgt ervoor dat er onmogelijk 21
HOOFDSTUK 7. FASE 1: PLANNING 51
7
dagen productie van O mogelijk is, maar wat wel zou geeist worden door aanpassing van
7.32e. We laten deze voorwaarde bijgevolg zonder veel verlies van nauwkeurigheid weg.
∀m ∈ {startM − 1, . . . , startM + 10} :
m+1∑
t=m
QO,t
dagcapaciteitO≥ MLO · ESs5,m
(7.34)
7.7. Stilstanden in combinatie met Productieruns
Vanzelfsprekend worden er ook voorwaarden opgesteld die de relaties tussen de variabe-
len van de stilstanden en de variabelen van de productieruns vastleggen. In onderstaande
voorwaarden is s ∈ {s1, s3, s4, s6, sM, CD1}
∀s,∀m,∀p ∈ {geproduceerd op straat s} :
SSs,m ≤ 1 −m−1∑
t=startM−1
(SPp,t − EPp,t) + EPp,m
(7.35a)
Geen stilstand starten op straat s indien er een productierun aan het lopen is op diezelfde
straat s.
∀s,∀m,∀p ∈ {geproduceerd op straat s} :
SPp,m ≤ 1 −m−1∑
t=startM−1
(SSs,t − ESs,t) + ESs,m
(7.35b)
Analoog als voorwaarde 7.35a, geen productie starten op straat s indien er nog een stilstand
bezig is op straat s.
∀s,∀m :m∑
t=startM−1
SSs,t +∑
p∈{geproduceerd op straat s}
SPp,t
≤
m∑
t=startM−1
ESs,t +∑
p∈{geproduceerd op straat s}
EPp,t
+ 1 (7.35c)
Overdracht per maand van maximaal 1 eenheid die niet afgesloten is naar de volgende
maand. Dus ofwel is er een stilstand die de overgang naar de volgende maand overbrugt,
ofwel is het een productierun.
HOOFDSTUK 7. FASE 1: PLANNING 52
7
7.8. Voorraadrestricties
7.8.1. Algemene voorwaarden
Minimum voorraad:
Voor de minimale voorraad van de producten (p ∈ {producten die verkocht worden}), heb-
ben we volgende restrictie: (102) de minimale voorraad per product die nooit mag onder-
schreden worden is de som van:
1. de gemiddelde off-spec voorraad
2. de gemiddelde voorraad in de ko-lagers
3. de gemiddelde toegewezen voorraad
4. de gemiddelde Q-stock
5. de minimale vrij beschikbare voorraad
(deze getallen moeten als variabele kunnen ingegeven worden). We noemen deze 5 termen
de voorraadParameters en krijgen voor elk product het minimaal aantal dagen per voor-
raadParameter als: minDagp,vp.
Deze voorraad wordt gegeven in dagen, maar moet nog omgezet worden naar aantal ton.
Dit gebeurt op volgende wijze: De dagen voorraad moeten vermenigvuldigd worden met de
gemiddelde dagverkoop van de 12 maanden waarvoor een planning gemaakt wordt. Indien
de totale verkoopsprognose voor het komende jaar gelijk is aan 38300 ton, dan is de gemid-
delde dagverkoop gelijk aan 10.5 ton. Als de minimumvoorraad 25 dagen is betekent dit dat
we niet onder de 25 * 10.5 = 262.5 ton mogen komen voor dat product.
∀p,∀m :
∑startM+11t=startM vraagp,t
365·
∑
vp∈voorraadParameters
minDagp,vp ≤ Vp,m (7.36)
Maximum voorraad:
In analogie met de paragraaf van de minimale voorraad is er ook per product een maximale
voorraad. Het geldt voor dezelfde producten p uitgezonderd A2 en B. Deze hebben speciale
restricties die verderop behandeld worden.
∀p,∀m :
∑startM+11t=startM vraagp,t
365· maxDagp ≥ Vp,m (7.37)
7.8.2. B-voorraad:� (18) maximaal 112 ton B-bulkstapelcapaciteit in eigen tanks (dit getal moet als varia-
bele kunnen ingegeven worden).
HOOFDSTUK 7. FASE 1: PLANNING 53
7
� (19) maximaal 204 ton B-stapelcapaciteit in vaten. Opslagkost in vaten of IBC’s: zie
onder punt 9. (dit getal moet als variabele kunnen ingegeven worden).� (20) maximaal 84 ton B-bulkstapelcapaciteit in tankcontainers (dit getal moet als va-
riabele kunnen ingegeven worden).� (21) de B-bulkvoorraad (eigen tanks en tankcontainers) mag bij de heropstart van
het A1-/A2-bedrijf niet lager zijn dan 20 dagen (dit getal moet als variabele kunnen
ingegeven worden).� (22) de B-voorraad in vaten mag bij de heropstart van het A1-/A2-bedrijf niet lager
zijn dan 20 dagen (dit getal moet als variabele kunnen ingegeven worden).
∀m : V TBB,m ≤ maxTankB (7.38a)
Restrictie 18 wiskundig uitgeschreven als voorwaarde 7.38a.
∀m : V V IBCB,m ≤ maxV atenEnIBCB (7.38b)
Restrictie 19 wiskundig uitgeschreven als voorwaarde 7.38b.
∀m : V CB,m ≤ maxContB (7.38c)
Restrictie 20 wiskundig uitgeschreven als voorwaarde 7.38c. Op dit moment is er echter een
te grote voorraad van B aanwezig in het bedrijf. Indien dat het geval is, moet de maximale
opslagcapaciteit van B in tankcontainers verhoogd worden.
∀m : VB,m = V TBB,m + V V IBCB,m + V CB,m (7.38d)
Voorwaarde 7.38d om de opsplitsing van de voorraad van B in de verschillende deelvoorraden
te definieren.
∀m : V TBB,m + V CB,m − QB,m + vraagB,m · (1 −dagenSsA1,m
#dm) ≥
minBulkBstilstandA1 ·
∑startM+11t=startM vraagB,t
365· ESsA1,m (7.38e)
Voorwaarde 7.38e ten gevolge van restrictie 21. We willen de voorraad kennen op het einde
van een productiestilstand van het A1-bedrijf (V op figuur 7.4), want deze voorraad moet
groter zijn dan 20 dagen. We kennen enkel de variabelen op het einde van elke maand, dus
we moeten V omzetten naar Veind. In de periode daartussen is er dus nog productie van
B en is er ook vraag naar B. In de veronderstelling dat de vraag naar B constant verloopt
doorheen de tijd, moeten we slechts die fractie van de vraag hebben in overeenstemming
HOOFDSTUK 7. FASE 1: PLANNING 54
7
met het aantal dagen dat er nog productie van A1 is. Aangezien er enkel B-productie is als
de A1-productie loopt, is het niet nodig om daar een fractie van te nemen en kunnen we de
volledige productiehoeveelheid in beschouwing nemen. De vergelijking moet uiteraard enkel
gelden indien er een stilstand van A1 wordt beeindigd (ESsA1,m = 1). Indien ESsA1,m = 0,
blijft er een eenvoudige vergelijking over die steeds moet gelden, nl. de voorraad van B op
het einde van maand m moet groter zijn dan de productie van B in m verminderd met de
vraag naar B in m. Het aantal dagen voorraad (minBulkBstilstandA1) zetten we op een
analoge manier om naar ton voorraad zoals eerder uitgelegd. Wanneer we alles samennemen
verkrijgen we voorwaarde 7.38e.
Figuur 7.4.: Grafische voorstelling restrictie 21
Restrictie 22 valt weg. Deze voorwaarde is enkel interessant om de detailplanning te maken.
Het is voldoende dat de totale voorraad bij de heropstart van het A1/A2-bedrijf niet lager
is dan 20 dagen. Dus restrictie 22 zit op die manier vervat in restrictie 21.
7.8.3. A2-voorraad:� (5) maximaal 1780 ton A2-stapelkapaciteit in de tanks 01 en 02 (dit getal moet als
variabele kunnen ingegeven worden).� (6) indien noodzakelijk is er extra 890 ton A2-stapelkapaciteit in tank 03 buiten de
C-, D1-, D2-, I-, J- en K-productiecampagnes (dit getal moet als variabele kunnen
ingegeven worden).� (8) maximaal 2 maand stapelcapaciteit van product A2 in vaten en IBC’s omwille van
de beperkte verkoop van vaten en IBC’s (dit getal moet als variabele kunnen ingegeven
worden).� (11) streefdoel A2-bulkvoorraad buiten een stilstandsperiode is minimum 1400 ton in
de tanks 01 en 02 omwille van de bedrijfszekerheid van de A1-installatie (dit getal moet
als variabele kunnen ingegeven worden).� (12) streefdoel A2-bulkvoorraad net voor de stilstand is 1,780 ton indien enkel tank 01
en 02 ter beschikking staan en 2,670 ton indien ook tank 03 ter beschikking staat (zie
onder punt 6) (dit getal moet als variabele kunnen ingegeven worden).
HOOFDSTUK 7. FASE 1: PLANNING 55
7
� (13) de A2-bulkvoorraad mag bij de opstart van het A1-/A2-bedrijf niet lager zijn dan
25 dagen (dit getal moet als variabele kunnen ingegeven worden).� (14) A2-voorraad in vaten en IBC’s mag bij de opstart van het A1-/A2-bedrijf niet
lager zijn dan 25 dagen (dit getal moet als variabele kunnen ingegeven worden).
∀m : V T12A2,m ≤ maxTank12A2 (7.39a)
Restrictie 5 wiskundig uitgeschreven als voorwaarde 7.39a.
Restrictie 6 wordt voor later behouden. Het is alleszins geen moeilijke voorwaarde, dus laat
ons er hier gewoon vanuit gaan dat ze voldaan is.
∀m : V V IBCA2,m ≤ maxV atenEnIBCA2 ·
∑startM+11t=startM vraagA2,t
365(7.39b)
Restrictie 8 wiskundig uitgeschreven als voorwaarde 7.39b. maxV atenEnIBCA2 wordt hier
gegeven in dagen.
∀m : V T12A2,m ≥ minTank12A2 (7.39c)
Restrictie 11 wiskundig uitgeschreven als voorwaarde 7.39c.
Restrictie 13 eist minimaal 25 dagen A2-bulkvoorraad op het moment dat de installatie
effectief terug begint te produceren. Het aantal dagen berekenen we analoog als in de voor-
gaande gevallen als volgt: voor een heel jaar de rechtstreekse vraag naar A2 voor verkoop
plus de vraag voor productie van de vervolgproducten uit A2. Dit geeft de totale vraag van
A2 voor dat jaar. Indien we delen door 365 krijgen we de gemiddelde vraag naar A2 voor 1
dag. Dus de voorraad mag niet lager zijn dan 25 keer deze gemiddelde vraag voor 1 dag.
Restrictie 14 is naar analogie met restrictie 22 niet interessant voor een schatting van de
maandproducties en zit volledig vervat in restrictie 13.
Dus dan blijven de wiskundige formuleringen van restricties 12 en 13 over. We zouden een
analoge redenering kunnen toepassen zoals bij restrictie 21 voor de B-voorraad. Maar de
vraag naar B, moet hier nu vervangen worden door de vraag naar A2. Deze vraag bestaat
uit de rechtstreekse vraag voor verkoop, maar ook uit het verbruik van A2 voor verdere
productie. De exacte waarde van dit verbruik in de periode waarbij er nog geen stilstand
is van A1 is echter niet eenduidig te bepalen. Om deze reden gaan we een schatting maken
van dit verbruik. We krijgen dan vergelijking 7.40 voor restrictie 12.
V T12A2,m−1 + V T3A2,m−1 + (#dm − dagenSsA2,m) · dagcapaciteitA2
− V erbrA2s5,m,12 − V erbrA2s6,m,12 − vraagA2,m · (1 −dagenSsA1,m
#dm) (7.40)
PT3 zijn binaire variabelen die we verderop beter zullen definieren, het volstaat nu om te
weten dat ze 1 zijn indien tank 3 toegewezen is aan het product p. En anders zijn ze 0.
We hebben hier ook enkele nieuwe variabelen ingevoerd, die de schatting van het verbruik
moeten weergeven:� V erbrA2s,m,12 ∈ R+: geeft de schatting weer van het verbruik van A2 voor straat s in
de maand m die te maken heeft met restrictie 12.
De verklaring van de voorwaarde 7.40:� Het rechterlid stelt niets anders voor dan de voorraad van A2 op het moment dat de
stilstand start.� Indien er een stilstand van straat A1 wordt gestart in de maand m is het de bedoeling
dat de voorraad van A2 in de tanks op dat moment zo groot mogelijk is. Dus indien
SSsA1,m = 1 dan moet het rechterlid een zo groot mogelijke waarde aannemen.� Indien tank 3 niet ter beschikking staat van A2 (PT3C,m−1 = 1 of PT3D1,m−1 = 1),
dan is het streefdoel van de voorraad in de tanks ook kleiner, want enkel tanks 1 en
2 staan ter beschikking. Slechts 1 van deze variabelen kan gelijk zijn aan nul. Het
streefdoel wordt dan 1780 ton.� Aangezien we niet de exacte voorraad weten op het moment dat de stilstand start,
maar enkel in het begin van de maand, moet deze voorraad geschreven worden in
functie van de beginvoorraden, de productie van A2 tot de stilstand en het verbruik
van A2 tot de stilstand.� De productie van A2 tot de stilstand is, aangezien een stilstand van A1 ook een stil-
stand van A2 inhoudt, gelijk aan (#dm−dagenSsA2,m) ·dagcapaciteitA2 . Dit is nu wel
een overschatting van deze productie aangezien er niet steeds tegen de volledige dag-
capaciteit van A2 wordt geproduceerd. We gaan nu niet verder in op de overschatting,
dit komt bij de bespreking van de schatting voor de verbruiken nog aan bod.� De vraag naar A2 tot op het moment dat de stilstand start is dan gelijk aan vraagA2,m ·
(1 −dagenSsA1,m
#dm)
HOOFDSTUK 7. FASE 1: PLANNING 57
7
� Het verbruik van A2 tot de stilstand van A1 wordt in de hierboven ingevoerde vari-
abelen bijgehouden. Er is in deze periode geen verbruik van A2 voor de producten
die normaal via A1 worden geproduceerd, omdat in die periode de A1-installatie in
werking is.
Schatting voor de verbruikte hoeveelheid van A2 tot het moment dat de stilstand van
A1 start:
We zijn op zoek naar de beste schatting. Indien de schatting te groot is, dan zal voorwaarde
7.40 er voor zorgen dat de voorraden in de tanks ook te groot zijn in het begin van de
maand. Dit vormt geen probleem, want dan zal men de productie van A2 sneller stilleggen
omwille van een volle tank. De paar dagen dat de productie van A2 sneller stilligt dan de
productie van A1 is er ook wel verbruik, dus de voorraad op het moment van de start van
de A1 stilstand zal iets kleiner zijn dan het streefdoel. Indien de schatting te klein is, dan
zullen de voorraden in de tanks in het begin van de maand ook te klein zijn en wordt het
streefdoel ook niet gehaald. We zijn dus op zoek naar de beste schatting van dit verbruik.
We schrijven volgende drie voorwaarden 7.41, waarbij we ineens veralgemenen naar restrictie
13. Ze geven alle drie een bovengrens voor het verbruik. Deze grenzen zijn alledrie te groot,
en we gebruiken daar de kleinste van. Dus onze beste schatting is zo groot mogelijk, maar
toch kleiner dan de drie bovengrenzen. We hebben reeds eerder gezien dat een overschatting
geen problemen oplevert. Bovendien compenseert dit ook de overschatting van de productie
van A2 zoals eerder al opgemerkt.
∀m,∀s ∈ {s5, s6},∀r ∈ {12, 13} : V erbrA2s,m,r ≤∑
p∈s
Qp,m · verbruikp,A2; (7.41a)
7.41a is de meest eenvoudige voorwaarde, het verbruik van A2 per straat in een maand
alvorens de stilstand wordt gestart is steeds kleiner dan het totale verbruik van A2 op die
straat per maand.
∀m,∀s ∈ {s5, s6},∀r ∈ {12, 13} :
V erbrA2s,m,r ≤ (#dm−dagenSsA1,m) ·
∑
p∈s dagcapaciteitp · verbruikp,A2
aantal producten in straat s·verbruikp,A2;
(7.41b)
7.41b geeft het verbruik weer van A2 indien tijdens de hele periode voor de stilstand van
A2 er continu productie is geweest van de producten op de straat.
Voor de derde voorwaarde maken we wel de opsplitsing tussen restrictie 12 en 13. Voor
De laatste term in voorwaarde 7.41c zorgt ervoor dat deze vergelijking enkel geldt bij de
corresponderende gevallen uit de waarheidstabel. M is hierbij een groot getal, bijvoorbeeld∑
p∈s Qp,m · verbruikp,A2, zodat de eerste voorwaarde in die gevallen zeker de derde over-
schaduwt.
Figuur 7.6.: Grafische voorstelling situatie 1 1 0 uit tabel 7.3
De onderste situatie uit figuur 7.6 is onmiddellijk voldaan omwille van voorwaarde 7.41b. Bij
de bovenste situatie krijgen we zowel voorin als achterin de maand enkele dagen productie die
bij het verbruik moeten gerekend worden. Voorwaarde 7.41a is hiervoor de beste benadering
aangezien de stilstand van straat s toch een minimale lengte moet hebben. Voor de middelste
situatie is er niet onmiddellijk een eenvoudige oplossing mogelijk. We gaan ervan uit dat de
combinatie van 7.41a en 7.41b een goede benadering geeft.
HOOFDSTUK 7. FASE 1: PLANNING 60
7
Figuur 7.7.: Grafische voorstelling situatie 1 1 1 uit tabel 7.3
De bovenste situatie uit figuur 7.7 is vervat in voorwaarde 7.41a. De onderste situatie in
7.41c. De middelste situatie wordt in zeer goede mate benaderd door 7.41c.
Er rest ons dan enkel nog de voorwaarden te vermelden voor variabele dagenP luss,m. We
gaan daarbij uit van de eigenschap dat een getal steeds kan geschreven worden als het ver-
schil van twee positieve getallen. De volgende voorwaarden moeten dan eenvoudig vertaald
worden naar de nodige situatie.
A = A+ − A− (7.43a)
A+ ≥ 0 (7.43b)
A+ ≥ A (7.43c)
A− ≥ 0 (7.43d)
A− ≥ −A (7.43e)
Een heel analoge redenering geldt voor restrictie 13. We hebben reeds enkele vergelijkingen
daarvoor weergegeven. Enkel de voorwaarde die effectief voor restrictie 13 moet gelden,
blijft nog over:
∀m : 25 ·
∑startM+11t=startM vraagA2,t +
∑
p∈{rechtstreeks uit A2} vraagp,t · verbruikp,A2
365·ESsA1,m ≤
V T12A2,m + V T3A2,m − (#dm − dagenSsA2,m) · dagcapaciteitA2
+ V erbrA2s5,m,13 + V erbrA2s6,m,13 + vraagA2,m · (1 −dagenSsA1,m
#dm) (7.44)
Zoals eerder al vermeld, willen we de hoogste schatting bekomen van het verbruik die toch
kleiner is dan de drie bovengrenzen. Hiervoor voegen we in de doelfunctie een term toe die
het verbruik bevordert en dus maximaal gaat maken:
−∑
m
∑
s∈{s5, s6}
∑
r∈{12, 13}
verbrA2s,m,r (7.45)
HOOFDSTUK 7. FASE 1: PLANNING 61
7
7.9. Omstellingen
7.9.1. Beslissingsvariabelen en voorwaarden
In eerste instantie was het de bedoeling om een voorspelling te maken welke omstellingen
er in een maand zouden plaatsvinden uitgaande van de productiegegevens in die maand.
Indien je bijvoorbeeld weet dat product F en product G beiden gemaakt worden in maand
m, dan kan je een omstelling in die maand op die straat veronderstellen. Of de omstelling
nu gebeurt volgens F → G of volgens G → F kunnen we in eerste instantie niet weten.
Bovendien is het ook mogelijk dat indien er een stilstand door het model wordt ingepland
in de maand m dat de omstel wordt opgeslorpt door deze stilstand. Uiteindelijk zijn er zeer
veel situaties mogelijk en zou het bepalen van een omstel en het daarbij horende capaciteits-
verlies slechts een zeer ruwe benadering zijn van de werkelijkheid.
We zoeken dus een andere manier om deze omstellingen nauwkeuriger te bepalen. Door het
invoeren van de variabelen SP en EP in combinatie met de variabelen SS en ES wordt
er eigenlijk reeds op het hoogste niveau toch al min of meer een productievolgorde vastge-
legd. Zo weten we dus voor elke maand welke producties er gestopt worden. Een productie
die stopt betekent een overgang naar een andere productie of een overgang naar een stilstand.
We voeren de variabele OS ∈ {0, 1} (Omstel) in die voor alle producten geproduceerd op
de straten s ∈ {sCD1, s1, s3, s4, s6, sM} als volgt wordt gedefinieerd:
OSp,m :=
1, als een omstel noodzakelijk is na de productie van product p in maand m,
0, anders
(7.46)
Voorwaarde 7.47 is de voorwaarde die zorgt dat deze variabele de correcte waarde aanneemt.
Zoals reeds vermeld, vindt er een omstelling plaats op het moment dat een productierun
beeindigd wordt en er wordt overgegaan op een andere productierun.
∀p,∀m : EPp,m = OSp,m (7.47)
Door voorwaarde 7.47 wordt ook een omstelling gedefinieerd op het moment dat de produc-
tie gevolgd wordt door een stilstand. We behouden deze definitie omwille van de kosten.
Het is na de stilstand goed mogelijk dat er een ander product wordt geproduceerd. In dat
geval moeten niet alleen de kosten voor afstel gerekend worden, maar ook de kosten voor
omstel. Op deze manier is dat eenvoudig te schrijven in de doelfunctie.
Indien we niet de kosten bekijken, maar het aantal dagen dat gepaard gaat met een omstel,
dan moet daar wel een correctie worden doorgevoerd. Als een omstel wordt gevolgd door een
HOOFDSTUK 7. FASE 1: PLANNING 62
7
stilstand, dan worden de omsteldagen ingesloten in de stilstanddagen. In vergelijking 7.48
schrijven we het aantal dagen omstel in een bepaalde maand uit voor de eerder gedefinieerde
straten s.
∀s,∀m : Dagen verloren omwille van omstellingen op straat s =∑
p∈{geproduceerd op s}
(dagenOp · OSp,m) − verwDagenOs · SSs,m (7.48)
We zien dus dat de totale tijd die we verliezen door omstellingen gelijk is aan elke omstel-
ling die voorkomt in de maand vermenigvuldigd met het aantal dagen voor die omstelling
verminderd met een term indien een omstelling samenvalt met een stilstand. (SSs,m = 1
impliceert namelijk dat er minstens 1 EPp,m = 1 van die straat) Deze term is gelijk aan de
verwachte duur van een omstel op die straat, aangezien we niet op voorhand weten welke
productie er wordt beeindigd net voor de stilstand gestart wordt.
Er zijn wel nog enkele niet eenduidig gedefinieerde parameters in voorwaarde 7.48. Voor
straten 1, 4, 6, CD1 en de maalstraat is dit geen probleem. Alle omstellingen duren even lang
ongeacht welk product erop volgt. Dus dagenOp is voor alle producten van 1 straat gelijk en
tevens ook gelijk aan verwDagen0s. Voor straat 3 geeft dit meer problemen. Bekijken we
enkel het zwarte in figuur 7.8, dan zien we dat alle omstellingen 2 dagen duren uitgezonderd
de 4 zwarte pijlen. Zonder al te veel te wijzigen, passen we twee omstellingen aan (in het
rood), zodat vertrekkend vanuit elk product de omstelduur naar eender welk product gelijk
is. We veronderstellen bijvoorbeeld dat als de productie van K stopt elke omstelling drie
dagen zal duren. Dit is zo in de realiteit uitgezonderd bij de omstelling van K naar H123 die
slechts 2 dagen duurt. Deze vereenvoudiging is gerechtvaardigd omdat de exacte volgorde
van de producties toch nog niet gekend is. Op dit punt is het vooral van belang dat we de
kosten van de omstelling in rekening brengen en het capaciteitsverlies dat daarmee gepaard
gaat. In de tweede fase wordt uiteraard wel gewerkt met de exacte omstelduur. Op deze
manier zijn voor straat 3 de parameters dagenOp en verwDagenOp wel eenduidig bepaald.
Bovendien is het ook beter om een dag omstel extra te beschouwen dan een dag minder,
omdat we op deze manier een overschot aan capaciteit zullen creeren welke meer flexibiliteit
zal toelaten in fase 2. Een dag omstel minder zou leiden tot een capaciteitstekort waarbij
we in fase 2 niet tot een haalbare schedule kunnen komen.
HOOFDSTUK 7. FASE 1: PLANNING 63
7
Figuur 7.8.: Grafische voorstelling van de omstelduur in straat 3
7.9.2. Bijdrage tot de totale kost
Voor de kosten kan eenzelfde redenering gevolgd worden als in de paragraaf hierboven. We
voegen bij de zwarte pijlen van figuur 7.9 twee rode pijlen toe, zodat de kost voor een omstel
na een bepaald product ook weer eenduidig bepaald wordt per product: kostOp. We voegen
volgende term toe aan de doelfuntie:
∀s : +
startM+11∑
m=startM
∑
p∈{geproduceerd op s}
(kostOp · OSp,m) (7.49)
Figuur 7.9.: Grafische voorstelling van de kosten horend bij de omstel in straat 3
Op deze manier hebben we omstellingen ingepland in de maanden en is voldaan aan onder-
staande lijst van restricties:� (26) 2 dagen omstel bij overgang van C- op D1-productie (dit getal moet als variabele
kunnen ingegeven worden).� (27) 3 dagen omstel bij overgang van D1- op C-productie (dit getal moet als variabele
kunnen ingegeven worden).� (28) 2000 Euro omstelkosten bij omstel van C naar D1 (dit getal moet als variabele
kunnen ingegeven worden).� (29) 2000 Euro omstelkosten bij omstel van D1 naar C (dit getal moet als variabele
kunnen ingegeven worden).
HOOFDSTUK 7. FASE 1: PLANNING 64
7
� (56) een omstel in straat 6 van N naar M(in N) of vice versa duurt 3 dagen. De
omstellingskosten bedragen 10,000 Euro per omstel (deze getallen moeten als variabele
kunnen ingegeven worden).� (60) een omstel in straat 4 van L naar M of vice versa duurt 3 dagen. De omstellings-
kosten bedragen 10,000 Euro per omstel (deze getallen moeten als variabele kunnen
ingegeven worden).� (69) een omstel in straat 1 van F naar G of vice versa duurt 2 dagen. De omstel-
lingskosten bedragen 7,000 Euro per omstel (deze getallen moeten als variabele kunnen
ingegeven worden).� (78) een omstel van J naar K duurt 1 dag (dit getal moet als variabele kunnen ingegeven
worden).� (79) een omstel van K naar I, J of G duurt 3 dagen (dit getal moet als variabele kunnen
ingegeven worden).� (80) alle andere omstellen in straat 3 duren 2 dagen (dit getal moet als variabele
kunnen ingegeven worden).� (81) een productomstel van H1, H2 of H3 naar I, G of J kost 4000 Euro.� (82) een productomstel van K naar I, G of J kost 4000 Euro.� (83) een productomstel van H1, H2 of H3 naar K, K naar H1, H2 of H3, I naar J of
G of H1 of H2 of H3 of K, G naar I of J of H1 of H2 of H3 of K, J naar I of G of H1
of H2 of H3 of K kost 1000 Euro (dit moet als variabele kunnen ingegeven worden).� (95) een omstel in de maalstraat duurt 3 dagen. De omstellingskosten bedragen 5,000
Euro per omstel (deze getallen moeten als variabele kunnen ingegeven worden).
7.10. Capaciteitsrestricties
Restrictie: (49) de verschillende straten moeten steeds op maximale uitlasting lopen, ten-
zij andere restricties andere beperkingen opleggen (bv. Restrictie 22 bis), omwille van de
energie-efficientie (zie file met dagcapaciteiten in bijlage). Deze restrictie leert ons dat de
totale productiehoeveelheid op een straat in een bepaalde maand m strikt gelijk moet zijn
aan de maximale productiecapaciteit in diezelfde maand m. Deze maximale productieca-
paciteit wordt beperkt door ingeplande stilstanden, stilstanden vastgelegd door het model
en omstellingen. Deze capaciteit moet zo nauwkeurig mogelijk bepaald worden. Indien de
maximale capaciteit te groot wordt berekend gaan we te veel productie plannen in die maand
op die straat, bijgevolg is er geen haalbare schedule mogelijk in fase 2 voor die maand. Is
HOOFDSTUK 7. FASE 1: PLANNING 65
7
de maximale capaciteit te klein, dan hebben we een overcapaciteit in fase 2 op die straat,
wat niet energie-efficient is.
Deze restrictie (49) geldt voor s ∈ sG := {sCD1, s1, s3, s4, s5, s6, sM}, want voor straat
A1 en dus ook straat A2 en B leert restrictie 10 dat we best op vollast lopen, maar uit
restrictie: (15) er is geen opslag van A1. De productie moet dus direct verbruikt worden of
tot A2 worden omgezet. De A2-productiecapaciteit is kleiner dan de A1-productiecapaciteit.
Indien er geen verbruik is van A1 moet de A1-productie verminderd worden. besluiten we
dat de totale productiehoeveelheid op straat A1 in maand m kleiner (en niet strikt gelijk)
moet zijn dan de maximale productiecapaciteit van straat A1 in diezelfde maand m.
De capaciteit van A2 moet ook niet strikt gelijk zijn, want deze productiecapaciteit is vari-
abel afhankelijk van de productieafname van A1 door de straten 1, 3 en 4.
Schrijven we dit nu allemaal uit dan krijgen we de voorwaarden 7.50.
∀s ∈ sG,∀m :
∑
p∈{p geproduceerd op s}
⌈
Qp,m
dagcapaciteitp
⌉
= #dm − dagenSs,m−
∑
p∈{geproduceerd op s}
(dagenOp · OSp,m) + verwDagenOs · SSs,m (7.50a)
Een klein woordje uitleg bij vergelijking 7.50a: Het linkerlid is het totaal aantal dagen
dat er geproduceerd wordt op straat s in maand m. Hier wordt naar boven afgerond per
onvolledige dag productie. Anders kan een halve dag productie van product 1 samengeteld
worden met een halve dag productie van product 2. In de praktijk is dat niet mogelijk en
worden deze halve producties ook over 2 dagen gespreid, wat dus een verlies van 2 halve
dagen productie inhoudt. Deze afronding naar boven beschrijft perfect de situatie die we
willen. AMPL beschouwt deze afronding echter als een niet-lineariteit en kan hier niet met
werken. Daarom moeten we op zoek naar een andere manier om te zorgen dat twee halve
dagen productie op twee verschillende dagen plaatsvinden. De oplossing die deze ideale
situatie het beste benadert zal voor elke productie die beeindigd wordt in de maand m
een extra dag aanrekenen. Deze extra dag brengt dan de twee halve dagen in rekening die
verloren gaan. We laten de afrondingstekens in voorwaarde 7.50 weg en zodra er meer dan
1 product op een straat wordt geproduceerd voegen we in het linkerlid volgende term toe:∑
p∈{p geproduceerd op s} EPp,m.
Het rechterlid is het aantal dagen dat er beschikbaar is voor productie. Volgens restrictie 49
moeten rechter- en linkerlid gelijk zijn aan elkaar omwille van maximale uitlasting. Het aan-
HOOFDSTUK 7. FASE 1: PLANNING 66
7
tal beschikbare dagen is niets anders dan het totaal aantal dagen in een maand verminderd
met de stilstanden in die maand (zowel ingepland als door het model gepland) verminderd
met dagen die verloren gaan door omstellingen (laatste twee termen). Voor straat 5 vallen
deze laatste twee termen weg omdat daar geen omstellingen mogelijk zijn.
∀s ∈ {A1, A2},∀m :
∑
p∈{p geproduceerd op s}
⌈
Qp,m
dagcapaciteitp
⌉
≤ #dm − dagenSs,m (7.50b)
Zoals reeds eerder uitgelegd, geldt voor A1 en A2 de gelijkheid niet, bovendien zijn hier ook
geen omstellingen en we verkrijgen voorwaarde 7.50b.
Voor de productiestraat van CD1 bestaat nog een andere restrictie die een beperking oplegt
voor de capaciteit, nl. (24) maximaal 100 (maxCapCD1) productiedagen mogelijk voor C +
D1 inclusief opstart en afstel omwille van personeelsbeperkingen (dit getal moet als variabele
kunnen ingegeven worden). We zien in voorwaarde 7.51 dat alle productiedagen, de afstel-
en opstartdagen en de omsteldagen voor een heel jaar samen kleiner moeten zijn dan het
maximum aantal dagen productie op straat CD1.
∑
m
∑
p∈{p geproduceerd op sCD1}
⌈
Qp,m
dagcapaciteitp
⌉
+ afstelsCD1 · SSsCD1,m + opstartsCD1 · ESsCD1,m
+∑
p∈{geproduceerd op sCD1}
(dagenOp · OSp,m) − verwDagenOs · SSsCD1,m
≤ maxCapCD1
(7.51)
7.11. Totale kost (2)
Nu de productiehoeveelheden, de voorraden, de tekorten en de omstellingen gedefinieerd
zijn, kunnen we meer in detail ingaan op de relatie tussen de kosten die hier allemaal met
gepaard gaan. Bij de totale kost is het de bedoeling dat aan volgende restricties wordt
voldaan:� (52) het gebonden kapitaal in de O-voorraad moet geoptimaliseerd (geminimaliseerd)
worden. De variabele productiekosten zijn in de tabel met variabelen weergegeven (deze
variabele productiekosten moeten als variabele kunnen ingegeven worden).� (65) het gebonden kapitaal in de gezamelijke L-, N- en M-voorraad moet geoptima-
liseerd (geminimaliseerd) worden. Hierbij moeten de omstelkosten en de capaciteits-
verliezen bij productomstellen ook in overweging genomen worden. Zie de variabele
productiekosten in de tabel in bijlage.
HOOFDSTUK 7. FASE 1: PLANNING 67
7
� (85) het gebonden kapitaal in de gezamelijke F-, G-, H1-, H2-, H3-, I-, J- en K-
voorraad moet geoptimaliseerd (geminimaliseerd) worden. Hierbij moeten de omstel-
kosten en de capaciteitsverliezen bij productomstellen ook in overweging genomen wor-
den. Zie de variabele productiekosten in de tabel in bijlage.� (97) het gebonden kapitaal in de gezamelijke L-, F- en G-voorraad moet geoptimaliseerd
(geminimaliseerd) worden. Hierbij moeten de omstelkosten (omstel tussen G en F in
straat 1 alsook tussen L/c, F/c en G/c in de maalstraat) en de capaciteitsverliezen bij
productomstellen (in straat 1 en in de maalstraat) ook in overweging genomen worden.
Zie de variabele productiekosten in de tabel in bijlage.
De bijdrage van het gebonden kapitaal in de voorraadkost is reeds eerder uitgewerkt, maar
hoe dit in relatie staat met de andere kosten wordt hieronder besproken. Omstellingskosten
en voorraadkosten brengen een trade-off met zich mee, want langere productieruns geven,
grotere voorraden, maar minder omstelingen. Kortere productieruns geven kleinere voorra-
den, maar meer omstellingen. Het model zal dus die situatie bevoordelen waarbij de totale
kost geminimaliseerd wordt. Op deze manier is al voldaan aan Het gebonden kapitaal in de
voorraad moet geoptimaliseerd worden, hierbij moeten de omstelkosten in rekening worden
gebracht. Een tweede aspect dat nog in rekening moet gebracht worden, zijn de capaci-
teitsverliezen. De trade-off zet zich verder indien er te veel omstellingen worden ingepland,
want per omstelling verliest men een aantal productiedagen. Op deze manier kan de totale
hoeveelheid niet meer geproduceerd worden, kan men dus minder producten verkopen en is
er winstderving. Zodra er winstderving is, moeten er kosten voor de capaciteitsverliezen in
rekening gebracht worden. Het verlies dat men leidt, is per product gelijk aan het tekort
vermenigvuldigd met de marge. Deze tekortfactor hebben we in een voorgaand onderdeel
reeds behandeld. Dus we voldoen aan de trade-off: Het gebonden kapitaal in de voorraad
moet geoptimaliseerd worden. Hierbij moeten de omstelkosten en de capaciteitsverliezen ook
in overweging genomen worden. Samengevat zoekt het model dus de beste oplossing voor
volgende punten:� Zo weinig mogelijk voorraad, maar dan meer omstellingen.� Zo weinig mogelijk omstellingen, maar dan meer voorraad.� Geen capaciteitsverliezen, dus beperking op het aantal omstellingen
7.12. Voorwaarden in verband met Tank 3
Dit onderdeel bundelt verschillende voorwaarden die te maken hebben met tank 3. Naast
de reeds eerder gedefinieerde variabele V T3p,m definieren we nog de volgende variabelen:
HOOFDSTUK 7. FASE 1: PLANNING 68
7
� PT3p,m :=
1, als Tank 3 toegewezen aan product p op het einde van maand m,
0, als Tank 3 toegewezen aan een ander product op het einde van maand m
De binaire variabelen corresponderend met V T3p,m� OST3m ∈ {0, 1, 2}: een omstel in tank 3, het aantal omstellingen in tank 3 in maand
m
Voorwaarden 7.52 leggen de relaties vast tussen V T3p,m en PT3p,m.
∀m :∑
p∈{mogelijke opslag in T3}
PT3p,m = 1 (7.52a)
∀m,∀p ∈ {mogelijke opslag in T3} : V T3p,m ≤ maxTank3p · PT3p,m (7.52b)
Voorwaarde 7.52b is noodzakelijk omwille van restricties 6 en 30:� (6) indien noodzakelijk is er extra 890 ton A2-stapelkapaciteit in tank 03 buiten de
C-, D1-, D2-, I-, J- en K-productiecampagnes (dit getal moet als variabele kunnen
ingegeven worden).� (30) maximaal 178 ton C- of D1-stapelcapaciteit in de tank 03.
Aangezien de tank ook slechts toegewezen mag worden aan A2 buiten een productierun van
C of D1, kunnen we een verband (7.53) uitdrukken tussen de stilstand van straat CD1 en de
toewijzing van A2 aan tank 3. In theorie zou ook zo een verband kunnen opgesteld worden
in de omgekeerde richting, dat indien er geen stilstand is, de tank toegewezen moet zijn aan
C of D1, maar omwille van de gelijkheid van 7.53 in combinatie met 7.52a is dit automatisch
in orde.
∀m :m∑
t=startM−1
(SSsCD1,t − ESsCD1,t) = PT3A2,m (7.53)
Voorwaarde 7.53 legde het verband vast tussn de CD1-productie en de A2-productie via
Tank 3. Voor de C- en D1-productie is ook nog een extra voorwaarde noodzakelijk. Bekijken
we figuur 7.10, dan herinner ik eraan dat in de eerste fase enkel maar schattingen worden
vastgelegd. In de veronderstelling dat er voldoende wordt geproduceerd van D1 in maand m
voor de hele productie van J en D2K in maand m is er nog capaciteit over op de CD1-straat.
Deze capaciteit wordt gebruikt voor C-productie. De I-productie start echter pas in maand
m + 1, wat betekent dat in heel de tussenperiode tank 3 eigenlijk moet toegewezen zijn
aan product C. We leggen in fase 1 nog niets over productiedagen vast, enkel op het einde
van de maand. In deze situatie zien we dat het model beslist om tank 3 toe te wijzen aan
product C op het einde van maand m, en niet aan product D1. Alle productie van D1 uit
maand m is perfect opgebruikt zodat tank 3 tegen het einde van de maand leeg is. Mits
HOOFDSTUK 7. FASE 1: PLANNING 69
7
deze veronderstellingen is voldaan aan de eerder gevormde voorwaarden. Om deze situatie
op te lossen is er nood aan een voorwaarde die de toewijzing van tank 3 op het einde van
een maand verbiedt indien er een productierun bezig is die gebruik maakt van de andere
grondstof. In de situatie van figuur 7.10 mag er geen toewijzing van tank 3 aan product
C zijn op het einde van maand m aangezien er een productierun bezig is van D2K. We
schrijven voorwaarde 7.54.
Figuur 7.10.: Grafische voorstelling voor probleem in tank 3 bij C- of D1-productie
∀(p1, p2) ∈{(C,D2K), (C, J), (D1, I)},∀m :
PT3p1,m ≤ 1 −m∑
t=startM−1
(SPp2,t − EPp2,t)(7.54)
Omstel in tank 3 (7) 2 dagen reiniging van tank 03 te voorzien voor en nadat er A2 in
gestockeerd wordt (dit getal moet als variabele kunnen ingegeven worden).
Tussen C en D1 of omgekeerd wordt de tank niet gereinigd. Het enigste wat we weten is
welk product er zich op het eind van elke maand in de tank bevindt, aan de hand daarvan
bepalen we dan of er een omstel heeft plaats gevonden of niet. Onderstaande waarheidstabel
7.4 geeft de verschillende situaties weer.
Tabel 7.4.: Waarheidstabel in verband met de verschillende situaties voor omstel in tank 3
PT3A2,m−1 PT3A2,m PA2T3,m OST3m
1 0 - 1
0 1 - 1
0 0 0 0
0 0 1 2
1 1 - 0
In de eerste situatie gaat men over van A2 naar C of D1. Dit betekent dat de productie
van C of D1 moet gestart zijn of een stilstand moet beeindigd zijn (ESsCD1,m = 1). We
HOOFDSTUK 7. FASE 1: PLANNING 70
7
schrijven volgende voorwaarde:
∀m : OST3m ≥ PT3A2,m−1 + ESsCD1,m − 1 (7.55a)
De tweede situatie betekent een overgang naar opslag van A2. Dit is enkel mogelijk als
straat CD1 begonnen is aan een stilstand: (SSsCD1,m = 1). Volgende voorwaarde voldoet
aan deze situatie en verbreekt de vorige situatie niet.
∀m : OST3m ≥ PT3A2,m + SSsCD1,m − 1 (7.55b)
In de derde en vierde situatie maken we een verdere opsplitsing. Op het begin en het einde
van de maand is de tank toegewezen aan C of D1. Tussendoor is het echter best mogelijk
dat de tank even aan A2 is toegewezen. Afhankelijk van de situatie is er dus geen omstel of
twee omstellingen in de maand. We maken een onderscheid in deze situatie door te kijken
of de productie van A2 via T3 in de maand m verschillend is van 0 en schrijven volgende
De extra term met SP omdat deze vergelijking enkel moet gelden in de eerst maand van
de productierun in de veronderstelling dat een totale campagne van D2K nooit langer dan
1 maand kan duren.
7.13.2. J- en D2K-productie in blok
(74) de J- en K-productiecampagnes moeten telkens in blok (=aaneensluitend) gebeuren om-
dat ze uit een gemeenschappelijke grondstof nl. D1 geproduceerd worden.
Met in ons achterhoofd de vergelijkingen voor productieruns, waarbij er slechts 1 productie-
run van elk product per maand kan voorkomen schrijven we volgende vergelijkingen 7.62a
en 7.62b die er voor zorgen dat indien bijvoorbeeld de productie van J wordt gestopt in
maand m en er is nog geen D2K-productie voorgekomen, er een productierun van D2 wordt
gestart in diezelfde maand m. Het is echter wel nog mogelijk dat er tussen deze twee pro-
ducties nog andere producties voorkomen zoals te zien in figuur 7.13. De producties van
D2K en J voldoen aan de vergelijkingen 7.62a en 7.62b, maar toch zijn ze nog niet in blok
en het is ook niet mogelijk om ze in blok te plaatsen aangezien ze starten of eindigen in een
andere maand. Hiervoor hebben we nog andere vergelijkingen nodig: 7.62c en 7.62d. Deze
vergelijkingen stellen een NAND-functie voor. Indien beide sommen gelijk zijn aan 1, zoals
in de situatie van figuur 7.13, dan kan er geen productie starten van een ander product, met
andere woorden, de blokken worden verplicht om dan na elkaar te komen.
∀m :m∑
t=startM
(EPD2K,t − EPJ,t) ≤ SPJ,m (7.62a)
∀m :
m∑
t=startM
(EPJ,t − EPD2K,t) ≤ SPD2K,m (7.62b)
∀p ∈ {producten op s3\{D2, K, J}},∀m :
SPp,m ≤ 2 −m∑
t=startM
(EPD2K,t − EPJ,t) −m−1∑
t=startM−1
(SPD2K,t − SPJ,t) (7.62c)
HOOFDSTUK 7. FASE 1: PLANNING 75
7
∀p ∈ {producten op s3\{D2, K, J}},∀m :
SPp,m ≤ 2 −
m∑
t=startM
(EPJ,t − EPD2K,t) −
m−1∑
t=startM−1
(SPJ,t − SPD2K,t) (7.62d)
Figuur 7.13.: Grafische voorstelling ter verduidelijking restrictie 74
7.13.3. Beperkt aantal productieruns per jaar� (76) maximum 1 I-productiecampagne per jaar (dit getal moet als variabele kunnen
ingegeven worden).� (77) maximum 4 J- en K-productiecampagnes per jaar (dit getal moet als variabele
kunnen ingegeven worden).
Definieren we het aantal productieruns afhankelijk van het product als volgende parameter:
APp. Dan kunnen deze twee restricties samen behandeld worden. Het totaal aantal produc-
tieruns die gestart worden en ook beeindigd worden, moet kleiner zijn dan het maximum
aantal productieruns: (∀p ∈ {I, D2K, J})
∑
m
SPp,m ≤ APp (7.63a)
∑
m
EPp,m ≤ APp (7.63b)
7.13.4. H123 in de winter
(84) 1 van de H1, H2 of H3 productiecampagnes moet in de koudere maanden (december tot
en met maart) geproduceerd worden omwille van de afvalwaterbehandelingskosten.
We definieren in de preproces-stap de koude maanden en krijgen vervolgens voorwaarde 7.64.
Hierbij wordt ook EP in rekening gebracht omdat het kan zijn dat de vorige productiemaand
ook een koude maand is, waarbij een productierun voor H123 gestart is die nog doorloopt
in de huidige planning.
∑
m∈{Koude maanden}
(SPH123,m + EPH123,m ≥ 1 (7.64)
HOOFDSTUK 7. FASE 1: PLANNING 76
7
7.13.5. Tank 3 leeg na productiecampagne
(31) Tijdens een I-/J-/D2-/K-productiecampagne wordt het geproduceerde C of D1 steeds
volledig opgebruikt, m.a.w. tot voorraad 0.
Het is dus niet de bedoeling om dagen op voorhand C en D1 te gaan produceren alvorens
dit verder te verwerken. Indien de tank beschikbaar is, slaagt men daar het liefst A2 in op.
I-productie
Er is slechts 1 productierun voor I per jaar. Het zou dus vrij zinloos zijn als tank 3 niet
helemaal leeg is na de productierun, want zo zou tank 3 voor de rest van het jaar niet
beschikbaar zijn voor andere producten. Aangezien we niet weten op welk moment de I-
productie stopt in een maand, kunnen we alleen eisen dat tank 3 niet meer toegewezen is
aan product C op het einde van de maand waarin de productierun van I stopt.
∀m : 1 − EPI,m ≥ PT3C,m (7.65)
Indien dus EPI,m = 1 dan moet PT3C,m = 0, dus de V T3C,m = 0 en de tank is niet meer
toegewezen aan C op het eind van de maand m. Indien EPI,m = 0 dan is PT3C,m vrij en
kan er op elk moment beslist worden of de tank opnieuw toegwezen wordt aan C of niet.
JD2K-productie
Maximaal 3 productieruns per jaar, in de veronderstelling dat deze verspreid zijn doorheen
het jaar, mogen we veronderstellen dat indien een productieblok eindigt in de maand m
tank 3 op het eind van die maand niet opnieuw toegewezen is aan D1. Zodat na de JD2K-
campagne de tank beschikbaar is voor andere producten. In theorie is dat wel mogelijk
indien twee productieblokken elkaar zeer dicht opvolgen. In praktijk veronderstel ik echter
dat dit niet mogelijk is. Dit is echter niet eenvoudig te vertalen naar 1 vergelijking zoals bij
product C het geval was.
Indien blok D2KJ afgesloten wordt in de maand m moet PT3D1,m = 0. Een blok is afgesloten
in de maand m als:
∑mt=startM (EPD2K,t − EPJ,t) = 0
∧
EPD2K,m = 1 ∨ EPJ,m = 1
(7.66)
Dit is zonder invoeren van een extra variabele niet mogelijk om te modelleren. Het probleem
zit hem in de eerste voorwaarde van 7.66 waarvan het linkerlid zowel −1, 0 als 1 kan zijn.
Mits het gebruik van de absolute waarde van dit linkerlid, is het wel mogelijk om het
probleem te modelleren. Om de absolute waarde van een variabele te krijgen, maken we
HOOFDSTUK 7. FASE 1: PLANNING 77
7
gebruik van de eerder vermelde vergelijkingen 7.43 die een getal schrijven als het verschil
van twee positieve getallen. De absolute waarde wordt dan de som van deze twee positieve
getallen:
|A| = A+ + A− (7.67)
Het probleem kan dan geschreven worden als:
∀m : 1 − PT3D1,m ≥ EPD2K,m −
∣
∣
∣
∣
∣
m∑
t=startM
(EPD2K,t − EPJ,t)
∣
∣
∣
∣
∣
(7.68a)
∀m : 1 − PT3D1,m ≥ EPJ,m −
∣
∣
∣
∣
∣
m∑
t=startM
(EPD2K,t − EPJ,t)
∣
∣
∣
∣
∣
(7.68b)
Indien we de eerder gevormde voorwaarden 7.66 invullen in de vergelijkingen 7.68 dan zien
we dat het resultaat is zoals we verwachtten.
7.14. Beginvoorwaarden
De initialisatie van de beginvoorwaarden vertrekkende van de resultaten in de huidige maand:� Initiele voorraad voor de producten p waarvoor dit nodig is:
initieleV oorraadp = Vp,startM−1 (7.69a)� Initiele voorraad van A2 in tank 1 en 2:
initieleTank12 = V T12A2,startM−1 (7.69b)� Initiele voorraad van D2 in tank 4:
initieleTank4 = V T4D2,startM−1 (7.69c)� Initiele voorraad van B in tank B:
initieleTankB = V TBB,startM−1 (7.69d)� Initiele voorraad van p ∈ {B, A2} in vaten en IBC’s:
initieleV IBCp = V V IBCp,startM−1 (7.69e)� Initiele voorraad van B in Container B:
initieleContB = V CB,startM−1 (7.69f)
HOOFDSTUK 7. FASE 1: PLANNING 78
7
� Initiele voorraad van p ∈ {A2, C, D1} in tank 3:
initieleTank3p = V T3p,startM−1 (7.69g)� Aantal dagen stilstand op het einde van de vorige maand voor
s ∈ {s1, s3, s4, s5, s6, sA1, sA2, sCD1, sM}
initieleDagenSs = dagenSs,startM−1 (7.69h)� Of er een stilstand bezig is op het einde van de vorige maand voor
s ∈ {s1, s3, s4, s5, s6, sA1, sA2, sCD1, sM}
initieleSSs = SSs,startM−1 (7.69i)� De productiehoeveelheid waarmee de straat s geeindigd is in de vorige periode. s ∈
{s1, s3, s4, s5, s6, sA1, sA2, sCD1, sM}
∀p ∈ {geproduceerd op s}initieleQp = Qp,startM−1 (7.69j)� En indien de straat s ∈ {s1, s3, s4, s5, s6, sA1, sA2, sCD1, sM} in de vorige
periode nog bezig is aan een productierun:
∀p ∈ {geproduceerd op s}initieleSPp = SPp,startM−1 (7.69k)� Op het moment dat de planning start, zijn er uiteraard nog geen tekorten. Deze zitten
verwerkt in de werkelijke voorraadcijfers, die eventueel lager zijn dan de eis voor de
minimale voorraad.
∀p ∈ {producten die verkocht worden}Tp,startM−1 = 0 (7.69l)
7.15. Overige voorwaarden
7.15.1. Efficientie productie A1
Het betreft hier restrictie 10 versus restrictie 22-bis.� (10) de A1-productie loopt best op vollast met 3 straten. 83 dagen op 2/3-last t.o.v.
28 dagen afstel en 55 dagen op vollast levert 160,000 Euro besparing op (dit getal moet
als variabele kunnen ingegeven worden).� (22 bis) de A1-productie moet minimaal 8 maanden lopen op minstens 50% capaciteit
(het aantal maanden en de minimale capaciteit moeten als variabele kunnen ingegeven
worden).
HOOFDSTUK 7. FASE 1: PLANNING 79
7
Vollast moet als volgt geınterpreteerd worden: de A1-installatie produceert tegen maxima-
le capaciteit van 116.7 ton. Dit kan men bekomen door er drie productiestraten op aan
te sluiten en de resterende capaciteit via A2 te verwerken. Of door twee productiestraten
aan te sluiten en weer de resterende capaciteit via A2 te verwerken. Of slechts 1 straat en
. . . Zolang er maar geproduceerd wordt tegen maximale capaciteit spreekt men van vollast.
Beide voorwaarden zijn niet eenvoudig te modelleren. We kunnen echter een zeer goede
benadering verkrijgen door de combinatie van volgende twee voorwaarden en een extra term
in de doelfunctie:
∑
m
(#dm − dagenSsA1,m) ≥ 8 · 30 (7.70a)
Deze vergelijking eist dat er minstens 240 dagen productie is in installatie A1, het equivalent
van 8 maanden. Een deel van restrictie 22-bis is op deze manier reeds voldaan.
∑
m
QA1,m ≥ 0.5 · 8 · 30 · dagcapaciteitA1 (7.70b)
Deze vergelijking stelt gewoon een minimum waarde voorop van de productiehoeveelheid
van A1 volgens restrictie 22 bis.
−160000
28·∑
m
dagenSsA1,m (7.70c)
Deze term is gelijk aan de eerder gegeven term 7.26.
De combinatie van 7.70 zou dus als effect moeten hebben dat de A1-installatie zoveel mogelijk
tegen vollast loopt, maar dat er toch minimaal 8 maanden productie is. Term 7.70c zal
er voor zorgen dat er zoveel mogelijk stilstanden worden ingepland. Echter nooit meer
stilstanden dan 4 maand (7.70a). Zo veel mogelijk stilstanden betekent ook dat de productie
zoveel mogelijk gegroepeerd wordt, ofte zoveel mogelijk productie op zo weinig mogelijk
dagen. Dus dit leidt benaderend tot zowel meer dan 50% capaciteit als tot zoveel mogelijk
dagen in vollast, waardoor restricties 10 en 22-bis bij benadering voldaan zijn.
7.15.2. Doorgeven van stilstanden� (33) de O-, F-, L- en M(in L)-producties kunnen alleen lopen als de E-installatie loopt.� (40) de H1-, H2-, H3-, L-, M(in L)- en O- en M(in L)-producties kunnen alleen lopen
als de AW1-installatie loopt.� (42) de N-productie kan alleen lopen als de AW2-installatie loopt.
In de preprocessing stap zijn deze vergelijkingen al eens aangehaald. Deze zijn gedeeltelijk
opgelost indien het mogelijk was om een stilstand van de ene productiestraat door te geven
HOOFDSTUK 7. FASE 1: PLANNING 80
7
naar een stilstand van een andere productiestraat. Bijvoorbeeld voor restrictie 33, is de
stilstand van de E-installatie al volledig doorgegeven naar straat 5 in de preproces-stap.
Voor F is dat echter iets moeilijker, omdat een stilstand van E niet impliceert dat straat 1
moet stilliggen, want er is nog G-productie mogelijk. Voor deze situaties zoeken we hier een
oplossing. Het enigste wat dan mogelijk is in deze fase, is om de productieduur van F in
maand m te beperken tot maximaal het aantal dagen dat de E-installatie in werking is in
diezelfde maand. Voorwaarde 7.71a wordt hiervoor uitgeschreven. Een analoge redenering
kan gevolgd worden voor de H123-productie versus de AW1-installatie (vgl 7.71b) en de
N-productie versus de AW2-installatie (vgl. 7.71c).
Indien in de huidige jaargang de productie van M wordt gestart op straat 4, enkel de maanden
ervoor nog beperken tot 0: voorwaarde 7.75c.
7.15.7. Energiekoppeling tussen straat 5 en 6
(63) N en M(in N) lopen best samen met O. Als N samen loopt met O, dan besparen we
875 Euro/dag t.o.v. als N loopt zonder O. Als M samen loopt met O, dan besparen we 1,225
Euro/dag t.o.v. als M loopt zonder O. (Deze beide getallen moeten als variabele kunnen
ingegeven worden.)
In eerste instantie willen we dat indien M loopt, O zoveel mogelijk op hetzelfde moment
loopt. Omdat de winst hierbij groter is dan bij N versus O. Indien in dezelfde maand mits
omstelling ook N geproduceerd wordt, willen we ook daarbij zoveel mogelijk O-productie
hebben. Een fictieve situatie is voorgesteld in figuur 7.14. Hierbij zou het dus het meest
HOOFDSTUK 7. FASE 1: PLANNING 83
7
voordelig zijn om de O-productie zoveel mogelijk naar achteren in de maand te schedulen,
zodat die volledig met de M6-productie samenvalt. En we proberen dan ook nog zoveel
mogelijk van de N-productie ermee te laten samenvallen. Met deze figuur in het achterhoofd
zijn voorwaarden 7.76 eenvoudig te interpreteren.
Figuur 7.14.: Grafische voorstelling in verband met restrictie 63
∀m :QM6,m
dagcapaciteitM6−
QO,m
dagcapaciteitO≤ M6nietOm (7.76a)
Hierin voegen we een nieuwe variabele toe: M6nietOm ∈ R+ , die het aantal dagen weergeeft
waarop er meer M-productie is in de maand m dan O-productie. Indien groter dan 0 is het
onmogelijk om alle M-productie te coveren met O-productie en zijn we niet energie-efficient.
∀m :QN,m
dagcapaciteitN+
QM6,m
dagcapaciteitM6+
∑
p∈{producten op straat 6}
dagenOp · OSp,m
− verwDagenOs6 · SSs6,m −QO,m
dagcapaciteitO≤ NnietOm
(7.76b)
Ook hier voegen we een nieuwe variabele in: NnietOm ∈ R+ . Bekijken we figuur 7.14 nauw-
keurig dan zien we dat deze variabele het aantal dagen zal weergeven waarbij de N-productie
nog gecovered is door O, nadat we zoveel mogelijk de M-productie en de tussenliggende stil-
stand coveren. Is deze variabele positief, dan produceren we niet energie-efficient en moet
er ook een penaltykost aangerekend worden.
Bij de te minimaliseren totale kost voegen we volgende term toe:
+∑
m
(875 · NnietOm + (1225 − 875) · M6nietOm) (7.77)
De penalty voor M6nietOm is het verschil, omdat deze dagen sowieso ook in de eerste term
reeds vervat zitten. Dus de totale penalty voor M6nietOm is nog steeds 1125 euro.
7.15.8. Voorkeur voor G-productie op straat 3
(70) preferentiele G-productie op straat 3. De rest moet op straat 1 geproduceerd worden
(dit moet als variabele kunnen ingegeven worden).
HOOFDSTUK 7. FASE 1: PLANNING 84
7
Het product G kan nu reeds op beide productiestraten worden geproduceerd en wordt het
liefst op straat 3 geproduceerd. Indien straat 3 echter volgeboekt is, moet de rest van G op
straat 1 worden geproduceerd. We voeren een penaltyfactor in de doelfunctie in, die elk ton
G-productie via straat 1 bestraft. De totale kost wordt uitgebreid met volgende term:
+∑
m
QG1,m · varProductieKostG1 · kostFactorG (7.78)
Afhankelijk van de grootte van de kostfactor bestraffen we de productie van G op straat
1 meer of minder. Indien de factor kleiner dan 0 is, is het voordeliger om G op straat 1
te produceren. Indien kostFactorG = 0 dan is er geen voorkeur voor een bepaalde straat.
Indien de factor groter is dan 0, is het voordeliger om te produceren op straat 3.
7.15.9. Voorwaarden in verband met het moment van omstel� (88) een productomstel moet op maandag, dinsdag, woensdag of donderdag gebeuren.
Er mag geen wettelijke feestdag binnen deze dagen vallen.� (89) de productomstel van straat 1 en 3 mag niet gelijktijdig gebeuren omwille van de
personeelsbezetting.� (90) de productomstel van straat 4 en 6 mag niet gelijktijdig gebeuren omwille van de
personeelsbezetting.� (91) een productomstel van straat 1, 3, 4, 5 en 6 mag niet gelijktijdig gebeuren omwille
van de personeelsbezetting. Opgepast: het zou kunnen zijn dat deze voorwaarde in de
nabije toekomst komt te vervallen terwijl de twee vorige behouden blijven.� (96) een productomstel in de maalstraat moet op maandag, dinsdag, woensdag of don-
derdag gebeuren. Er mag geen wettelijke feestdag binnen deze dagen vallen.
In deze eerste fase kan er onmogelijk gezegd worden op welke dag een omstel zal plaatsvin-
den. We kunnen toch al een beperking opstellen die ons zal beschermen in de tweede fase
tegen infeasible schedules. In 1 maand zijn er ongeveer 4 weken, dus 16 dagen waarop een
omstel mag plaatsvinden. In de praktijk zullen dit meerdere dagen zijn, maar aangezien op
een sequentie van 4 mogelijke dagen voor een omstelling een omstel van 3 dagen sowieso een
verlies van 1 omsteldag betekent is 16 reeds een mooie beperking. Een productomstel van
straat 1 en 3 mag niet gelijktijdig gebeuren. Dit betekent dat ze op verschillende omstelda-
gen moeten voorkomen, dus het totaal aantal omsteldagen voor straat 1 en 3 in een maand
moet kleiner zijn dan 16. Het analoge geval geldt voor de andere restricties en we schrijven
voorwaarden 7.79.
HOOFDSTUK 7. FASE 1: PLANNING 85
7
∀m :∑
p∈{geproduceerd op s1 of s3}
dagenOp · OSp,m ≤ 16 (7.79a)
∀m :∑
p∈{geproduceerd op s4 of s6}
dagenOp · OSp,m ≤ 16 (7.79b)
∀m :∑
p∈{geproduceerd op s1, s3, s4, s5 of s6}
dagenOp · OSp,m ≤ 16 (7.79c)
∀m :∑
p∈{geproduceerd op maalstraat}
dagenOp · OSp,m ≤ 16 (7.79d)
Hierbij horen wel enkele kritische opmerkingen. Ten eerste zullen deze beperkingen bijna
altijd voldaan zijn, want bijvoorbeeld op straat 4 en 6 zijn slechts twee producten mogelijk,
dus maximaal 1 omstelling per straat per maand, wat steeds kleiner is dan 16. Met andere
woorden ze beperken bijna niets. Ten tweede betekent nog niet dat door het aantal omstel-
dagen te beperken, deze omsteldagen ook perfect op het juiste moment zullen vallen. Dit
hangt af van de productiehoeveelheden van de producten op een straat. Een productierun
van 20 dagen eindigt misschien net op een vrijdag, wat dus zal leiden tot twee dagen wach-
ten alvorens men aan de omstelling kan beginnen. Bijgevolg zijn er twee dagen verlies. Nog
erger wordt het als de andere straat ook net op die vrijdag stopt met een productierun, dan
zou deze al meer dan een week moeten wachten alvorens de omstelling kan starten. Heel dit
probleem kan opgelost worden door bepaalde ranges voor een productierun vast te leggen
en de bijhorende productiehoeveelheid. Bijvoorbeeld een productierun met een omstelduur
van 2 dagen nadien die start op een vrijdag mag eindigen op elke maandag of dinsdag van
de komende weken. Zodat de omstelling op dinsdag, woensdag of donderdag onmiddellijk
kan afgehandeld worden. Dit vraagt echter zeer veel extra vergelijkingen en gaat dus eigen-
lijk de producties op het eerste niveau helemaal gaan plannen zodat het tweede niveau niet
meer nodig is. Extra vergelijkingen en de bijhorende onvermijdelijke extra variabelen zorgen
ook voor de noodzaak aan meer rekentijd, dus dit valt helemaal buiten de eerste fase. En
we zullen op dit moment vrede moeten nemen met het feit dat er grote problemen kunnen
ontstaan in de tweede fase door deze restricties.
8Fase 2: Scheduling
IN dit hoofdstuk stellen we het wiskundige model op van de tweede fase. Zoals besproken
in hoofdstuk 4 dient deze fase om te kijken of de vooropgestelde schattingen ook mogelijk
zijn in de praktijk. Per maand wordt er getracht om deze geschatte productiehoeveelheden
in te plannen in de beschikbare tijd. In dit hoofdstuk wordt ongeveer dezelfde structuur
gevolgd als in hoofdstuk 7. Het gaat hierbij vooral om te bewijzen dat het mogelijk is om de
vooropgestelde schattingen in te plannen in de maand. De werkelijke planning in de maand
hoeft niet noodzakelijk gelijk te lopen met dit vooropgestelde schedule.
8.1. Inputvariabelen
We overlopen kort de notaties van de waarden van de variabelen die we uit de eerste fase
halen. Deze variabelen zijn vastgelegd voor de tweede fase en worden dus als parameters
behandeld.� m2: de maand waarvoor fase 2 wordt opgelost, de maand waarvoor de schedule wordt
gezocht.� ∆Dm2: Het aantal dagen in de maand m2 die vrij zijn van productie. Indien ∆D > 0,
dan zijn er productiedagen over voor maand m2, die doorgeschoven kunnen worden
naar maand m2 + 1. Indien ∆D < 0, dan zijn er in maand m2 dagen tekort voor
productie en dan zal zoals eerder gezien er een terugkoppeling naar de eerste fase
optreden.
86
HOOFDSTUK 8. FASE 2: SCHEDULING 87
8
� #d2m2: het aantal dagen beschikbaar in maand m2 voor de tweede fase om de ge-
schatte hoeveelheden in te plannen. Dit is met inbegrip van de eventuele extra dagen
∆Dm2−1 die nog vrij waren van productie uit de vorige maand.� schatQp,m2: De schatting voor de productiehoeveelheid van product p in maand m2
bepaald door fase 1.� SPp: Binaire parameter die aanduidt of er in de maand m2 een productierun gestart
wordt van product p. Deze parameter wordt vastgelegd in fase 1.� EPp: Binaire parameter die aanduidt of er in de maand m2 een productierun beeindigd
wordt van product p. Deze parameter wordt vastgelegd in fase 1.� somSPEPs: Binaire parameter die aangeeft of er op straat s een productierun gaande
is op de overgang van maand m2−1 naar maand m2. Deze parameter komt rechtstreeks
voort uit fase 1.� SSs: Binaire parameter die aanduidt of er in de maand m2 een stilstand gestart wordt
op straat s. Deze parameter wordt vastgelegd in fase 1.� ESs: Binaire parameter die aanduidt of er in de maand m2 een stilstand beeindigd
wordt op straat s. Deze parameter wordt vastgelegd in fase 1.� somSSESs: Binaire parameter die aangeeft of er op straat s een stilstand gaande is
op de overgang van maand m2−1 naar maand m2. Deze parameter komt rechtstreeks
voort uit fase 1.� ingSs: Een set van dagen die voor maand m2 alle dagen vastlegt waarop een stilstand
is ingepland door het management op straat s.� initT12p: De initiele voorraad van product p op de eerste dag van de maand m2 in
tanks 1 en 2 bepaald door fase 1.� initT3p: De initiele voorraad van product p op de eerste dag van de maand m2 in
tank 3 bepaald door fase 1.� initT4p: De initiele voorraad van product p op de eerste dag van de maand m2 in
tank 4 bepaald door fase 1.� initTBp: De initiele voorraad van product p op de eerste dag van de maand m2 in
tank B bepaald door fase 1.� initV IBCp: De initiele voorraad van product p op de eerste dag van de maand m2 in
vaten en IBC’s bepaald door fase 1.
HOOFDSTUK 8. FASE 2: SCHEDULING 88
8
� initCBp: De initiele voorraad van product p op de eerste dag van de maand m2 in
containters bepaald door fase 1.
Alle voorgaande parameters die betrekking hebben op m2, maar waarbij in de index niet
naar m2 verwezen wordt, worden bij elke iteratie naar de volgende maand voor fase 2 op de
correcte waarde geınitialiseerd.
We definieren ook nog de volgende verzamelingen van dagen die regelmatig gaan voorkomen
in het volgende hoofdstuk. De eerste dagen zijn die dagen van de voorbije maand, de laatste
dagen zijn die uit de huidige maand m2.� D12 := ∀d ∈ {1, . . . ,#d2m2−1 + #d2m}� D1 := ∀d ∈ {1, . . . ,#d2m2−1}� D2 := ∀d ∈ {#d2m2−1 + 1, . . . ,#d2m}
Door het gebruik van deze verzamelingen kunnen de voorwaarden op een eenvoudigere ma-
nier worden geschreven.
8.2. Beslissingsvariabelen
De belangrijkste beslissingsvariabelen die we gebruiken in fase 1 worden hieronder opgelijst.
We geven eerst nog twee opmerkingen vooraf. We zoeken de geschikte schedule voor maand
m2. Deze geschikte schedule kan alleen bepaald worden als we voor elke dag weten wat er
geproduceerd wordt. Alle variabelen komen daarom in 30-voud voor. Ten tweede wordt
de schedule voor maand m2 in zeer sterke mate beınvloed door de schedule van de maand
ervoor. Het ideale is dan dat we de volledige vorige maand ook ingeven als variabelen. Deze
worden door enkele restricties onmiddellijk vastgelegd op de waarden uit de vorige maand.� MSs: De makespan van straat s die de volledige productie van alle geschatte hoeveel-
heden uit fase 1 omvat.� totMS: De makespan van het volledige chemische proces voor maand m2, deze is
gelijk aan het maximum van MSs van die maand m2.� DPp,d ∈ {0, 1}: duidt aan of er productie is van product p op dag d of niet.� DQp,d ∈ Z+: variabele die de productiehoeveelheid aanduidt van product p op dag d.� Ss,d ∈ {0, 1}: Geeft aan of straat s stilstaat op dag d of niet. Inclusief de afstel- en
opstartdagen.� OMp1,p2,d ∈ {0, 1}: Geeft aan of er een omstel bezig is van product p1 naar product
p2 op dag d.
HOOFDSTUK 8. FASE 2: SCHEDULING 89
8
8.3. Doelfunctie
Het doel van deze fase in verschillende vorige delen al uitgebreid aan bod gekomen. Wis-
kundig vertaalt zich dat door het minimaliseren van de totale makespan. Ik opteer er echter
voor om ook per straat de makespan te minimaliseren aangezien zoals eerder uitgelegd stil-
standen en omstellingen op het einde van de maand nog niet worden ingepland in deze
maand vermits ze afhankelijk zijn van de volgende maand. Deze dagen worden als vrije
dagen ingepland, zodat ze door de volgende maand indien noodzakelijk worden vastgelegd.
Als de makespan van de straten afzonderlijk niet wordt geminimaliseerd, is het mogelijk dat
er helemaal geen vrije dagen worden gepland op het einde van de maand, maar wel ergens
tussenin. Deze dagen kunnen dan onmogelijk dienen voor de volgende maand, waardoor dit
tot problemen kan leiden. Als resultaat krijgen we dan de volgende te minimaliseren functie:
Min : (totMS − #d2m2) · 1000 +∑
s
MSs (8.1)
In doelfunctie 8.1 is s ∈ {s1, s3, s4, s5, s6, sCD1, sM, sA1, sA2}. De factor 1000 bij de
eerste term is ingevoerd, omdat het eerste doel toch nog steeds is om de totale makespan
te minimaliseren ongeacht de makespan van de andere productiestraten. Elke dag dat de
totale productie van die maand langer duurt dan het aantal dagen beschikbaar in die maand
wordt bestraft. Elke dag die over is, wordt beloond, omdat deze dag in een latere maand
kan gebruikt worden om tekorten te compenseren.
8.4. Definitie van de makespan
Om in de doelfunctie de makespan te kunnen gebruiken moet deze op een correcte manier
gedefinieerd worden, vertrekkend van de variabelen die per dag aanduiden wat er gaande is.
Er zijn drie toestanden waarin een straat zich kan bevinden: productie, omstel of stilstand.
Op het einde van de maand voegen we daar een vierde toestand aan toe, namelijk de
ongebruikte vrije dagen. Deze vierde toestand is niet van belang voor de makespan aangezien
een vrije dag een dag is die kan opgevuld worden door producties uit de volgende maand. Op
elke dag is slechts 1 van deze toestanden mogelijk en we voeren daarom voorwaarde 8.2a toe
voor s ∈ {s1, s3, s4, s5, s6, sCD1, sM, sA1, sA2}. Hierin wordt geeist dat op elke dag
en voor elke straat slechts 1 toestand mogelijk is. Een kleine bemerking bij de definitie van
de dagen waarvoor deze vergelijking moet gelden. De notatie die hier gebruikt wordt, gaat
namelijk nog regelmatig terugkomen. Zoals eerder vermeld is D12 die verzameling van dagen
die in de vorige maand en de huidige maand voorkomen. Bijvoorbeeld de maand mei telt
31 dagen en de maand juni 30, dan zijn de indices als volgt verdeeld voor d: 1 tot en met 31
zijn de dagen van mei, 32 tot en met 61 zijn de dagen voor juni en daarbij voegen we nog 10
extra dagen, 62 tot en met 71. De dagen van mei zijn reeds volledig ingepland, de dagen van
juni proberen we nu in te plannen, maar het kan zijn dat de productieschattingen te groot
HOOFDSTUK 8. FASE 2: SCHEDULING 90
8
zijn en dat er dagen tekort zijn. Vandaar de tien extra dagen om eventuele overschattingen
op te vangen. Indien deze dagen niet noodzakelijk zijn, dan zijn gewoon alle variabelen nul
en kunnen ze eenvoudig genegeerd worden.
∀s,∀d ∈ D12 ∪ 10 :∑
p∈{geproduceerd op s}
DPp,d +∑
(p1,p2)∈{omstellingen op s}
OMp1,p2,d + Ss,d ≤ 1 (8.2a)
Aangezien het niet de bedoeling is dat midden in een maand een dag helemaal niet toege-
wezen wordt aan een bepaalde toestand, zorgt voorwaarde 8.2b ervoor dat alle producties,
stilstanden en omstellingen aaneengesloten voorkomen. Indien op een bepaalde dag er geen
toewijzing van de straat aan een toestand voorkomt, dan kan er onmogelijk op de volgende
dagen wel een toewijzing voorkomen. We eisen dus dat alle onbepaalde dagen op het einde
van de maand vallen en dat de straat voordien steeds in een bepaalde toestand is.
∀s,∀d ∈ D2 ∪ 9 :∑
p∈{geproduceerd op s}
DPp,d +∑
(p1,p2)∈{omstellingen op s}
OMp1,p2,d + Ss,d
≥∑
p∈{geproduceerd op s}
DPp,d+1 +∑
(p1,p2)∈{omstellingen op s}
OMp1,p2,d+1 + Ss,d+1
(8.2b)
We bemerken bij voorwaarde 8.2b dat het aantal dagen beperkt is tot enkel de tweede
maand (dagen 32-71 zoals in het voorbeeld aangehaald), aangezien bij de vorige maand op
het einde vrije dagen kunnen voorkomen op een straat en de ongelijkheid dan niet geldt.
Voor de overgang van de vorige maand naar de huidige maand voegen we daarom voorwaarde
8.2c toe (voor dag 31 uit het voorbeeld). initV rijs,d ∈ {0, 1} is een parameter die gelijk is
aan 0 indien dag d uit de vorige maand toegewezen is aan een stilstand, omstel of productie
en 1 indien deze dag nog vrij beschikbaar is.
∀s, d = #d2m2−1 :∑
p∈{geproduceerd op s}
DPp,d +∑
(p1,p2)∈{omstellingen op s}
OMp1,p2,d + Ss,d + initV rijs,d
≥∑
p∈{geproduceerd op s}
DPp,d+1 +∑
(p1,p2)∈{omstellingen op s}
OMp1,p2,d+1 + Ss,d+1
(8.2c)
In de wetenschap dat op elke dag slechts 1 toestand kan voorkomen en dat deze toestanden
aaneensluitend voorkomen, kan de makespan zeer eenvoudig bepaald worden met voorwaarde
8.2d.
HOOFDSTUK 8. FASE 2: SCHEDULING 91
8
∀s : MSs =∑
d∈{D2∪10}
(∑
p∈{geproduceerd op s}
DPp,d +∑
(p1,p2)∈{omstellingen op s}
OMp1,p2,d + Ss,d)(8.2d)
De totale makespan is per definitie groter dan de makespan voor elke straat afzonderlijk.
We schrijven voorwaarde 8.2e.
∀s : totMS ≥ MSs (8.2e)
8.5. Voldoen aan schattingen uit fase 1
Uiteraard is het de bedoeling dat de geproduceerde hoeveelheden uit fase 2 voldoen aan
de schattingen die gemaakt zijn in fase 1. Het aantal dagen dat er toegewezen wordt aan
een bepaald product p moet dus groter zijn dan het aantal dagen dat er noodzakelijk is
om de geschatte productiehoeveelheid van p te produceren. Indien het verband tussen DP
en DQ wordt gedefinieerd, kan bovenstaande voorwaarde eenvoudig worden uitgedrukt in
voorwaarde 8.3b. Indien een dag d toegewezen is aan een product p ofte DPp,d = 1, dan kan
de productiehoeveelheid op die dag DQp,d varieren tussen 0 en de maximale dagcapaciteit.
We maken hierbij de bemerking dat volgens restrictie 49 alle productiestraten op vollast
moeten lopen. De eis zou bijgevolg nog strikter moeten geformuleerd worden: als DPp,d = 1
dan moet DQp,d gelijk zijn aan de dagcapaciteit. Aangezien het ook mogelijk is dat een
straat een dag moet wachten alvorens zijn omstelling begint, is deze eis niet altijd geldig,
want op deze dag is de straat toegewezen aan het product, maar er wordt niet geproduceerd.
Bijgevolg gebruiken we toch de vereenvoudigde voorwaarde. Indien DPp,d = 0, dan moet
duidelijk een verbetering met de tijd. De simulatie daarvoor stopzetten zou dus tot een
niet optimaal resultaat leiden. Na drie uur zien we nog slechts een kleine verbetering. Het
stoppen van de simulatie na 200 minuten is in absolute getallen 175,070 euro slechter dan
indien men pas na 14 uur stopt. Procentueel gezien is er nog een verbetering van minstens
16% mogelijk door de simulatie langer te laten lopen. Deze procentuele marge loopt terug
tot 2% indien we 5 uur lang simuleren. We besluiten hieruit dat een simulatie van 5 uur
zeker voldoende moet zijn om tot een oplossing te komen die de optimale oplossing vrij goed
benadert. Elke simulatie die minstens 200 minuten loopt, kan gerechtvaardigd worden.
Figuur 9.3.: Evolutie van de totale kost (rood) en de tekortkost (blauw) doorheen de tijd
In het blauw op figuur 9.3 zijn de kosten voor de tekorten te zien. Zoals verwacht dalen deze
kosten mee met de totale kosten naargelang men langer simuleert. Alle andere onderdelen
van de totale kost hebben we van deze figuur weggelaten omdat het daar op lijkt dat ze na-
genoeg vlak verlopen. In drie meer gedetailleerde grafieken nemen we de meest opmerkelijke
van deze kosten in beschouwing.
De kosten die gepaard gaan met omstellingen zijn weergegeven in grafiek 9.4. In eerste
instantie lijkt dit een zeer grillig verloop. De totale kost wordt geminimaliseerd en is een
resultaat van trade-offs tussen de verschillende onderdelen van de totale kost. 1 onderdeel
hiervan zijn de omstellingen. Het betekent niet dat indien de omstellingskost opnieuw om-
hoog gaat bij een langere simulatie dat daarom de simulatie slechter is. Een andere kost zal
dan namelijk nog sterker dalen. Vooral de algemene trend hierbij is van belang. Algemeen
zien we dat de totale omstellingskost daalt met de lengte van de simulatie. Absoluut is er een
verschil van 19,200 euro wat toch een vermindering inhoudt van een 10 a 15 omstellingen.
Voor de voorraadkosten en de gebonden voorraadkosten geldt een analoge bespreking. Deze
zijn voorgesteld in grafieken 9.5 en 9.6.
HOOFDSTUK 9. RESULTATEN EN CONCLUSIE 116
9
Figuur 9.4.: Evolutie van de omstelkosten met de simulatietijd
Figuur 9.5.: Evolutie van de gebondenkosten met de simulatietijd
HOOFDSTUK 9. RESULTATEN EN CONCLUSIE 117
9
Figuur 9.6.: Evolutie van de voorraadkosten met de simulatietijd
Door gebruik te maken van alle vastgelegde parameters uit fase 1 kan nu reeds een schedule
opgesteld worden voor het komende jaar per dag. We hebben dit manueel gedaan voor alle
maanden in verband met straat 6. Het resultaat hiervoor zie je in figuur 9.7. We zien dat
elke maand perfect 31 dagen telt en dat alle vooropgestelde schattingen mooi doorheen het
hele jaar kunnen ingepland worden. Dit is zonder rekening te houden met de correlatie
tussen de verschillende straten.
Indien we voor 1 bepaalde maand alle schattingen inplannen voor alle straten krijgen we
een situatie zoals in figuur 9.8. We zien dat er voor straat 3 en straat CD1 1 dag overschot
is, dit geeft al iets meer ruimte in verband met de correlatie tussen de verschillende straten.
Het is de bedoeling om te kijken of op elke dag aan alle restricties wordt voldaan, waarbij
een grondstof zeker moet geproduceerd worden alvorens het verder kan gebruikt worden.
Om te zien of alle relaties tussen de verschillende straten op elke dag ook gelden hebben we
nood aan fase 2. Maar we besluiten met de opmerking dat fase 1 reeds zeer nauwkeurige
schattingen geeft voor het hele probleem.
De schattingen naar de laatste maanden toe moeten wel voorzichtig worden benaderd. Hier
kan een ongewild effect optreden. Op dit moment probeert de planning zoveel mogelijk te
voldoen aan de vraag voor de komende twaalf maanden. Na deze twaalf maanden zal er
nog steeds vraag zijn naar alle producten. Deze vraag wordt echter nog niet in rekening
gebracht en draagt bij tot zogenaamde eindeplanningsverschijnselen. In de resultaten van
figuur 9.2 zien we bijvoorbeeld dat naar het einde van de planning toe er zeer veel A2 wordt
opgeslagen in de maanden 13, 14 en 15. Net genoeg om de laatste twee maanden de A1- en
A2-installatie stil te leggen en uit te komen op de minimale voorraad van 1400 ton op het
begin van maand 17. In de praktijk is er in maand 17 ook nog vraag naar A2 en is het dan
perfect mogelijk dat een andere planning beter is. Anderzijds moet men er ook rekening
met houden dat het zakken naar de minimale voorraad ook een gevolg kan zijn van capa-
HOOFDSTUK 9. RESULTATEN EN CONCLUSIE 118
9
Figuur 9.7.: Productieschema voor straat 6 doorheen de 12 maanden
HOOFDSTUK 9. RESULTATEN EN CONCLUSIE 119
9
Figuur 9.8.: Productieschema voor maand 12
HOOFDSTUK 9. RESULTATEN EN CONCLUSIE 120
9
citeitstekorten in een straat. Een kritische blik op de resultaten is dus zeer noodzakelijk.
Een langere planningshorizon zou dit probleem kunnen oplosssen, maar vraagt ook meer
rekentijd. Anderzijds wordt de planning van maand 16 nog niet definitief vastgelegd. Een
eventueel probleem zal al veel duidelijker worden indien men de planning opstelt voor juni.
Dan is maand 16 niet meer de laatste maand, maar dan worden er ook schattingen toege-
voegd voor maand 17. Ofwel merken we dan dat er effectief capaciteitstekorten optreden
ofwel merken we de eindeplanningsverschijnselen op.
9.1.3. Fase 2
Heel het wiskundige model voor fase 2 is uitgeschreven en geımplementeerd. Nagenoeg
alle logische fouten zijn eruit gehaald, er is slechts 1 fout waardoor ik geen resultaten kan
weergeven. Nagenoeg 98% van het model werkt zoals behoren, enkel een koppige 2% weigert
mee te werken. Desalnietemin vind ik dit niet zo een ramp zoals ik bij mijn conclusies zal
vermelden.
9.2. Conclusies
De eerste fase werkt perfect en geeft schitterende schattingen. Het nadeel hierbij is de nodige
rekentijd. Dit valt op te lossen door een zwaardere computer in te schakelen, maar zelfs dan
blijft er de computationele beperking. De bedoeling is nog steeds om een terugkoppeling
te maken tussen de twee fasen zodra in fase 2 zou blijken dat voor een bepaalde maand de
productieschattingen niet in te plannen zijn in deze maand. Indien we in het beste geval
fase 1 stoppen na 3 uur, dan is elke terugkoppeling die gemaakt wordt weer 3 uur extra
rekentijd. Het is dus duidelijk dat het nooit de bedoeling kan zijn om meer dan twee keer
terug te koppelen. Zelfs dan zitten we reeds aan minimaal 9 uur rekenen. Dit is ook de
reden waarom fase 1 tot in het detail is uitgewerkt, om terugkoppelingen zoveel mogelijk te
vermijden.
Uit datgene wat ik in fase 2 al gemerkt heb, kan afgeleid worden dat de benodigde rekentijd
beperkt is tot een aantal minuten. Eens deze fase volledig op punt zou staan, vormt de
rekentijd geen probleem.
Er blijven dus drie problemen over voor de perfecte oplossing van deze case:� Zoeken van de logische fout in fase 2 zodat deze ook kan gebruikt worden� Tijdsbeperking voor het oplossen van het hele probleem� De restricties die we in de modellen genegeerd hebben in verband met gelijktijdige
afstel en opstart van een productiestraat en in verband met de mogelijke momenten
van omstel op een straat.
HOOFDSTUK 9. RESULTATEN EN CONCLUSIE 121
Voor het eerste probleem is het een kwestie van alles nog eens goed onderzoeken, een paar
testen uitvoeren en de logische fout er uit halen.
Voor het tweede en derde probleem stel ik de volgende oplossing voor: aangezien een pro-
ductieplanning vaak slechts de eerste weken ook effectief wordt gebruikt alvorens men een
nieuwe productieplanning opstelt, is het vooral van belang om te zorgen dat deze eerste
weken een feasible schedule geven. De eerste twee maanden zouden we dan door fase 2 laten
controleren en indien ze niet in orde zouden zijn, gaan we terugkoppelen naar fase 1. Voor
de latere maanden maken we de controle niet, aangezien het op dat moment nog niet van
belang is of de geschatte hoeveelheden ook effectief wel kunnen geproduceed worden. Indien
de grootteordes van deze schattingen gekend zijn, is men al een heel eind verder geholpen.
Even een verduidelijking als voorbeeld: voor de maand mei is het van belang om te weten
of een omstel op zaterdag valt of niet. Voor de maand april, die pas binnen 12 maanden
komt, is het niet van belang om te weten of die omstel nu op een zaterdag valt of niet.
Deze planning zal waarschijnlijk toch nog een paar keer aangepast worden tegen dat we ze
effectief nodig zullenhebben.
Door de controle van slechts 2 maanden, zijn er maximaal twee terugkoppelingen, wat de
rekentijd zeer goed beperkt. Dit lost het tweede probleem op. Dan rest ons nog de opmerking
over het feasible zijn van een schatting in de eerste twee maanden. Zoals in de uiteenzetting
van de modellen gezegd, negeerden we de restricties in verband met gelijktijdige omstellingen
en verboden dagen voor omstellingen omwille van implementatiemoeilijkheden. We stelden
toen voor om het op te lossen door ranges vast te leggen voor de productiehoeveelheden
zodat deze productiecampagnes steeds eindigen op een dag waarop de omstel kan starten.
Voor 12 maanden zou dit inderdaad zeer complex worden. Indien we dit echter toevoegen
voor de eerste twee maanden is het minder complex, maar worden de schattingen uit fase 1
nog beter en is het een kwestie van controleren of ze ook feasible zijn omwille van een tekort
van 1 of 2 dagen.
Indien bovenstaande opmerkingen nog geımplementeerd worden, heb ik er alle vertrouwen
in dat dit programma in de realiteit gebruikt kan worden.
Deel I.
Variabelen van het proces:
122
A
123
BIJLAGE A. VARIABELEN PRODUCTIEPLANNING 124
AVariabelen productieplanning
Figuur A.1.: Variabelen van de productieplanning
BInputgegevens productieplanning
125
BIJLAGE B. INPUTGEGEVENS PRODUCTIEPLANNING 126
B
Figuur B.1.: Inputgegevens in verband met specifieke probleem
CInputgegevens maalplanning
127
BIJ
LA
GE
C.
INP
UT
GE
GE
VE
NS
MA
ALP
LA
NN
ING
128
CMaand L/C F/C G/C
Voorr. Malen Verk. Voorr. Malen Verk. Voorr. Malen Verk.Index LC Vo LC Ma LC Ve FC Vo FC Ma FC Ve GC Vo GC Ma GC Ve