Integratie van productieproductiesystemen
en
onderhoudsplannen
Jasper Deschacht
Promotor: prof. Dr. El-Houssaine Aghezzaf Begeleider: Veronique Limère Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: bedrijfskundige systeemtechnieken en operationeel onderzoek
Vakgroep Technische Bedrijfsvoering Voorzitter: prof. Dr. El-Houssaine Aghezzaf Faculteit Ingenieurswetenschappen en Architectuur Academiejaar 2010-2011
in
Integratie van productieproductiesystemen
en
onderhoudsplannen
Jasper Deschacht
Promotor: prof. Dr. El-Houssaine Aghezzaf Begeleider: ir. Veronique Limère Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: bedrijfskundige systeemtechnieken en operationeel onderzoek
Vakgroep Technische Bedrijfsvoering Voorzitter: prof. Dr. El-Houssaine Aghezzaf Faculteit Ingenieurswetenschappen en Architectuur Academiejaar 2010-2011
in
Voorwoord Aangezien ik deze masterproef niet op mijn eentje tot stand gebracht heb, zou ik graag een woordje van dank uiten voor de mensen die me hierbij geholpen hebben.
Eerst en vooral wil ik mijn promotor professor Aghezzaf bedanken voor de goede begeleiding en gedurende het jaar en de aangename samenwerking. Daarnaast wil ik Veronique Limère bedanken voor de hulp, suggesties en het nalezen van deze scriptie. Ook een dankwoordje voor alle anderen die bereid waren zich door mijn schrijfsel te zwoegen.
Graag wil ik ook mijn vriendenkring bedanken om mijn ‘gezaag’ de laatste maanden en weken te moeten aanhoren. Bovendien zijn de voorbije 2 jaar in de master opleiding, samen met hen, de meest fantastische van mijn leven geweest.
Natuurlijk mag hier ook mijn familie en mijn vriendin niet ontbreken. Mijn vriendin, voor alle plezier en amusement dat we de afgelopen 2 jaar hebben beleefd, alsook het geduld dat ze aan de dag moest leggen als mijn kotgenote. Mijn zus, voor de hulp en de vele tips die ze mij gaf. Mijn broer die de nodige entertainment op de juiste momenten verschafte en uiteraard mijn ouders. Ik wil hen niet enkel in de bloemetjes zetten voor de steun tijdens mijn thesis en de voorbije jaren, maar vooral om me altijd bij te staan, in me te geloven en me alle kansen te geven om mezelf te ontplooien.
Bedankt!
Jasper Deschacht
i
“De auteur en de promotoren geven de toelating deze masterproef voor consultatie beschikbaar te stellen en delen van de masterproef te kopiëren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze masterproef.”
“The author and the promoters give the permission make this master dissertation available for consultation and to copy parts of this master dissertation for personal use. In case of any other use, the limitations of the copyright have to be respected, in particular with regard to the obligation to state expressly the source when quoting results from this master dissertation.” Gent, juni 2011
De promotoren,
Prof. dr. E.H. Aghezzaf
De auteur,
ir. V. Limère
Jasper Deschacht
ii
Overzicht Integratie van productie- en onderhoudsplannen in productiesystemen Jasper Deschacht Samenvatting: De doelstelling van deze masterproef is het onderzoeken, uitbreiden en evalueren van een huidig bestaand geïntegreerd productie- en onderhoudsplanningsmodel voor een enkele machine. Er wordt gestart met een beknopte literatuurstudie. Hierin wordt aandacht besteed aan onder andere het verband tussen productie en logistiek, het lot-sizing probleem, de storingsfunctie of ‘failure rate’ en bestaande modellen in de literatuur. Het tweede deel van deze scriptie zal het gebruikte model van Aghezzaf et al (2007) uitgebreid beschrijven en testen. Om hiertoe te komen, wordt dit model geïmplementeerd in het programma AMPL, die gebruikt maakt van een CPLEX solver. Vervolgens wordt het model uitgebreid naar een productiesysteem met meerdere parallelle machines in het derde deel. Het vierde luik beveelt nog enkele aanpassingen aan, die het model nog meer laten overeenstemmen met de realiteit. Tot slot worden de geïntegreerde modellen onderworpen aan een test om na te gaan of ze een meerwaarde hebben in vergelijking met de aparte productiemodellen. Het besluit wijst uit dat de geïntegreerde planningen een duidelijk voordeel hebben ten opzichte van hun aparte tegenhangers.
Trefwoorden: Production planning, Preventive maintenance, Multi-machine planning, Integrated planning Promotor: prof. Dr. El-Houssaine Aghezzaf Begeleider: ir. Veronique Limère Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: bedrijfskundige systeemtechnieken en operationeel onderzoek Vakgroep Technische Bedrijfsvoering Voorzitter: prof. Dr. El-Houssaine Aghezzaf Faculteit Ingenieurswetenschappen en Architectuur Academiejaar 2010-2011 iii
Extended abstract
Integration of production and maintenance planning in production systems Jasper Deschacht Supervisor(s): E.H. Aghezzaf, V. Limère
Abstract: We are given a production system with several parallel machines each with limited capacity. A set of products or items must be produced in lots on the machines. The production system is subject to random failures which will require maintenance. These actions will however have an effect on the capacity. The goal this study is to generate an integrated production and maintenance plan that optimizes the total costs for the system. The first step of this thesis is to evaluate the model presented by Aghezzaf et al (2007). This model generates an integrated production and maintenance plan for a single machine. The next step is to extend this model so it can generate an integrated plan for a production system with parallel machines. It will be shown that the integrated models have a great benefit for companies. Keywords: Production planning, Preventive maintenance, Multi-machine planning, Integrated planning
I. INTRODUCTION In the past year, there has been much competition between manufacturing companies. To cope with competition from low-wage countries and to insure their market position, Western companies buy highly automated quality machinery. These machines require a lot less operators and produce high quality products, but they are also more expensive. Therefore, a company with such modern machinery has to optimize the utilization of the capacity of their production system in order be profitable (Aghezzaf et al, 2008). The capacity depends on two processes. On one hand there is the production process, and on the other hand there is the maintenance process. The maintenance activities are necessary to cope with probable machine failures and also try to prevent them. In most companies, those two processes are planned independently. The production management will plan the production in order to meet the demand and in such a way that operating costs are minimized. The maintenance management will do the same for their activities. The result is that conflicts will arise between both plans. One moment the production will be on hold due to a failure of equipment, the other moment a maintenance activity will be postponed because the demand has to be met on time. It is obvious that both processes have a big influence on each other. It is therefore useful to research a planning
model that integrates both production and maintenance. The remainder of this paper is organized as follows: In section 2, a brief literature study presented. Section 3 introduces an integrated production and maintenance model for a multimachine system. The final section reviews the results and gives a conclusion. II. LITERATURE STUDY The first research in modeling and analyzing production planning assumed ideal situations such as complete machine availability. Maintenance was not included and machine failure wasn’t simulated. Throughout the years, a lot of models were developed. Some models are totally new, others are an expansion of older ones. Pinedo (1995) has summarized the most important models in the literature in the book ‘scheduling: Theory, Algorithms, and System’. Besides production models, several maintenance models were also developed that analyse, plan and optimize the maintenance activities in a manufacturing company. Cho & Pariar (1991) and Dekker (1996) have published papers that contain the most important literature in that area. As the importance of integrating production and maintenance started growing over the last few years, some studies have tried to study the integrated problem. Ashayeri et al (1996)
iv
investigated this problem by performing a casestudy in the process industry. He worked out an integrated model for a multi-machine production system. The time horizon consisted of discrete time periods and the production quantities were the basis for the decisions that were made. A large disadvantage was the use of discrete chances to simulate machine failure instead of the normally used failure rate function. Graves & Lee (1999) researched an integrated planning for a single machine. They used the total weighted completion time as a solution criteria. The drawback here is the fact that only one maintenance activity was allowed during the time horizon. Later, Lee & Chen (2000) extended this model for several parallel machines and job shops. At the aggregate planning level, Wienstein & Chung (1999) have proposed a three-part model to evaluate the maintenance policy of a company. III. INTEGRATED MODEL FOR PARALLEL MACHINES The model presented by Aghezzaf et al (2007) can be extended for a parallel multi-machine production system.. Presume that the planning horizon H = Nτ, with N the number of periods and τ the fixed length of a period. The goal of model is to generate a production planning so that each product i ∈P fulfills the demand . Each model has a limited capacity Cmax that is consumed by the production process, but also by the maintenance activities. Preventive maintenance will consume (= ) units of capacity, while the reactive maintenance will utilize (= ) units and 0 ≤ ≤ ≤ 1. In order to simulate machine failure, a failure rate distribution is used. Assume that preventive maintenance will restore the machine to ‘as-good-as-new’. Reactive maintenance(RM) will return the machine to an ‘as-good as old’ status. The preventive maintenance (PM) policy has to be determined by the preventive maintenance cycle = . The model will, besides the production planning, also return the optimal value of k. The model for parallel machines is presented below and is a ‘capacitated lot sizing problem’: Objective function: (
& * ( & ) % & '
!
+ # $ )
+ (ℎ , ) ( & ) % & '
5 ./ + - 01 + 1 2 3 (4) 478 6 & *
Constraints:
(1) $ + ,9: − , = & *
<3 ϵ M, 4 ∈ @, ∈ A
(2) $ ≤ - C 8 ! C∈D,CE
<3 ϵ M, 4 ∈ @, ∈ A
(3) A $ ≤ (4) ∈G
<3 ϵ M, 4 ∈ @ $ , , , ≥ 0; ! ∈ J0,1K <3 ϵ M, 4 ∈ @, ∈ A
Parameters H Set of all the periods P Set of all the products Set of all the machines Fixed cost of producing item i in period t on machine m # Variable cost of producing item i in period t on machine m ℎ Variable holding cost of item i in period t NOPQ ∑MR M A Process time for each unit i on machine m Maintenance cycle of machine m 1 Costs PM on machine m Costs RM on machine m 1 3 (4) Failure rate distribution / = − − S6 3 (T +
(4) (4 − 1)τ)T, if PM is done in period t on machine m / = − S6 3 (T + (4 − 1)τ)T, for all other periods Variables $ Quantity of item i produced in period t on machine m , Inventory of item i produced in period t on machine m 1 if item i is produced in period t on ! machine m 0 otherwise III. RESULTS AND CONCLUSION In order to run the model presented above, it has to be rewritten. For that, we refer to the Thesis ‘Integration of production and maintenance planning in a production system’ (Deschacht, 2011). The problems are solved using AMPL as modeling software. The models were compared to each other and evaluated. A full review of all the tests and their results can be found in the thesis. To conclude, it can be stated that models which integrated production and maintenance have a surplus value for companies. The generated production and maintenance plans will be less expensive and doable. This is not the fact when using basic production planning models that do not take maintenance and the machine failures into account. They will generate a more expensive production plan that can be disrupted by machine failure, because too much is planned compared with the available capacity.
v
Inhoudsopgave Voorwoord .............................................................................................................................................i Overzicht .............................................................................................................................................. iii Extended abstract ................................................................................................................................ iv Lijst van Figuren ................................................................................................................................... ix Lijst van tabellen ................................................................................................................................... x 1
Inleiding .........................................................................................................................................1
2
Literatuurstudie.............................................................................................................................2 2.1
Verband tussen productie en onderhoud .............................................................................2
2.2
Definitie onderhoud ..............................................................................................................3
2.2.1
Definitie .........................................................................................................................3
2.2.2
Types Onderhoud ..........................................................................................................3
2.3
Lot Sizing Problem .................................................................................................................4
2.4
Storingsfuncties.....................................................................................................................6
2.4.1
Verband betrouwbaarheid en storingsfunctie ..............................................................6
2.4.2
Keuze van de kansdichtheidsfunctie voor de storing ...................................................9
2.5
Bestaande modellen .......................................................................................................... 13
2.5.1
Beknopt overzicht van de literatuur .......................................................................... 13
2.5.2
Integrating Maintenance and Production Decisions in a Hierarchical Production
Planning Environment (Weinstein and Chung, 1999) ................................................................ 14 2.5.3
Integrating Preventive Maintenance Planning and Production Scheduling for a Single
Machine (cassady and Kutanoglu, 2005) ................................................................................... 16 3
Model voor enkele machine (Aghezzaf et al, 2007)................................................................... 21 3.1
Basis CLSP-Model ............................................................................................................... 21
3.2
Geïntegreerd model voor enkele machine ........................................................................ 22
3.3
Implementatie van het model in AMPL ............................................................................. 29
3.3.1
Presentatie .mod-file AMPL ....................................................................................... 29
3.3.2
Presentatie en controle van een testvoorbeeld ........................................................ 34 vi
4
5
Model voor parallelle machines ................................................................................................. 38 4.1
Basis CLSP-model voor parallelle machines ....................................................................... 38
4.2
Geïntegreerde model voor parallelle machines ................................................................ 39
4.3
Implementatie van het parallel model in AMPL ................................................................ 42
Wijzigingen aan het model voor een enkele machine ............................................................... 45 5.1
5.1.1
Theoretische aanpassing ten gevolge van de onderhoudskosten ............................. 45
5.1.2
Vergelijking met het originele model ......................................................................... 47
5.2
6
Aanpassing berekening onderhoudskosten ....................................................................... 45
Gebruik van een andere storingsfunctie ............................................................................ 49
5.2.1
Weibull distributie als storingsfunctie ....................................................................... 49
5.2.2
Resultaten met verschillende storingsfuncties .......................................................... 51
Resultaten en vergelijking van de modellen .............................................................................. 54 6.1
Vergelijking basis CLSP-model met het geïntegreerde model ........................................... 54
6.1.1
Test opzet ................................................................................................................... 54
6.1.2
Resultaten en conclusie van de test........................................................................... 55
6.2
Vergelijking basismodel voor enkele machine en model voor parallelle machines .......... 57
6.2.1
Beschrijving van de test ............................................................................................. 57
6.2.2
Oplossen van het voorbeeld met het model voor een enkele machine .................... 60
6.2.3
Vergelijking met oplossing van het model voor parallelle machines......................... 62
7
Conclusie .................................................................................................................................... 63
8
Bibliografie ................................................................................................................................. 65
Bijlagen ...................................................................................................................................................I Bijlage 1: AMPL files van het basis CLSP model (No_maintenance) ..................................................I .mod-file: basis CLSP model ...........................................................................................................I .dat-file: basis CLSP-model ............................................................................................................II .run-file: basis CLSP-model ............................................................................................................II Bijlage 2: AMPL files van het geïntegreerd model voor enkele machine ........................................III .mod-file: geïntegreerd model voor enkele machine ..................................................................III
vii
.dat-file: geïntegreerd model voor enkele machine ................................................................... IV .run-file: geïntegreerd model voor enkele machine .................................................................... V Bijlage 3: AMPL files van het CLSP-model voor parallelle machines............................................... VI .mod-file: CLSP-model voor parallelle machines ........................................................................ VI .dat-file: CLSP-model voor parallelle machines ......................................................................... VII .run-file: CLSP-model voor parallelle machines ........................................................................ VIII Bijlage 4: AMPL files van het geïntegreerd model voor parallelle machines................................ VIII .mod-file: Geïntegreerd model voor parallelle machines ......................................................... VIII .dat-file: Geïntegreerd model voor parallelle machines .............................................................. X .run-file: Geïntegreerd model voor parallelle machines ............................................................ XII Bijlage 5: AMPL files van het model met de aanpassing van de onderhoudskosten.................... XIII .mod-file: Aanpassing onderhoudskosten ................................................................................ XIII Bijlage 6: Oplossing voor paragraaf 6.2.2 ...................................................................................... XV
viii
Lijst van Figuren Figuur 1: SoFu-SoFa ...............................................................................................................................6 Figuur 2: Vormen van de storingsfunctie of failure rate .......................................................................8 Figuur 3: Normale verdeling PDF ..........................................................................................................9 Figuur 4: Normalde verdeling CDF ........................................................................................................9 Figuur 5: Lognormale verdeling PDF .................................................................................................. 10 Figuur 6: Lognormale verdeling CDF .................................................................................................. 10 Figuur 7: Exponentiële verdeling CDF ................................................................................................ 11 Figuur 8: Exponentiële verdeling PDF ................................................................................................ 11 Figuur 9: Gamma verdeling PDF......................................................................................................... 12 Figuur 10: Gamma verdeling CDF....................................................................................................... 12 Figuur 11: Weibull verdeling CDF ....................................................................................................... 13 Figuur 12: Weibull verdeling PDF ....................................................................................................... 13 Figuur 13: Tijdshorizon ....................................................................................................................... 23 Figuur 14: Capaciteitvermindering..................................................................................................... 23 Figuur 15: Tijdslijn voor uitleg i.v.m. geïntegreerd model enkele machine....................................... 26 Figuur 16: Figuur bij berekening kosten............................................................................................. 26 Figuur 17: Storingsfunctie – integraal ................................................................................................ 28 Figuur 18: Preventief onderhoud en de storingsfunctie .................................................................... 32 Figuur 19: Schema parallelle machines.............................................................................................. 38 Figuur 20: Effect Weibull vormparameter ......................................................................................... 50 Figuur 21: Vergelijking verschillende storingsfunctie (grafiek) .......................................................... 51
ix
Lijst van tabellen Tabel 1: Parameters AMPL geïntegreerd model voor enkele machine ............................................. 30 Tabel 2: Variabelen AMPL geïntegreerd model voor enkele machine .............................................. 30 Tabel 3: Storingsfunctie testvoorbeeld (Gamma) .............................................................................. 31 Tabel 4: Vraag testvoorbeeld ............................................................................................................. 34 Tabel 5: Storingsfunctie testvoorbeeld .............................................................................................. 34 Tabel 6: Capaciteit en kosten testvoorbeeld ..................................................................................... 35 Tabel 7: Productieplanning testvoorbeeld......................................................................................... 36 Tabel 8: Parameters en variabelen voor de parallelle uitbreiding..................................................... 43 Tabel 9: AMPL parameters en variabelen aangepast model voor enkele machine .......................... 47 Tabel 10: Parameters aangepast model ............................................................................................ 48 Tabel 11: Vraag aangepast model ...................................................................................................... 48 Tabel 12: Storingsfunctie aangepast model....................................................................................... 48 Tabel 13: Gegenereerde planning van het voorbeeld voor het aangepaste model .......................... 48 Tabel 14: Weibull-Gamma storingsfunctie ........................................................................................ 50 Tabel 15: Planning en kosten (Gamma) ............................................................................................. 51 Tabel 16: Productie en kosten (B = 2; A = 2) ...................................................................................... 52 Tabel 17: Planning en kosten (B = 2; A =3)......................................................................................... 52 Tabel 18: Planning en kosten (B = 1,5; A = 2) ..................................................................................... 52 Tabel 19: Planning en kosten (B = 1,5; A = 1,5) .................................................................................. 52 Tabel 20: Vraag voor test CLSP - Geïntegreerde model ..................................................................... 55 Tabel 21: Waarde storingsfunctie voor test CLSP - Geïntegreerde model enkele machine .............. 55 Tabel 22: Resultaat voor test CLSP - Geïntegreerde model enkele machine: CLSP ........................... 55 Tabel 23: Aangepaste productieplanning testoplossing CLSP-model ................................................ 56 Tabel 24:Productieplanning test met geïntegreerd model................................................................ 56 Tabel 25: Storingsfunctie test model parallelle machines ................................................................. 59 Tabel 26: Vraag test model voor parallelle machines ........................................................................ 59 Tabel 27: Capaciteit van de machines voor test model parallelle machines ..................................... 59 Tabel 28: Verdeling van de vraag voor T = 1τ .................................................................................... 60 Tabel 29: Kostentabel voor T = 1τ ...................................................................................................... 61 x
Tabel 30: Verdeling van de vraag voor T = 3τ .................................................................................... 61 Tabel 31: Kostentabel voor T = 3τ ...................................................................................................... 61 Tabel 32: Kostenmatrix ...................................................................................................................... 62
xi
1 Inleiding In de productie-industrie is er de afgelopen jaren een hoge concurrentie ontstaan tussen verschillende producenten van bepaalde producten. Om hun marktpositie te garanderen ten aanzien van de lageloonkostlanden, kopen Westerse bedrijven hoogwaardige kwaliteitsmachines die zoveel mogelijk geautomatiseerd zijn. Deze machines vergen minder operatoren en produceren producten met een uitstekende kwaliteit. De machines zijn echter wel duur. Daarom vereist het economisch rendabel houden van een bedrijf met zo’n hypermodern machinepark, productieplanningen die de capaciteit van de machines optimaal benutten. De capaciteit van een machine is afhankelijk van twee processen. Enerzijds is er het effectieve productieproces en anderzijds het onderhoudsproces. Machines vereisen immers een strak onderhoudsbeleid om de nodige beschikbaarheid te kunnen garanderen. In de meeste bedrijven worden deze twee processen onafhankelijk van elkaar gepland. Het productieteam zal een planning opstellen om zo optimaal mogelijk te produceren, terwijl het onderhoudsteam hetzelfde zal doen voor hun onderhoudsactiviteiten. Het resultaat is vaak dat de twee planningen niet op elkaar zijn afgestemd en er dus heel wat beschikbaarheid verloren gaat omwille van conflicten tussen de twee planningen. Het ene moment zal de productie moeten worden stopgezet om noodzakelijk onderhoud uit te voeren omwille van een storing. Het andere moment zal een preventieve onderhoudsactiviteit uitgesteld worden om een order op tijd af te krijgen. Aangezien deze twee processen duidelijk een grote invloed op elkaar uitoefenen, is het interessant om onderzoek te voeren naar een integratie van de twee planningen.
Deze masterproef zal starten met een beknopt overzicht van de literatuur omtrent productie en onderhoud en de bijhorende planningen. De laatste jaren is er immers heel wat research gedaan naar de aparte, maar recent ook naar de geïntegreerde productie- en onderhoudsplanningen. Vervolgens zal een uitgebreide bespreking en evaluatie volgen van het model uit de paper ‘An integrated production and preventive maintenance planning model’ (Aghezzaf et al, 2007). Het model uit deze paper is een geïntegreerd productie- en onderhoudsmodel voor een enkele machine en is tevens de basis van deze masterproef. Het derde luik van deze scriptie zal dit model uitbreiden naar een productiesysteem met meerdere parallelle machines. Verder zullen ook enkele aanpassingen uitgevoerd worden om het model nog meer conform te maken met de realiteit. Tot slot zal worden nagegaan of het geïntegreerde model voor de enkele machine en deze voor de parallelle machines een meerwaarde hebben voor een bedrijf.
1
2 Literatuurstudie Het integreren van productie- en onderhoudsplannen heeft in de afgelopen jaren meer en meer interesse gewonnen van enerzijds de onderzoekwereld en anderzijds de bedrijfswereld. Er is dan ook al heel wat onderzoek gedaan naar alle aspecten van het plannen van productie en onderhoud. In dit gedeelte wordt een beknopt overzicht gegeven van informatie die in de literatuur terug te vinden is over de onderwerpen van deze scriptie. Er zal gestart worden met de link te leggen tussen productie en onderhoud. Vooral de reden waarom de integratie zo belangrijk is, wordt in het eerste gedeelte besproken. Vervolgens zal wat uitleg gegeven worden over het ‘Lot Sizing Problem’. Dit is een bepaald type van problemen, die ook in deze thesis voorkomt. Daarna wordt een heel hoofdstuk gewijd aan de storingsfunctie of ‘failure rate’ die nodig is om een onderhoudsplanning te kunnen modelleren. De verschillende mogelijke distributies worden allemaal toegelicht. Het laatste onderdeel van deze literatuurstudie handelt over de bestaande modellen in de literatuur. Aangezien er al heel wat onderzoek uitgevoerd is naar het plannen van productie en logistiek, zijn er uiteraard al verschillende modellen ontwikkeld.
2.1 Verband tussen productie en onderhoud De economische evolutie heeft de afgelopen jaren bedrijven ertoe aangezet om een zo optimaal mogelijk productie te verwezenlijken. Het bedrijf moet met andere woorden zo efficiënt mogelijk werken. In een eerste fase had men enkel aandacht voor het productieproces. Er werd een grote nadruk gelegd op het verminderen van de WIP (work-in-progress) en voorraad in het algemeen. Verder lag de nadruk vooral op het verbeteren van de productiviteit en van de kwaliteit in het proces. Dit laatste resulteerde in een grotere aandacht voor de onderhoudsafdeling in bedrijven, aangezien de betrouwbaarheid een zeer belangrijke factor is om de productiviteit en de kwaliteit te verhogen (Gilbert and Finch, 1985).
Tot voor kort was er echter geen of slechts een zeer beperkte samenwerking tussen de productieen de onderhoudsmanagers. Men beschouwde ze vaak als 2 verschillende afdelingen in het bedrijf, waarbij onderhoud als noodzakelijk kwaad werd aanzien. Deze visie zorgde voor rivaliteit en spanningen omdat de traditionele productieplanningen dikwijls niet in staat waren om te voldoen aan de vereisten van de onderhoudsafdeling. De capaciteitsvermindering van de machines omwille van onderhoudsactiviteiten was moeilijk te aanvaarden voor de productiemanagers. Deze situatie zorgde ervoor dat er nooit een optimaal planningsbeleid aanwezig was.
2
Hoewel de productie- en de onderhoudsactiviteit onafhankelijk werden behandeld, is er wel degelijk correlatie tussen de twee. Enerzijds is het productieproces onderhevig aan storingen door onder andere defecten. Deze storingen zorgen ervoor dat het proces niet maximaal benut wordt. Onderhoud, meer specifiek preventief onderhoud, kan het aantal defecten sterk verminderen en dit heeft een grote invloed op de benutting of capaciteit van een productieproces. Anderzijds heeft de productie ook een invloed op de onderhoudsactiviteiten. Soms zullen deze namelijk moeten worden verplaatst in tijd of zelfs opgeschort worden om de dagelijkse productiecapaciteit op tijd te realiseren. Integratie tussen de twee activiteiten is dan ook noodzakelijk om te komen tot een optimale planning (Wienstein and Chung,1999; Aghezzaf et al, 2007).
2.2 Definitie onderhoud 2.2.1 Definitie Als eerste definitie wordt deze van Wienstein (1996) genomen: “Onderhoud is gedefinieerd als de activiteiten die als doel hebben het behouden of herstellen van de veiligheid, het rendement, de betrouwbaarheid, de beschikbaarheid van fabriekstructuren, de systemen en de componenten. Zo tracht men superieure prestaties te verzekering van alle machines.”
Bovenstaande definitie kan verder worden aangevuld met deze van Ettkin & Jahnig (1986): “De functie van onderhoud binnen een organisatie is trachten capaciteit vrij te maken voor productie en dit in een betrouwbare en stabiele omgeving om een flexibele klantenservice, een consistente productkwaliteit, een betrouwbare output, een kost efficiënt proces en een hoge benuttingsgraad van de machines te verzekeren.”
2.2.2 Types Onderhoud Er bestaan verschillende soorten onderhoud die het productieproces en de bijhorende planning elk op een verschillende manier beïnvloeden (Wienstein & Chung, 1999). 1. Reactief of storingsonderhoud: dit omvat het herstellen van productiemateriaal wanneer het tekenen van slijtage of storing vertoont ofwel indien er al een storing opgetreden is. Indien men enkel dit type van onderhoud zou toepassen, zal dit een grote daling van de capaciteit, de kwaliteit en het rendement van de toestellen met zich meebrengen. 3
2. Preventief (preventive/predictive) onderhoud: dit type van onderhoud bestaat enerzijds uit periodiek onderhoud, waarbij men bepaalde onderhoudstaken uitvoert met een vaste frequentie of na een bepaald aantal draaiuren. Anderzijds voert men ook predictief onderhoud uit, waarbij men eerst een controle doet om na te gaan of onderhoud al dan niet nodig is. 3. Proactief onderhoud: dit is een voortzetting van preventief onderhoud, waarbij men onderzoek doet naar de oorzaken van de slijtage en de storingen. Men
tracht via
aanpassingen in het ontwerp, via gebruik van andere materialen en via andere wijzigingen het productiemateriaal te verbeteren om zo de hoeveelheid preventief onderhoud te verminderen. Het doel van het onderhoudsmanagement is een planning opstellen die voldoende preventieve onderhoudsactiviteiten bevat, zodat er een evenwicht ontstaat tussen de toegelaten kosten voor onderhoud en het aantal storingen.
2.3 Lot Sizing Problem Wanneer men productieplannen wil modelleren, komt de term ‘lot sizing problems’, of in het nederlands ‘seriegrootte problemen’, vaak aan bod. Aangezien de Engelse benaming altijd wordt toegepast in de literatuur, zal dit in het verdere verloop van deze scriptie ook gebruikt worden.
‘Lot sizing problemen’ in de productiewereld zijn problemen waarbij de productie moet bepaald worden gedurende verschillende tijdsperiodes. Dit moet uiteraard op een zo goedkoop mogelijke manier gebeuren. veronderstel dat er vijf gelijke machines zijn in een bepaald productieproces. Er zal een planning moeten gegenereerd worden die zal aangeven op welk ogenblik welk product moet geproduceerd worden en op welke machine dit moet gebeuren. Er zullen wellicht meerdere parameters in rekening worden gebracht, zoals setupkosten en setuptijd, productiekosten, voorraadkosten en nog vele andere.
Hieronder volgt een beknopte beschrijving omtrent de verschillende karakteristieken van de lot sizing modellen (Karima B. et al, 2000). 1. Planningshorizon:
Dit is een tijdsperiode of tijdsinterval in de toekomst, waarin het
productiemanagement het productiewerk zal plannen of met andere woorden een productieschema zal opstellen. Men kan zowel continue of discrete tijdsintervallen gebruiken. Verder spreekt men in het vakgebied van big bucket of small bucket lot sizing 4
problemen. Wanneer het tijdsinterval of de tijdsperiode groot genoeg is zodat men meerdere items kan produceren in één interval, dan gebruikt men de term big bucket. Indien slechts één product kan geproduceerd worden per interval, dan is de term small bucket van toepassing.
2. Aantal niveaus (levels): Productiesystemen kunnen single- of multi-level zijn. Single-level productiesystemen hebben een eenvoudig eindproduct dat na het productieproces marktklaar is. Dit kan ofwel een product zijn die geproduceerd wordt uit grondstoffen, ofwel een product dat wordt geassembleerd. Hiertegenover staan Multi-level productiesystemen, waarbij de output van het productieproces de input van een ander proces is. De vraag op één bepaald level met andere woorden afhankelijk van de vraag van de andere levels.
3. Aantal producten: De complexiteit van een planningsmodel is sterk afhankelijk van de hoeveelheid en het aantal verschillende producten. In geval van een single-item productieplanning moet er slechts één enkel product geproduceerd worden. Daartegenover staat de multi-item productieplanning, uiteraard met meerdere verschillende soorten items. De complexiteit van een productiemodel is positief gecorreleerd met het aantal verschillende producten.
4. Capaciteits- of grondstoffenrestricties: De eenvoudige planningsmodellen gaan uit van onbeperkte capaciteit van grondstoffen. Uiteraard is dit een zeer onrealistische situatie die leidt tot onbruikbaarheid van de modellen in levensechte situaties. Het is meer realistisch om in het model capaciteits- en grondstoffenrestricties opleggen. Dit zorgt er echter voor dat het model direct heel wat complexer wordt. In de literatuur spreekt men van een ‘Capacitated Lot Sizing Problem’ of CLSP indien er restricties aanwezig zijn. Het hoofdstuk 3.1 in verband met het basismodel van deze thesis zal het typische CLSP-model uitgebreid bespreken.
5. De Vraag: De vraag zal logischerwijze de productiehoeveelheid bepalen. De vraag wordt onderverdeeld in verschillende types. Enerzijds is er de statische vraag, waarbij de vraag niet verandert in de tijd. Anderzijds de dynamische vraag, waarbij de vraag per tijdsinterval verschillend is. Verder kan de vraag deterministisch zijn. In dit geval is de vraag gekend op voorhand. Het tegenovergestelde is de probabilistische vraag, waarbij de vraag op
5
voorhand ongekend is en dus afhankelijk is van een kansfunctie. De lot sizing problemen, die een dynamisch karakter hebben, zijn veel moeilijker te modelleren.
6. Voorraadtekorten: Wanneer voorraadtekorten toegelaten zijn, dan kan men aan de vraag van de huidige periode voldoen met behulp van de productie van de volgende periode. In de industrie wordt dit backlogging of orderachterstand genoemd. Daarnaast kan het ook zijn dat de vraag zelfs niet compleet wordt geproduceerd en er verloren gegane vraag of ‘lost sales’ optreden. Dit zal leiden tot de introductie van extra tekortkosten in het model, wat opnieuw een meer complex systeem met zich meebrengt.
Voor deze scriptie zal het ‘capacitated lot sizing model’ van groot belang zijn. De introductie van onderhoudsrestricties betekent weliswaar een extra dimensie die voor een grotere complexiteit zorgt.
2.4 Storingsfuncties In het begin van deze scriptie werd al aangetoond dat er in de bedrijfswereld een stijgend belang is voor het onderhoud en alles daaromtrent. Het doel van onderhoud is het maximaliseren van de beschikbaarheid van de machines. Het bedrijf zal een evenwicht trachten te zoeken tussen die beschikbaarheid en de kosten die nodig zijn om dit te behalen. Om dit te kunnen doen, maakt men gebruik van modellen, aangebracht door operationeel onderzoek. Deze modellen trachten de realiteit zo goed mogelijk na te bootsen. Dit betekent dat ook de storingen, machine failures in het Engels, gesimuleerd moeten worden. Deze paragraaf beschrijft een beknopte studie van de storingsfuncties, gezien het model in deze paper gebruik zal maken van zo’n functie.
2.4.1 Verband betrouwbaarheid en storingsfunctie Een productiesysteem wordt
als
beschikbaar
Storing
beschouwd als het in staat is z’n taak uit te voeren zoals het bedoeld is. Men spreekt in het vakjargon van
SoFu
of
‘State
of
Functioning’.
Het
SoFu
SoFa
tegenovergestelde komt voor wanneer het systeem niet functioneert naar behoren. Er is een storing, waardoor het systeem overgaat naar SoFA of ‘State of Failure’. Een storing of ‘failure’ kan gedefinieerd
Reactief Onderhoud Figuur 1: SoFu-SoFa
6
worden als een gebeurtenis die ervoor zorgt dat een systeem of machine niet meer in staat is om ofwel de vooraf bepaalde taak of functie uit te voeren, ofwel niet meer instaat is om bepaalde vereisten te behalen (Knezevic, 1987). Eenmaal het systeem door een storing in SoFa raakt, zal reactief onderhoud nodig zijn om het terug in SoFu te brengen. Preventief of proactief onderhoud kan ervoor zorgen dat de storing zo lang mogelijk uitgesteld wordt.
De beschikbaarheid wordt beïnvloed door de betrouwbaarheid en de onderhoudbaarheid van een systeem of machine. De betrouwbaarheid geeft aan hoe lang het systeem in SoFu is. Die tijd in SoFu is voor elk systeem verschillend en afhankelijk van drie factoren (Van Goubergen D., 2010): •
Interne invloeden: eigenschappen van het proces, de gebruikte materialen en hun variabiliteit, voorraad, transport, enzovoort.
•
Externe factoren: Temperatuur, vochtigheid, stof, trillingen, enzovoort.
•
Operationele invloeden: Stress van de operator, gebruiksprofiel, misbruik door personen, enzovoort.
In de meest optimale situatie voor een bedrijf is de betrouwbaarheid volledig gekend. Dit zou betekenen dat men alle storingen zou kunnen voorspellen. In de realiteit is dit echter onmogelijk omwille van de vele onvoorspelbare factoren die hierboven werden beschreven. Om enerzijds toch een idee te krijgen van de betrouwbaarheid, maakt men gebruik van kansdichtheidsfuncties (PDF of probability density function) en cumulatieve distributiefuncties (CDF of cumulative distribution function). De kansdichtheidsfunctie (4) wordt gebruikt om de kans dat een storing voorkomt
tussen 4: en 4V te berekenen (Van Gouwbergen D., 2010; Croarkin et al, 2003): Y
A(W4<3X 4TWW 4: 4V ) = 2
Z
(4)4
De cumulatieve distributiefunctie is de kans dat er een storing voorkomt vooraleer t bereikt wordt.
[(4) = 2 (4)4 6
De betrouwbaarheid van een systeem wordt echter beschreven door de betrouwbaarheidsfunctie. Dit is de kans dat een systeem geen storing ondervindt tussen 0 en t. Dit is met andere woorden gelijk aan:
\(4) = 1 − [(4) = 1 − 2 (4)4 6
De betrouwbaarheidsfunctie is een interessant gegeven voor een bedrijf. Wanneer er echter een productiesysteem moet worden gesimuleerd om bijvoorbeeld een planning op te stellen, dan is het
vooral interessant om de storingsfunctie te kennen. De storingsfunctie ](4), ook wel ‘pannefunctie’ 7
of ‘hazard function’ genoemd, geeft weer wat de kans is op een storing op tijdstip t, op voorwaarde dat er voordien geen storing voorgekomen is. De formule voor de storingsfunctie bekomt men via de volgende redenering (Van Gouwbergen D., 2010; Croarkin et al, 2003): • •
•
•
De kans op een storing tussen 4 en 4 + ∆4 wordt gegeven door ](4). ∆4 A′W4<3X 4TWW 4 " ∆4 ` ∩ ` X W4<3X b<<3 4 `
A′X W4<3X b<<3 4 ` ∗ A′W4<3X XT3 ∆4 ` |` X W4<3X b<<3 4′ Dit is hetzelfde als:
4. ∆4 e1 ; [4f. ]4. ∆4
Aangezien f(t) en F(t) gekend zijn, kan men schrijven: ]4
4 1 ; [4
Merk op dat als 4 groter wordt, de storingsfunctie ook groter wordt. Dit omwille van het feit dat
[4 een monotoon stijgende functie is. De storingsfunctie kan verschillende vormen aannemen.
Enkele bekende vormen worden in de onderstaande figuur weergegeven. Bij een dalende en stijgende storingsfunctie is er een zaagtandprofiel aanwezig. Dit komt omdat het systeem na het onderhoud terug in een ‘as-good-as-new’-status is.
Figuur 2: Vormen van de storingsfunctie of failure rate
8
2.4.2 Keuze van de kansdichtheidsfunctie voor de storing De keuze van de kansdichtheidsfunctie is afhankelijk van het type storing dat optreedt. Er kunnen namelijk verschillende mogelijkheden zijn waarom die storing voorkomt, zoals corrosie, structuurvermoeidheid, slijtage, enzovoort. Men kan al deze factoren apart in rekening brengen, maar meestal maakt men gebruik van één globale dichtheidsfunctie. Men spreekt van een ‘black box’. Hieronder worden de meest gebruikte storingsfuncties voorgesteld, namelijk de normale, lognormale, exponentiële, Gamma en Weibull verdelingen. 2.4.2.1 Normale distributie De normale distributie is de meest gebruikte distributie voor het modelleren van storingen. Het is geschikt in situaties waar slijtage de grootste oorzaak is voor het falen van een systeem. De reden voor het hoge gebruik is de ‘centrale limietstelling’ die van toepassing is bij de normale distributie. Die stelling geeft aan dat de som van een groot aantal onderling onafhankelijke en gelijk verdeelde stochastische variabelen met eindige variantie bij benadering een normale verdeling heeft. Met andere woorden, indien een machine beïnvloed wordt door heel veel factoren, dan zal de resulterende distributie bij benadering normaal verdeeld zijn. De verdeling maakt gebruik van twee parameters, namelijk een gemiddelde of verwachtingswaarde μ en een standaardafwijking σ. De kansdichtheidsfunctie van de normale distributie is als volgt (Croarkin et al, 2003): 4
1
g. √2i
.
9
9jY VkY
In onderstaande grafieken wordt de kansdichtheidsfunctie en de cumulatieve verdeling voor verschillende waarden van de parameters getoond. Merk op dat de normale verdeling aan de linkerzijde negatieve waarden toelaat. Om dit te voorkomen kan men een stuk van de grafiek als het ware afsnijden zodat er geen negatieve waarden meer zijn of gewoon de lognormale distributie gebruiken.
Figuur 3: Normale verdeling PDF
Figuur 4: Normalde verdeling CDF
9
2.4.2.2 Lognormale distributie De lognormale distributie is een uitbreiding van de normale distributie. Indien de stochastische
variabele ! normaal verdeeld is, dan is de stochastische variabele $ l een lognormale
verdeling. Deze verdeling is meer realistisch voor systemen waar slijtagestoringen voorkomen. Verder wordt het ook gebruikt om de tijd nodig om onderhoud uit te voeren, te modelleren. Aangezien deze verdeling nauw verwant is met de normale distributie, zijn dezelfde twee parameters nodig. De functie is als volgt (Croarkin et al, 2003): 4
1
g. 4. √2i
.
9
mn9jY VkY
De kansdichtheidsfunctie en de cumulatieve verdeling worden op de onderstaande figuur afgebeeld.
Figuur 5: Lognormale verdeling PDF
Figuur 6: Lognormale verdeling CDF
2.4.2.3 Exponentiële distributie De exponentiële verdeling is een vaak voorkomende kansdichtheidsfunctie voor het modelleren van storingen. Deze verdeling wordt namelijk gebruikt voor systemen die een constante storingsfunctie hebben. Dit zorgt voor een grote vereenvoudiging van de modellering, zodat men bij grote modellen zoveel mogelijk deze distributie tracht te gebruiken. Er zijn enkele situaties waar het niet aangeraden is om deze verdeling te gebruiken, aangezien de storingsfunctie in die gevallen niet constant is. Dit is het geval wanneer ouderdom van de machines in rekening wordt gebracht. Naarmate de machine ouder wordt, zullen er meer storingen optreden. Een tweede situatie is wanneer de machine onderhevig is aan slijtage en waarbij onderhoud de machine niet in een nieuwe staat terugbrengt. Elke storing zal de machine bijgevolg in een slechtere staat brengen die onomkeerbaar is. De storingsfunctie is in zo’n gevallen duidelijk niet constant. De exponentiële
10
verdeling maakt gebruik van één parameter wordt op de hieronder weergegeven (Croarkin et al, 2003).
4 ]. 9o.
De grafieken van de verdeling worden hieronder weergegeven.
Figuur 7: Exponentiële verdeling CDF
Figuur 8: Exponentiële verdeling PDF
2.4.2.4 Gamma distributie De gamma verdeling wordt gebruikt in situaties waar gedeeltelijke faling moet plaatsvinden of waar met andere woorden een deel van het totale systeem moeten falen vooraleer het totale systeem faalt (Van Gouwbergen, 2010). Deze verdeling wordt niet zo vaak gebruikt om storingen te modelleren. De verdeling bevat twee parameters, namelijk een vormparameter p en een
schaalparameter . Indien de distributie gebruikt wordt om een storing te modelleren, dan noemt men ook wel de ‘failure rate’ van het gehele systeem en p het aantal gedeeltelijke falingen die
leiden tot het falen van het volledige systeem. De gamma distributie valt onder de verzameling van exponentiële verdelingen. Het grote verschil met een gewone exponentiële verdeling is dat de storingsfunctie niet meer constant is. Met behulp van de twee parameters kan men verschillende storingsfuncties genereren. Indien de vorm parameter p kleiner is dan één, dan is de storingsfunctie dalend en indien groter dan één is het een stijgende functie. De gamma functie ziet er als volgt uit (Croarkin et al, 2003): w
Γp 2 r s9: exp;r r 6
De gamma kansdichtheidsfunctie wordt dan: 4
. . 4s9: . 9M. Γp 11
De grafieken worden hieronder voorgesteld:
Figuur 9: Gamma verdeling PDF
Figuur 10: Gamma verdeling CDF
2.4.2.5 Weibull Distributie De Weibull verdeling is de meest toegepaste distributie in het domein van ‘Reliability Engineering’. Het wordt algemeen aangenomen dat dit de beste distributie is om machine storingen te
modelleren (Lewis, 1987). De functie bevat drie parameters. Een vormparameter x die bepaald of
de afgeleide storingsfunctie stijgend of dalend is. Indien x groter is dan één, dan is de
storingsfunctie stijgend. Wanneer x gelijk is aan één, dan heeft men te maken met een constante
storingsfunctie. Een x kleiner dan één zorgt dan weer voor een dalende storingsfunctie. De tweede
factor is de schaalparameter y. Een wijziging van deze parameter heeft hetzelfde effect als een
schaalverandering van de abscis. Het verhogen van y, terwijl men x constant houdt, zal de
kansdichtheidsfunctie als het ware uitrekken. Hoe groter de waarde van de schaalparameter, minder snel de functie zal stijgen of dalen. De derde parameter is de locatie parameter z. Het geeft
aan waar de distributie start op de abscis. Deze factor wordt meestal weggelaten door de waarde
gelijk te stellen aan nul. De Weibull distributie geeft de beste verdeling van de levensduur van voorwerpen. De functie ziet er als volgt uit (Van Gouwbergen D., 2010): x 4 }9: 9~ 4 . { | . y y
12
De probability density function en de cumulative distribution function :
Figuur 12: Weibull verdeling PDF
Figuur 11: Weibull verdeling CDF
2.5 Bestaande modellen In deze paragraaf wordt een beknopte literatuurstudie gemaakt van alle onderzoek die doorheen de jaren is verricht naar productie-, onderhouds- of geïntegreerde planningen. Er zal eerst een overzicht worden gegeven van de meest relevante papers. Daarna zullen twee belangrijke modellen worden voorgesteld.
2.5.1 Beknopt overzicht van de literatuur Het eerste onderzoek naar het modelleren en analyseren van productieplanningen ging ervan uit dat de machine altijd beschikbaar was. Onderhoud werd nog niet geïntegreerd. Er zijn door jaren heen zeer veel modellen gepubliceerd. Sommige modellen bouwen verder op reeds oudere modellen en breiden deze uit naar andere productiesystemen. Andere modellen creëren een volledig nieuwe methode. Pinedo (1995) heeft alle belangrijkste werk in de literatuur inzake productieplanning gebundeld in het boek ‘Scheduling: Theory, Algorithms, and System’. Er zijn ook naast de modellen voor de productieplanning heel wat mathematische modellen ontwikkeld met als doel het analyseren, plannen en optimaliseren van onderhoud in een bedrijf. Cho & Pariar (1991) en Dekker (1996) hebben de belangrijkste publicaties omtrent dit onderwerp bestudeerd en samengebracht in een paper. Na alle publicaties die handelen over de twee aparte modellen, is de volgende logische stap onderzoek doen naar de correlatie van de twee met behulp van een geïntegreerd model. In de literatuur zijn er slechts een handvol papers die trachten een oplossing te vinden voor het geïntegreerd probleem. Ashayeri et al (1996) onderzocht dit probleem aan de hand van een casestudy in de procesindustrie. Hij werkte een geïntegreerd model uit voor een multi-machine 13
productiesysteem. De gebruikte tijdshorizon bestond uit discrete tijdsperioden en de productie hoeveelheden waren de basis voor de beslissingen die genomen werden. Een groot minpunt was echter het gebruik van discrete kansen om storingen te simuleren in plaats van de typische continue kansdichtheidsfuncties. Graves & Lee (1999) onderzochten een geïntegreerde planning voor een enkele machine. Ze gebruikten de totale gewogen voltooiingstijd als oplossingscriteria. Het grote minpunt hier was het feit dat slechts één onderhoudsbeurt was toegestaan gedurende de tijdshorizon. Lee & Chen (2000) breidden dit model later uit voor meerdere parallelle machines en job shops.
In de twee volgende paragrafen wordt eerst het model van Weinstein & Chung (1999) besproken, daarna het model van cassady & Kutanoglu (2005). Deze twee papers bevatten een duidelijk model die extra inzicht geeft in het geïntegreerde probleem die in deze scriptie wordt behandeld.
2.5.2 Integrating Maintenance and Production Decisions in a Hierarchical Production Planning Environment
(Weinstein and
Chung, 1999) Wienstein en Chung stellen een driedelig model voor om het onderhoudsbeleid van een onderneming te evalueren. De paper stelt een model voor die de onderhoudsplanning linkt aan het geaggregeerde productieplan en de MPS of ‘Master Production Schedule’ activiteiten. In een eerste fase wordt een geaggregeerd productieplan gegenereerd met behulp van een ‘Linear Programming’ formulering. De tweede fase tracht een MPS te ontwikkelen. Die MPS moet zo nauw mogelijk aansluiten bij de doelstellingen die gegenereerd zijn door het geaggregeerd productieplan. Tot slot wordt in een derde fase het geheel gesimuleerd. Voor deze thesis is vooral de eerste fase relevant. Men presenteert er een model die onderhoud integreert met de productie en dit op geaggregeerd niveau. De tweede en derde fase zullen niet worden besproken, aangezien ze buiten het domein van deze scriptie vallen. 2.5.2.1 Eerste fase: Het geaggregeerde planningsmodel Het geaggregeerde productieplanningsmodel is een ‘mixed integer program’. Het model is gericht op het niveau van productfamilies. Dit is een groep van producten of items die dezelfde set-up vereisen. Men veronderstelt dat er geen gebruik gemaakt wordt van onderaannemers en dat de productie steeds op maximale efficiëntie functioneert. Dit betekent dat er geen verspilling plaatsvindt. Verder gaat men ervan uit dat orderachterstanden (backorders) niet toegelaten zijn en dat alle nodige grondstoffen steeds aanwezig zijn.
14
Op het geaggregeerde niveau wordt evenwel geen rekening gehouden met de reactieve onderhoudsactiviteiten. Enkel de preventieve onderhoudsactiviteiten zijn van belang. Omdat de machinestoringen niet gepland zijn, worden de geassocieerde kosten niet meegerekend in het geaggregeerde model. Preventieve onderhoudsactiviteiten worden in het model van Wienstein en Chung echter uitgevoerd door de machineoperatoren zelf. Ze consumeren dus dezelfde capaciteit en arbeidstijd als de gewone productie en worden dus wel degelijk meegeteld in het geaggregeerde model. Objective function:
5
eW $ " b $ " ℎ , f R: R:
Constraints: (1) (2) (3) (4) (5) (6)
5
5
" 1 @ " 1
[ " 1 " 1 " M ′(M ) R:
R: M R :
5 ` " ; ∑ R r $ ; ∑R x $ ; ∑R: ∑MR: M M ≥ 0 ,,9: ; , " $ ; 9: ; @ " [ 0 ; p ≤ 0 ; $ " $ ≤ 0 $ 1 $ > 0 ($ ) = 0 $ = 0
$ , , , @ , [ , , ≥ 0
Betekenis variabelen/parameters: $
,
@
[
Productie level (in units) van de productfamilie i in een periode t Hoeveelheid voorraad van i in periode t Vraag van product i in periode t Aangenomen werkkracht (in uren werkkracht) in periode t
Ontslagen werkkrachten (in uren werkkracht) in periode t
ℎ
eenheid (variabele) productiekost van productfamilie i in periode t
Overuren in periode t
1
eenheid voorraadkost van productfamilie i in periode t
1
Kost overuren (per arbeidsuur)
b
1
1
r
Gewone arbeidsuren in periode t
Kost van in dienst nemen (per arbeidsuur) Kost ontslag (per arbeidsuur)
Kost van een gewoon arbeidsuur (per arbeidsuur) Gemiddeld aantal geconsumeerde arbeidsuren per unit productfamilie i 15
p
.
Maximaal toegelaten overuren per periode
W
Werkplaats waar onderhoudsactiviteiten moeten worden uitgevoerd
Totaal aantal productfamilies Lengte van de planningshorizon Set-up kosten voor productfamilie i
$ Binaire set-up variabele voor product i in periode t
x
M
Set-up tijd in arbeidsuren voor productfamilie i
Kost voor onderhoudsactiviteit op werkplaats k in periode t
` M Onderhoudsvariabele voor werkcenter k in periode t
M
Onderhoudstijd in arbeidsuren voor werkcenter k
Dit is een groot getal om het effect van de binaire variabelen te verzekeren
De ‘objective funtion’ bestaat uit drie delen. Het eerste deel is het typische ‘capacitated lot sizing problem’, waarbij de productiekosten geminimaliseerd worden. Het tweede deel minimaliseert het personeel en de bijhorende arbeidsuren. Tot slot brengt het derde en laatste gedeelte de onderhoudskosten in rekening. De eerste restrictie (1) zorgt ervoor dat de arbeidscapaciteit bestaande uit de standaard- en overuren in elke periode voldoende is voor de productie-, set-upen preventieve onderhoudsactiviteiten. De tweede restrictie (2) is de typische relatie tussen de voorraad, de productie en de vraag. De derde (3) beperking garandeert het evenwicht inzake werkkrachten. De vierde (4) is de overurenrestrictie. Het totale aantal overuren mag niet groter zijn dan een vooraf ingestelde grens. Die grens is een percentage van het totale aantal standaarduren. De vijfde (5) en zesde (6) beperkingen sturen de binaire variabelen. De tweede en derde fase in dit model wordt niet meer behandeld, want zoals reeds gezegd valt dit buiten het domein van deze scriptie.
2.5.3 Integrating Preventive Maintenance Planning and Production Scheduling for a Single Machine (cassady and Kutanoglu, 2005) Deze paper onderzoekt de toegevoegde waarde van een geïntegreerde productie- en onderhoudsplanning door deze te vergelijken met de resultaten van de aparte planning. Het is een studie op het geaggregeerde plannings niveau. Men presenteert eerst het model voor de productieplanning, daarna deze voor het preventief onderhoud en tot slot het geïntegreerde model. Daarna worden deze modellen getest op verschillende problemen. De gebruikte analyse is gebaseerd op het minimaliseren van de gewogen voltooiingstijd of ‘weighted completion time’. Dit zal betekenen dat korte jobs voorrang hebben.
16
2.5.3.1 Het productie-planningsprobleem Deze paper zal zoals aangehaald eerst de aparte planningsproblemen behandelen. Er wordt gewerkt met een enkele machine, waarbij er een set van jobs moet geproduceerd of behandeld
worden. Doel is uiteraard een optimale volgorde voor de jobs zoeken, waarbij de gewogen voltooiingstijd wordt geminimaliseerd. Voorts is het systeem niet onderhevig aan storingen. Er wordt met andere woorden gewerkt in optimale condities. Hieronder volgt een beknopte voorstelling van het gebruikte model voor de productieplanning.
Stel:
r = 1 als de ide job die wordt uitgevoerd, job j is 0 anders voor i=1,2,…,n en j=1,2,…,n
Vervolgens is:
n
1) #ef = # r R: n
(2) ef = r R:
(3) 1ef = #eMf
Met:
MR:
aantal jobs die gepland zijn
#
procestijd van job j
Gewicht van job j
#ef
Procestijd van de ide job in de serie/reeks
ef
Gewicht van de ide job in de serie/reeks
1ef
Voltooitijd van de ide job in de serie/reeks (deterministisch geval)
Met deze definities, kan het model worden beschreven als volgt: Objective function: n
n
R:
R:
n
r # rM Constraints:
MR: R:
n
1) r = 1 = 1,2, … , R:
17
n
(2) r = 1 = 1,2, … , R:
r 3, = 1,2, … , = 1,2, … ,
De eerste restrictie (1) zorgt ervoor dat elke positie in het schema 1 job toegewezen krijgt. De tweede restrictie (2) zorgt er dan weer voor dat elke job toegewezen wordt aan 1 positie in het schema. Dit eenvoudige model wordt opgelost via de ‘weighted shortest processing time (WSPT)’ regel. Men berekent hier voor elke job de ratio # . De jobs worden vervolgens gerangschikt van groot naar klein ratio om zo tot een oplossing te komen.
2.5.3.2 Het preventief onderhoud planningsprobleem Machines zijn in de realiteit onderhevig aan storingen. Stel dat die storingen gegeven worden door een Weibull kans distributie, met een vormparameter β die groter is dan 1. Veronderstel voorts dat bij een storing, de machine hersteld wordt naar een ‘as-good-as-old’-status. Dit betekent dat het herstel van de machine tot een minimum beperkt wordt en de staat van het toestel dezelfde is als deze net voor de storing. Om de machine definitief op te lappen, kan men uiteraard preventief onderhoud uitvoeren om het stijgende risico op storing te verminderen. Er wordt verondersteld dat preventief onderhoud de machine terug herstelt naar een ‘as-good-as-new’-status. Dit komt erop neer dat de leeftijd van de machine terug op nul gezet wordt in het model. Er wordt gebruik gemaakt van een periode gebonden preventief onderhoudsbeleid. Dit betekent dat na
tijdseenheden, preventief onderhoud wordt uitgevoerd. Het doel van dit model is dan ook de optimale periode vinden. Aangezien het preventief onderhoud de machine telkens in een nieuwe status zal brengen, wordt er gesproken van een ‘renewal process’ of hernieuwings proces. De
startpunten van dit proces zijn ofwel de effectieve initiatie van de machine operaties, ofwel het einde van elke preventieve onderhoudsactiviteit. De storingen die in die cyclus zullen voorkomen, kunnen gemodelleerd worden door een niet-homogeen Poisson proces. Het gemiddeld aantal storingen in tijdseenheden wordt dan gegeven door:
Met
2 44 2 6
6
} x }9: 4 4 { | y y}
.
Aantal machine storingen in tijdseenheden van machine operatie
x
Tijd tot een machine storing
y
4
e.f
Weibull vorm parameter voor de waarschijnlijkheid distributie van T Weibull schaal parameter voor de waarschijnlijkheid distributie van T risico functie van T (Hazard function) PM interval voor de machine 18
Rekening houdende dat de machine ‘downtime’ bestaat uit het herstel van de storingen alsook de preventieve onderhoudsactiviteiten, dan kan de machine beschikbaarheid geschreven worden als:
" 4 " 4
Een optimale preventieve onderhoudsperiode bekomt men voor:
Met
() 4
4
:
4 } = y 4 (x − 1) ∗
steady-state machine beschikbaarheid tijd nodig voor herstel van de machine tijd nodig om preventief onderhoud uit te voeren op de machine
∗
optimale waarde van
Er dient opgemerkt te worden dat dit uiteraard geen planningsmodel is, maar enkel een berekening die aangeeft wat de ideale preventieve onderhoudsperiode is. De volgende stap is nu de beide problemen combineren naar een geïntegreerd model. 2.5.3.3 Het geïntegreerde model Zowel de productie- als de preventieve onderhoudsplanning hebben beiden als doel om de capaciteit van het toestel zo goed mogelijk te benutten. Om die reden tracht men beide planningen samen op te lossen. Men zal moeten beslissen of er preventief onderhoud gedaan wordt en wanneer. De voltooiing van een job is een variabele die afhankelijk is van verschillende factoren. Dit is onder andere de leeftijd van de machine op het moment dat men zal starten met de job. Daarnaast zijn de voltooiingstijd van de vorige job, de tijd om preventief onderhoud uit te voeren, de beslissing of men al dan niet het onderhoud uitvoert, de procestijd van de job en de eventuele hersteltijd ook belangrijke factoren. Tot slot is het aantal machinestoringen tijdens de job ook van belang. Het geïntegreerde model wordt als volgt voorgesteld:
1 W 3 A <34 T4Xb<3 b<<3 W4 34 b <
0 3W
De verwachte waarde van :
= 4 M + #M + 4 M − ¡M9: ¢ = 1,2, … , MR:
19
Het doel van het model is het planningsschema vinden die de minimale totale gewogen verwachte voltooiingstijd voortbrengt. Objective Function:
n
R:
Constraints:
n
1) r = 1 = 1,2, … , R: n
(2) r = 1 = 1,2, … , R:
r 3 = 1,2, … , = 1,2, … , 3 = 1,2, … ,
Betekenis variabelen/parameters:
4
Voltooitijd van de ide job in de serie/reeks (stochastisch geval)
Tijd nodig om preventief onderhoud uit te voeren op de machine
4
tijd nodig voor herstel van de machine
ef
Gewicht van de ide job in de serie/reeks
#ef
Variabele van het preventief onderhoud Procestijd van de ide job in de serie/reeks Ouderdom van de machine na de ide job in de reeks/serie
¡9: Ouderdom van de machine vlak voor de ide job in de reeks/serie na preventief onderhoud r
1 als de ide job die wordt uitgevoerd, job j is 0 anders voor i=1,2,…,n en j=1,2,…,n
Men liet dit model meer dan 1000 verschillende problemen oplossen. In 60% van de gevallen kwam men een beter resultaat uit dan wanneer men de planningen apart maakte. Het geïntegreerde model was gemiddeld 2,2% beter.
20
3 Model voor enkele machine (Aghezzaf et al, 2007) De paper ‘An integrated production and preventive maintenance planning model’ (Aghezzaf et al, 2007) is de basis van deze scriptie. In dit hoofdstuk wordt alles omtrent het voorgestelde model uitgebreid besproken. Het model dat in de paper gebruikt wordt is een variant van een capacitated lot sizing probleem (CLSP). In het eerste deel van dit hoofdstuk wordt het standaard CLSP-model geïntroduceerd, namelijk zonder onderhoudsactiviteiten. Er zal via dit model een optimale productieplanning verkregen worden. Het tweede deel zal het gecombineerde plannings- en onderhoudsmodel voor een enkele machine van de paper voorstellen.
3.1 Basis CLSP-Model Het capacitated lot sizing probleem is, zoals ook uitgelegd in paragraaf 2.3, een productieplanning over een eindige tijdsperiode met een dynamische vraag. Orderachterstand wordt niet toegelaten. Het doel is de optimale hoeveelheden en de tijdsstippen van de productie te bekomen. Het basis CLSP kan als volgt worden gemodelleerd: Objective Function: & ) & '
Constraints:
!
" # $ " ℎ ,
1) $ + ,,9: − , = ∀4 ϵ H, i ϵ P
(2) $ ≤ ! ∀4 ϵ H, i ϵ P (3) A $ ≤ (4) ∀4 ϵ H, i ϵ P & '
$ , , ≥ 0; ! ϵ J0,1K
Parameters/Variabelen: P
H
#
ℎ
$ ,
De verzameling van alle items De planningshorizon N periodes van lengte τ Vaste kost om item i te produceren in periode t Variabele kost om item i te produceren in periode t Variabele voorraadkost van 1 unit van item i periode t Gevraagde hoeveelheid van item i in periode t Productie hoeveelheid van item i in periode t Hoeveelheid in voorraad van item i in periode t
21
!
A
4
NOPQ ∑MR M , dit is de bovengrens van de productiehoeveelheid van item i in periode t
1 als item i wordt geproduceerd in periode t 0 anders Procestijd of andere resource van item i Capaciteitsbeperking
Het doel van dit model is uiteraard het minimaliseren van de kosten die gerelateerd zijn aan het produceren en stockeren van goederen. De kosten bestaan uit drie delen. De vaste kosten of de kosten die gemaakt worden bij set-ups. Die komen voor wanneer men een batch van een nieuw item wil produceren. De machine zal hiervoor wellicht moeten aangepast worden. De kosten zijn niet afhankelijk van de hoeveelheid, vandaar dat men spreekt van vaste kosten. Daarnaast zijn er de variabele kosten die ook wel de productiekosten worden genoemd. Dit zijn kosten die per geproduceerde item worden aangerekend. Tot slot zijn er de voorraadkosten die aanwezig zijn wanneer een item in de voorraad gestockeerd wordt tijdens een periode.
Het model bezit drie restricties. De eerste restrictie (1) is de productiebeperking. Het aantal items dat in een bepaalde periode geproduceerd wordt, moet gelijk zijn aan de vraag voor die periode, plus hetgene dat men in de voorraad wil steken, vermindert met de voorraadhoeveelheid van de
vorige periode. De tweede restrictie (2) zorgt ervoor dat het productieaantal $ altijd kleiner of
gelijk is aan de vraag van de resterende periodes. Door die te kiezen als een zeer groot getal,
kan men het geheel vereenvoudigen, zonder het model te beïnvloeden. De derde en laatste
beperking (3) is de capaciteitsbeperking. Deze capaciteitsbeperking is meestal een restrictie inzake procestijd, maar dit kan uiteraard om het even welke input zijn. Er kunnen ook meerdere capaciteitsrestricties toegevoegd worden. Het oplossen van het model zal gebeuren aan de hand van het programma AMPL. Aangezien dit model een optimaal planningsschema zal genereren, kan het gebruikt worden als waardemeter voor andere modellen. Hoe dichter de oplossing van het geïntegreerde plannings- en productiemodel zal liggen bij de hier bekomen optimale oplossing, hoe beter.
3.2 Geïntegreerd model voor enkele machine Het integreren van de onderhoudsactiviteiten brengt niet alleen extra kosten met zich mee, maar ook meer ingewikkelde capaciteitsfuncties. In dit onderdeel zal het geïntegreerd model voorgesteld worden. Het is in grote mate gelijk aan een standaard CLSP-model. De betekenis van de parameters en variabelen is dan ook identiek aan het voorgaande deel.
22
In dit model zijn er twee verschillende tijdslijnen die in het model moeten worden samengevoegd. Op planningsniveau is er de planningshorizon H die bestaat uit . periodes van lengte τ.
Figuur 13: Tijdshorizon
Daartegenover staat de preventieve onderhoudscyclus , die ook een functie is van τ. is namelijk gelijk aan keer τ, waarbij k bepaald wordt door het onderhoudsbeleid van een bedrijf. Indien
gelijk is aan één, dan wordt na elke periode τ een onderhoudsbeurt uitgevoerd. Een ander uiterste
is wanneer gelijk is aan . . Op dat moment is er slechts één maal een preventieve
onderhoudsbeurt voor de gehele planningshorizon.
De onderhoudsactiviteiten zullen echter ook capaciteit consumeren. Hoe meer onderhoud men uitvoert, hoe minder capaciteit er beschikbaar is om te produceren en visa versa. De preventieve of geplande onderhoudsactiviteiten verbruiken ∗ capaciteitseenheden en brengen de
machine terug naar een nieuwe staat. Men spreekt van ‘as-good-as-new’. De ongeplande of reactieve onderhoudsactiviteiten verbruiken ∗ en brengen de machine slechts naar
de toestand zoals het was net voor de storing. Men spreekt van ‘as-good-as-old’. Hierbij is
0 1. De reden waarom kleiner of gelijk is aan , is omdat de ongeplande activiteiten
meer tijd zullen innemen aangezien deze letterlijk de productie stilleggen en dus vaak ‘online’ moeten gebeuren. Dit is meestal niet het geval bij preventief onderhoud. Onderstaande figuur is een schematische voorstelling van de vermindering van de capaciteit als gevolg van onderhoudsactiviteiten. De maximale capaciteit vermindert naar het niveau van de
werkelijke capaciteit (actual capacity). Op de figuur is gelijk aan één. Er is dus elke periode een preventieve onderhoudsbeurt, PM. Afhankelijk van de storingsfunctie kan er ook reactief
onderhoud nodig zijn, RM. Reactief onderhoud is nodig wanneer de machine faalt.
Figuur 14: Capaciteitvermindering
23
Het geïntegreerde model voor een enkele machine wordt hieronder voorgesteld. Merk op dat het model vrij overeenkomstig is met het basis CLSP-model die in paragraaf 3.1 werd uitgelegd. Het eerste deel van de ‘objective function’ is het gedeelte in verband met de productieplanning. Het tweede deel is de toevoeging van de kosten voor het onderhoud.
Objective function: Constraints:
( & ) % & '
! + # $ + ℎ , +
5 ./ 01 + 1 2 34 47 6
1) $ + ,9: − , = <3 4 ∈ @, ∈ A 2 $ ∑C∈D,CE C ! <3 4 ∈ @, ∈ A 3 ∑∈G A $ 4 <3 4 ∈ @
$ , , , ≥ 0; ! ∈ J0,1K <3 4 ∈ @, ∈ A Nieuwe parameters/Variabelen: 1 1
34
(4)
Kost van elke preventieve onderhoudsactiviteit Kost van elke corrigerende onderhoudsactiviteit
Storingsfunctie: :9§, met 4 de failure probability density function, en [4 de cumulatieve functie
− − S6 3T + 4 − 1)τ)T, indien er preventief /
onderhoud in periode t
= − S6 3(T + (4 − 1)τ)T, voor alle andere periodes /
De betekenis van alle andere variabelen en parameters: zie pagina 21 en 22.
Het doel van dit model is, net als in paragraaf 3.1, het minimaliseren van de kosten. Naast de productie- en voorraadkosten, zijn er de extra onderhoudskosten. De restricties zijn bijna identiek
als in deze van het standaard CLSP-model. Enkel de capaciteit, (4), is nu niet gelijk aan de
maximale capaciteit , maar wel de maximale capaciteit vermindert met het verbruik van het hele onderhoudsgebeuren. De betekenis van de integraal in de berekening van de capaciteit zal later in deze scriptie worden verklaard.
24
Om dit model praktisch te kunnen gebruiken in AMPL moet het echter wat herschreven worden: Objective function: ¨
1 +
¨R:
¨©
R(¨9:)©ª:,(«¬
+ ( ∈G
/
-1 2 3T + 4 − − 1) − 1)τ)T 6
!
+ # $ + ℎ , )8
Constraints:
1) $ + ,9: − , = <3 4 ∈ @, (2) $ ≤ - C 8 ! <3 4 ∈ @, C∈D,CE
(3) A $ ≤ (4) <3 4 ∈ @ ∈ G
(3′)
∈A
∈A
= − − S6 3(T + (4 − 1)τ)T /
C(t)
4 = ( − 1) + 1 /
= − 2 3(T + (4 − 1)τ)T 6
( − 1) + 2 ≤ 4 ≤
for 1 ≤ ≤ ® and ( − 1) ≤ 4 ≤ with 4 ≤ . and $ , , ≥ 0; ∈ .; ! ∈ J0,1K
for 1 ≤ ≤ : and ( − 1) ≤ 4 ≤ and ∈ A Dit model bevat een extra parameter n, met als maximum waarde n® . Veronderstel dat: n® =
°. ± . W 4X3
°. ± + 1 otherwise
Deze parameter wordt berekend om het aantal preventieve onderhoudsactiviteiten gedurende de hele planningshorizon te berekenen.
Stel dat we een planningshorizon hebben van 8
tijdseenheden en een preventief onderhoud elke 2 tijdseenheden. Met andere woorden, . is gelijk
aan 8 en is gelijk aan 2. De tijdslijn die hiermee overeenstemt wordt op de volgende pagina
weergegeven. Wanneer n® wordt berekend, dan bekomt men een waarde van 4. Zoals de figuur duidelijk maakt, is dit nu net het aantal preventieve onderhoudsbeurten in de planningshorizon @.
25
Figuur 15: Tijdslijn voor uitleg i.v.m. geïntegreerd model enkele machine
Een verdere analyse van het model zal wat duidelijkheid creëren in de werking van de sommatietekens en de betekenis van de integraal. Het eerste sommatieteken (∑nR: ) behandelt
¨
de preventieve onderhoudscyclus . Men zal telkens met 1 verhogen, tot n gelijk is aan n® , waarbij n® het totaal aantal preventieve onderhoudsactiviteiten is. Telkens als n verhoogt, wordt
er een kost 1 aangerekend, samen met de kosten van corrigerende onderhoudsactiviteiten 1 die
plaats vinden in de periodes tussen de preventieve onderhoudsbeurten. De kostprijs van de corrigerende
activiteiten
worden
berekend
met
behulp
van
het
tweede
sommatie
(∑nM R(¨9:)©ª:,(«¬ ) teken. Die zal per tijdseenheid de kans op een storing berekenen via de storingsfunctie. Het volgende voorbeeld ter verduidelijking:
Figuur 16: Figuur bij berekening kosten
Stel dat . nog steeds gelijk is aan 8 en gelijk is aan 2, zoals hierboven al het geval is. In een eerste
fase zal het model n gelijk stellen aan 1. Hierna worden de kosten berekend voor de
onderhoudsactiviteiten.
1. = 1, = 1r2 = 2 . = 8 i.
ii. iii.
4 = ( − 1) + 1 = (1 − 1)2 + 1 = 1 4 = 2 (sommatie zal t met 1 verhogen)
4 = 3 NIET, want dit is groter dan die 2 is
Eerste sommatie cyclus is afgelopen.
26
2. 2, 2r2 4 . 8 i.
ii. iii.
4 − 1) + 1 = (2 − 1)2 + 1 = 3 4 = 4(sommatie zal t met 1 verhogen)
4 = 5 NIET, want dit is groter dan die 4 is
3. Tweede sommatie cyclus is afgelopen.
Vervolgens geldt dezelfde redenering voor n gelijk aan 3 en 4.
Het eerste sommatieteken zal dus telkens een n waarde genereren en de tweede sommatie
telkens een 4 waarde. Die n en 4 worden op hun beurt dan gebruikt om de tijdsperiode te bepalen
waarvoor de storingskans, met behulp van de integraal, wordt berekend. Hoe de integraal werkt, wordt hieronder verklaard. Er wordt hier verder gewerkt met hetzelfde voorbeeld als in het voorgaande gedeelte, met . en
gelijk aan 8 en 2 respectievelijk. De leeftijd van de machine wordt als gevolg van het ‘as-good-asnew’ principe telkens terug op nul gezet na preventief onderhoud. Dit heeft gevolgen voor de waarde van de storingsfunctie die moet gebruikt worden. Die waarde moet namelijk refereren naar de periode waarin de machine zit volgens de leeftijd van de machine, en niet naar de werkelijke periode. Een klein voorbeeldje zal dit meteen duidelijker maken. Veronderstel dat de machine zal starten met de productie voor de derde periode. Figuur 16 toont aan dat er in het begin van die periode preventief onderhoud is uitgevoerd. Indien het model gewoon 34 zou gebruiken, dan zou
het model als waarde voor de storingsfunctie de waarde nemen van de periode waarin men zit. In dit geval zou dit dus 33 zijn. Echter, het preventief onderhoud reset de leeftijd van de machine.
Dit betekent dat het model in realiteit de waarde van de storingsfunctie in de eerste periode moet
gebruiken, namelijk 31). Het is dus van groot belang dat het model de correcte waarde voor de storingsfunctie benut. Dit is de reden waarom 4, n en betrokken worden in de integraal.
Veronderstel dat n gelijk is aan 2. Met andere woorden, de periode na het tweede preventief
onderhoud, periode 3. Wil men nu de kosten van de corrigerende onderhoudsactiviteiten weten in
die tijdsspan van nV , periode 3 en 4, dan moet voor elke tijdseenheid de kans op storing berekend worden. Dit komt overeen met de oppervlakte onder de storingsfunctie. Aangezien na elk
preventief onderhoud het systeem terug in een nieuwe staat is, moeten de limieten waartussen de oppervlakte wordt berekend, worden aangepast naar de limieten op tijdsstip 0 en verder. Op de volgende pagina wordt de formule of integraal ingevuld.
27
/
2 3(T + (4 − ( − 1) − 1)τT 6
/
µ<<3 4 3: 2 3 T + 3 − 2 ; 1)2 ; 1)τT 6
/
/
2 3T + 0τT 2 3TT /
6
6
µ<<3 4 4: 2 3T " 4 ; 2 ; 1)2 ; 1)τT 6
/
2 3T + 1τdu 6
V/
2 3bb 4 b T + τ en dv du /
Zoals te zien is, zal de integraal in het model niet de werkelijke periode nemen, maar de periode gerelateerd aan de leeftijd van de machine. Dit zorgt ervoor dat telkens de correcte waarde van de storingsfunctie gebruikt wordt. Onderstaande figuur geeft een mogelijke storingsfunctie weer. Aangezien er om de twee periodes preventief onderhoud is, zal de storingsfunctie repetitief zijn per twee periodes. De kans op storings zal tussen periode 0 en 1 gelijk zijn als deze tussen periode 2 en 3, of 4 en 5, enzovoort. Hetzelfde kan gezegd worden voor de periodes tussen 1 en 2, 3 en 4, ….
Figuur 17: Storingsfunctie – integraal
In dit hoofdstuk werd het geïntegreerd model voor de enkele machine en de werking ervan besproken. De volgende stap is het testen en controleren van het model aan de hand van een voorbeeld. De volgende paragraaf zal een voorbeeld uitwerken en vervolgens beschrijven hoe het model geïmplementeerd wordt in software om het geïntegreerd planningsprobleem snel te kunnen oplossen. 28
3.3 Implementatie van het model in AMPL Na de beschrijving van het model voor een geïntegreerde productie- en onderhoudsplanning, is de volgende stap het testen van het model. De software die hiervoor gebruikt zal worden is AMPL. Dit is een zeer krachtig en uitgebreid modelleringssoftwarepakket, bedoeld om lineaire en non-lineaire optimalisatieproblemen op te lossen. AMPL maakt hiervoor gebruik van een ‘solver’, in dit geval CPLEX. AMPL is in feite de modelleerstaal en de interface met de solver. Deze laatste vindt automatisch de optimale waarden van enkele variabelen (decision variables) wanneer de parameters vastliggen. Wat er juist geoptimaliseerd moet worden is afhankelijk van de ‘objective function’. De solver verzekert dat deze optimale waarden voldoen aan bepaalde restricties (constraints).
AMPL maakt gebruik van drie bestandjes. Het belangrijkste bestand is de .mod-file. Dit bevat het volledige model. Vervolgens is er nog een .dat-file die de waardes van de parameters bevat. Tot slot heeft men nog nood aan een .run-file die nodig is om het programma op te roepen en het uiteindelijke resultaat te presenteren. Hieronder wordt de .mod-file toegelicht. Vervolgens wordt een testvoorbeeld besproken waarvan de uitkomst kan geverifieerd worden met behulp van de paper ‘An integrated production and preventive maintenance planning model’. Alle volledige bestanden kan men in bijlage vinden.
3.3.1 Presentatie .mod-file AMPL 3.3.1.1 Declareren van de parameters en de variabelen De eerste stap in dit programma is het declareren van de variabelen en de parameters. Deze zijn afhankelijk van twee factoren, namelijk de tijdsperiode en het type product. De factoren worden bepaald in twee sets, PERIOD en ITEM. Vervolgens worden alle parameters gedeclareerd. Deze kunnen afhankelijk zijn van één van de twee sets of van alle twee de sets tegelijkertijd. De waardes van de parameters moeten op voorhand door middel van de .dat-file opgegeven worden. De betekenis van alle parameters wordt hieronder weergeven, alsook hun link naar het model uit paragraaf 3.2. AMPL param vastekost{t in PERIOD, i in ITEM} param varkost{t in PERIOD, i in ITEM} param holdkost{t in PERIOD, i in ITEM}
Theoretisch Model
#
ℎ
Beschrijving Vaste kost om item i te produceren in periode t Variabele kost om item i te produceren in periode t Variabele voorraadkost van 1 unit van item i periode t 29
param vraag{t in PERIOD, i in ITEM}
param cap_max > 0 integer
C
param big_M
C∈D,CE
param l_r > 0 integer
param l_p > 0 integer
1 1 n®
param prev kost > 0 integer param corr_kost > 0 integer param aantal_PM > 0 integer param frequentie_PM > 0 integer
/
k
2 3TT
param storingsfunctie{t in PERIOD}
6
Gevraagde hoeveelheid van item i in periode t Maximale capaciteit Bovengrens van de productiehoeveelheid van item i in periode t Verbruik capaciteit o.w.v. reactief onderhoud Verbruik capaciteit o.w.v. preventief onderhoud Kost voor preventief onderhoud Kost voor reactief onderhoud . Parameter voor lengte van onderhoudscyclus Storingsfunctie
Tabel 1: Parameters AMPL geïntegreerd model voor enkele machine
Naast de parameters bevat het model uiteraard nog variabelen. Dit zijn de onbekenden waarvan het model de optimale waarden zal berekenen om zo tot een optimale oplossing te komen. In het model zijn er drie variabelen.
Theoretisch Model
AMPL var productie_aantal{t in PERIOD, i in ITEM} >= 0 integer var voorraad_aantal{t in PERIOD, i in ITEM} >= 0 integer var item_in_periode{t in PERIOD, i in ITEM} binary
$ ,
!
Beschrijving Variabele productie hoeveelheid van item i in periode t Variabele voorraad hoeveelheid van item i in periode t Binaire variabele van de productie, ter bepaling van de vaste kosten
Tabel 2: Variabelen AMPL geïntegreerd model voor enkele machine
Er is nog één parameter die nog niet gedeclareerd is, namelijk de capaciteit. Deze parameter is afhankelijk van de periode en is daarnaast ook afhankelijk van het onderhoudsbeleid en andere parameters. De berekening van deze parameter in AMPL is als volgt: param capaciteit {t in PERIOD}:= cap_max + (if exists {n in 1..aantal_PM} t = (n-1)*frequentie_PM + 1 then - l_p) - l_r*storingsfunctie[ if t - floor(t/frequentie_PM)*frequentie_PM <> 0 then t - floor(t/frequentie_PM)*frequentie_PM else frequentie_PM];
30
Dit vergt wat meer uitleg. De capaciteit C(t) wordt berekend door de maximale capaciteit te verminderen met het capaciteitsverlies van de reactieve en de eventuele preventieve onderhoudsactiviteiten, zoals voorgesteld in het theoretische model op pagina 24. Voor elke periode wordt eerst nagegaan of er preventief onderhoud plaats vindt. Dit kan men testen door te
verifiëren of er een n bestaat waarvoor geldt dat 4 − 1) + 1. Indien er zo’n n bestaat, dan
moet men aftrekken van de maximale capaciteit. In de AMPL formulering is dit terug te vinden
in de tweede regel van het commando op vorige pagina. Het capaciteitsverlies omwille van het reactieve onderhoud komt voor in elke periode. Het probleem zit hem in het feit dat het model de juiste waarde voor de storingsfunctie moet nemen. Vooraleer dit echter kan worden besproken,
moet eerst de werking van de storingsfunctie verklaard worden. In het model zijn de storingsfuncties integralen. In het AMPL model zal de waarde van de storingsfunctie voor elke periode op voorhand worden berekend. Deze waardes worden dan in de .dat-file gestoken. Wat de invloed van deze storingsfunctie op model is, zal verder in deze scriptie verklaard worden. Hiervoor wordt verwezen naar paragraaf 5.2. In het testvoorbeeld dat in de volgende paragraaf wordt uitgevoerd, wordt gebruik gemaakt van volgende waarden voor de storingsfunctie: stel dat de machines onderhevig zijn aan random storingen volgens een Gamma distributie met een shape en een rate parameter van 2. De verwachte hoeveelheid storingen in functie van de leeftijd van de machine wordt dan in onderstaande tabel weergegeven (Aghezzaf et al, 2008). Leeftijd machine Verwachte aantal storingen t = 1: [0,1»[ 0.901 t = 2: [1»,2»[ 1.489 t = 3: [2»,3»[ 1.664 t = 4: [3»,4»[ 1.789 t = 5: [4»,5»[ 1.799 t = 6: [5»,6»[ 1.833 t = 7: [6»,7»[ 1.857 t = 8: [7»,8»[ 1.875 Tabel 3: Storingsfunctie testvoorbeeld (Gamma)
De storingsfunctie is nu bepaald. Deze waarden worden gebruikt in het derde deel van de berekening van de capaciteit. Het eerste deel was de maximale capaciteit, het tweede het capaciteitsverlies omwille van preventief onderhoud. Het derde deel is het capaciteitsverlies van de reactieve onderhoudsactiviteiten. Om de code voor de berekening van dit derde deel beter te begrijpen, zal er verder gewerkt worden aan de hand van een voorbeeld.
31
Veronderstel dat het systeem opnieuw een tijdshorizon heeft van 8 periodes, . is dus 8. Verder
wordt er gewerkt met een onderhoudsbeleid waarin de onderhoudscyclus gelijk is aan 4τ, is 4. Er
zal dus een preventief onderhoud gebeuren in het begin van de eerste en de vijfde periode. Aangezien preventief onderhoud de machine terug brengt in een ‘as-good-as-new’ staat, wordt de
leeftijd van de machine in principe terug op nul gezet. In dat geval moet het model voor die periodes waarin preventief onderhoud wordt uitgevoerd, als waarde voor de storingsfunctie niet de waarde van de effectieve periode nemen, maar de waarde horende bij periode 1. Men kan stellen dat preventief onderhoud de t in de capaciteitsberekening als het ware reset. De daarop volgende periode waar er weliswaar geen preventief onderhoud is, zal als leeftijd in periode 2 zitten, enzovoort. Onderstaande figuur geeft dit grafisch weer.
Figuur 18: Preventief onderhoud en de storingsfunctie
Om dit in AMPL op een eenvoudige manier te implementeren wordt het verband gezocht tussen de effectieve periode t en de waarde nodig voor de storingsfunctie. Het verband is als volgt: 4 − °4 ± ¼ 0, 4+ 4Cn½ 4 ; °4 ±, W 4Cn½
Dit verband wordt als volgt toegepast voor het voorbeeld (figuur 18): • • • • • • • •
µ<<3 4 1: 1 ; ¾14¿4 ¼ 0, 4+ 4Cn½ 1
µ<<3 4 2: 2 ; ¾24¿4 ¼ 0, 4+ 4Cn½ 2 µ<<3 4 3: 3 ; ¾34¿4 ¼ 0, 4+ 4Cn½ 3
µ<<3 4 4: 4 ; ¾44¿4 0, 4+ 4Cn½ 4 µ<<3 4 5: 5 ; °54±4 ¼ 0, 4+ 4Cn½ 1
µ<<3 4 6: 6 ; ¾64¿4 ¼ 0, 4+ 4Cn½ 2
µ<<3 4 7: 7 ; ¾74¿4 ¼ 0, 4+ 4Cn½ 3
µ<<3 4 8: 8 ; ¾84¿4 0, 4+ 4Cn½ 4
32
Het afronden naar beneden wordt in AMPL uitgevoerd door het commando ‘FLOOR’. Het volledige commando om het bovenstaande verband te implementeren en er voor te zorgen dat AMPL de juiste waarde neemt van de storingsfunctie is het volgende: if t - floor(t/frequentie_PM)*frequentie_PM <> 0 then t - floor(t/frequentie_PM)*frequentie_PM else frequentie_PM Nu de parameters en variabelen gedeclareerd zijn, is de volgende stap de ‘objective function’ en de restricties invoeren in de .mod-file.
3.3.1.2 Objective function en constraints in AMPL De ‘objective function’ van het geïntegreerde model is het minimaliseren van de kosten ten gevolge van de productie en het onderhoud. Het theoretische model kan men gemakkelijk terugvinden in het commando van AMPL. minimize kosten: sum{n in 1..aantal_PM}(prev_kost + sum{t in PERIOD intersect ((n-1)*frequentie_PM+1 ..n*frequentie_PM)}(corr_kost*storingsfunctie[1 + t-(n-1)*frequentie_PM-1] + sum{i in ITEM}(vastekost[t,i]*item_in_periode[t,i] + varkost[t,i]*productie_aantal[t,i] + holdkost[t,i]*voorraad_aantal[t,i])));
Er zijn nog twee overige functies in het gedeelte van de ‘objective function’ toegevoegd, namelijk het minimaliseren van de totale productiekosten en de totale onderhoudskosten. Deze twee extra functies zijn toegevoegd om de productie- en onderhoudskosten apart te kunnen berekenen. Ze hebben geen effect op het resultaat, aangezien de twee functies een gedeelte van de werkelijke ‘objective function’ zijn.
Vervolgens worden de restricties in AMPL geprogrammeerd. Er zijn in het theoretische model drie restricties, maar in AMPL zal er één extra nodig zijn. De drie restricties zijn de volgende: subject to constraint1{i in ITEM, t in PERIOD: t<>1}: productie_aantal[t,i] + voorraad_aantal[t-1,i] - voorraad_aantal[t,i] = vraag[t,i]; subject to constraint2{t in PERIOD, i in ITEM}: productie_aantal[t,i] <= big_M * item_in_periode[t,i]; subject to constraint3{t in PERIOD}: sum{i in ITEM}(productie_aantal[t,i]) <= capaciteit[t]; 33
De waarde van de capaciteit[t] wordt berekend zoals uitgelegd in vorige paragraaf. Het probleem zit echter in de eerste restrictie. De tweede term, voorraad_aantal[t-1,i], bevat een koppeling naar de vorige periode. Wanneer men echter in periode één zit, dan kan men niet terugkoppelen naar de vorige periode, aangezien die niet bestaat. Om dit op te lossen wordt er een extra restrictie toegevoegd die enkel voor periode één geldig is. subject to constraint0{i in ITEM}: productie_aantal[1,i] - voorraad_aantal[1,i] = vraag[1,i];
3.3.2 Presentatie en controle van een testvoorbeeld De paper ‘Integrated production planning and preventive maintenance in deteriorating production systems’ (aghezzaf et al, 2008), maakt gebruik van hetzelfde basismodel als deze scriptie en bevat een uitgewerkt voorbeeld. Dit voorbeeld kan gebruikt worden om de capaciteitsberekeningen samen met de onderhoudskosten van de machine te controleren. Daarnaast zal de oplossing ook manueel berekend worden.
Veronderstel dat de productie bestaat uit een enkele machine, waarbij de tijdshorizon 8 periodes bedraagt. De machine heeft een maximale capaciteit van 15 per periode. Er moeten twee producten geproduceerd worden. Het doel is het onderhoudsbeleid te bepalen en het daarbij horende optimale productieplan genereren dat de laagste kosten met zich meebrengt. De vaste productiekosten of set-up kosten (
) zijn
voor beide producten 25, de variabele productiekosten
(# ) 5 en de voorraadkosten (+ ) zijn voor beiden 2. De kosten van het onderhoud zijn 40 voor de
preventieve (1 ) en 35 voor de reactieve (1 ) activiteiten. Het capaciteitsverlies omwille van het
onderhoud moet ook in rekening worden gebracht. Voor preventief onderhoud komt dit verlies op 1 ( ), terwijl het voor het reactief onderhoud 5 ( ) bedraagt. Tot slot worden de storingsdata
gegeven in tabel 5. Dit is dezelfde gamma distributie als pagina 35, met vorm en rate parameter gelijk aan 2. De vraag voor beide producten per periode wordt gegeven in tabel 6. Leeftijd Machine Verwachte aantal storingen t = 1: [0, 1»[ 0,901 t = 2: [1»,2»[ 1,489 t = 3: [2»,3»[ 1,664 t = 4: [3»,4»[ 1,789 t = 5: [4»,5»[ 1,799 t = 6: [5»,6»[ 1,833 t = 7: [6»,7»[ 1,857 t = 8: [7»,8»[ 1,875 Tabel 5: Storingsfunctie testvoorbeeld
Periode Vraag product 1 Vraag product 2 1 2 3 2 3 2 3 2 3 4 3 2 5 2 3 6 3 2 7 2 3 8 3 2 Tabel 4: Vraag testvoorbeeld
34
Door het probleem op te lossen voor een variërende onderhoudscyclus kan men het optimale
onderhoudsbeleid bepalen. De onderhoudscyclus kan men variëren door de waarde van telkens
met één te verhogen, waarbij gestart wordt met k gelijk aan 1. De bovenste limiet is gelijk aan 8, aangezien de planningshorizon 8τ is. De onderstaande tabel toont de capaciteit voor elke periode en alle kosten voor de verschillende waardes van . Wat de kosten betreft, kan men besluiten dat het beste onderhoudsbeleid
gevonden wordt voor een met waarde 5. Met andere woorden, het preventief onderhoud moet
om de 5 perioden uitgevoerd worden. De totale kost is dan namelijk het laagste. De laagste productiekosten vindt men voor gelijk aan 1 en de laagste onderhoudskosten voor een gelijk
aan 4.
Periode 1 2 3 4 5 6 7 8
Beschikbare capaciteit in functie van T = k τ k=1 k=2 k=3 k=4 9,495 9,495 9,495 9,495 9,495 7,555 7,555 7,555 9,495 9,495 6,680 6,680 9,495 7,555 9,495 6,255 9,495 9,495 7,555 9,495 9,495 7,555 6,680 7,555 9,495 9,495 9,495 6,680 9,495 7,555 7,555 6,255
Productie433 kosten Onderhouds572,39 kosten Totale kosten 1005,39
k=5 9,495 7,555 6,680 6,255 6,005 9,495 7,555 6,680
k=6 9,495 7,555 6,680 6,255 6,005 5,835 9,495 7,555
k=7 9,495 7,555 6,680 6,255 6,005 5,835 5,715 9,495
k=8 9,495 7,555 6,680 6,255 6,005 5,835 5,715 5,625
439
446
443
437
450
450
450
494,6
487,46
486,21
487,97
493,875
506,755
500,845
933,6
933,46
929,21
924,97
943,875
956,755
950,845
Tabel 6: Capaciteit en kosten testvoorbeeld
3.3.2.1 Controle capaciteit De berekening van de capaciteit is uiteraard afhankelijk van het onderhoudsbeleid. Voor een beleid
met gelijk aan 1 bekomt men een onderhoudscyclus T van 1τ. Dit betekent dat er in elke periode
preventief onderhoud wordt uitgevoerd. Aangezien de leeftijd van de machine dan terug op nul gezet wordt, gebruikt men voor elke periode dezelfde eerste waarde van de storingsfunctie. De berekening is voor alle perioden als volgt:
4) ; ; S6 3T + 4 ; 1)τ)T /
= 15 − 1 − 5 ∗ 0,901 = 9,495
Indien het onderhoudsbeleid verhoogd wordt naar een cyclus van 2τ ( =2), dan zal men preventief onderhoud uitvoeren om de twee periodes. De capaciteit zal dus cyclisch zijn. De berekening van 35
de capaciteit voor de eerste periode blijft opnieuw 9,495. Aangezien er in de tweede periode geen preventief onderhoud is, verandert de berekening. De leeftijd van de machine zal tussen [1τ,2τ[ liggen. Als storingsfunctiewaarde moet dus 1,489 ingevuld worden:
4) ; S6 3T + 4 ; 1)τ)T /
= 15 − 5 ∗ 1,489 7,555
Deze werkwijze kan doorgetrokken worden naar de overige waarden voor . Tot slot nog even de
berekening voor gelijk aan 3. De eerste en tweede periode zijn gelijk aan die van met waarde 2.
Voor de derde periode wordt er echter nog steeds geen preventief onderhoud uitgevoerd en moet men de storingsfunctie nemen voor [2τ,3τ[ :
4) ; S6 3T + 4 ; 1)τ)T /
= 15 − 5 ∗ 1,664 = 6.680
3.3.2.2 Controle kosten De kosten kunnen op eenvoudige wijze nagerekend worden, indien men de productieplanning weet. In dit gedeelte gaan we de kosten narekenen voor het optimale onderhoudsbeleid, namelijk
voor gelijk aan 5. Tabel 7 geeft de productieplanning en het voorraadniveau weer voor alle
periodes. Deze waardes worden gegenereerd door AMPL.
Periode 1 2 3 4 5 6 7 8
Productie Aantal Voorraad Aantal product 1 Product 2 product 1 Product 2 6 3 4 0 0 7 1 5 6 0 5 2 0 0 2 0 0 5 0 2 8 0 5 0 0 5 3 2 0 0 0 0 Tabel 7: Productieplanning testvoorbeeld
De kosten voor de productie worden berekend volgens de volgende formule: ÃÄÅÆÇÈÉÊËÌÅÍÉËÎ ( & ) % & '
!
+ # $ + + , )
25 ∗ ! + 5 ∗ $ + 2 ∗ , ) ( & ) % & '
25 + 5 ∗ 6 + 2 ∗ 4 + 25 + 5 ∗ 3 + 2 ∗ 0 " 2 ∗ 1) 36
+25 + 5 ∗ 7 + 2 ∗ 5 + 25 + 5 ∗ 6 + 2 ∗ 5 + 2 ∗ 2 + 2 ∗ 2 +25 + 5 ∗ 5 + 2 ∗ 2 + 25 + 5 ∗ 8 + 2 ∗ 5 + 5 ∗ 3
+25 + 5 ∗ 5 + 2 ∗ 2
437
Dit komt overeen met de waarde uit tabel 6 op pagina 35. De productiekosten zijn correct berekend door het model. De kosten voor het onderhoud kunnen ook eenvoudig nagerekend worden. Men moet wel opletten dat de correcte waarde voor de storingsfunctie gebruikt wordt. De berekening gaat als volgt: •
X <3T: ¨
1 +
¨R:
•
40 +
¨R:
•
R(¨9:)©ª:,(«¬
,XbT <3T: V
¨©
¨∗Ï
R(¨9:)∗Ϫ:,(«¬
µ<<3 1: 40
4 = 1: 35 ∗ 0,901 4 = 2: 35 ∗ 1,489
4 3: 35 ∗ 1,664
4 = 4: 35 ∗ 1,749
•
4 = 5: 35 ∗ 1,799
µ<<3 = 2: 40
4 = 6: 35 ∗ 0,901 4 = 7: 35 ∗ 1,489
•
4 8: 35 ∗ 1,664
/
01 2 3(T + (4 − ( − 1) − 1)τ)T7 6
/
035 2 3(T + (4 − ( − 1) ∗ 5 − 1)τ)T7 6
266,07
141,89
ÐÅÉÑÒË ÅÎÆËÄÓÅÇÆÍÌÅÍÉ = 40 + 266,07 + 40 + 141,89 487,97
Conclusie: Het AMPL model in staat is om de optimale oplossing te genereren en de juiste berekeningen van de kosten uit te voeren. De AMPL bestanden van het bovenstaande voorbeeld ( 5 kan men terugvinden in bijlage 2. Het geïntegreerde model voor de enkele machine is in
dit hoofdstuk voorgesteld en getest. De volgende stap in deze scriptie is het opstellen van de uitbreiding van het model naar een systeem met parallelle machines.
37
4 Model voor parallelle machines Het basismodel dat voorgesteld is in het vorige hoofdstuk, is enkel bruikbaar in een situatie met één machine. In een productieomgeving is deze situatie echter vrij uitzonderlijk, aangezien een productieproces vaak uit verschillende machines bestaat. De toestellen kunnen in serie, parallel of in een combinatie van beiden met elkaar verbonden zijn. In deze paragraaf zal een geïntegreerd model gepresenteerd worden voor meerdere parallelle machines, elk met hun eigen productie- en onderhoudsparameters. Figuur 19 toont een systeem met parallelle machines.
Machine 1
Machine 2 Input
Output ...
Machine M Figuur 19: Schema parallelle machines
4.1 Basis CLSP-model voor parallelle machines Net zoals in het vorige hoofdstuk zal ook hier gestart worden met het basis CLSP-model, voorgesteld in paragraaf 3.1. De uitbreiding naar meerdere parallelle machines zal een extra factor voor verschillende parameters en variabelen met zich meebrengen. Naast de afhankelijkheid van het type product en de periode, zal nu ook de machine een rol spelen. Dit is onder andere het geval voor de vaste en variabele kosten, de productiehoeveelheid en de binaire variabele. De hoeveelheid in de voorraad is dan weer niet afhankelijk van de machine, aangezien het om de totale voorraad gaat. Het ‘capacitated Lot Sizing model’ wordt hieronder voorgesteld (Drexl and Kimms, 1997).
38
Objective Function: & * & ) & '
Constraints:
!
+ # $ ) + + , ) & ) & '
1) $ + ,,9: − , = ∀ ϵ M, 4 ϵ H, i ϵ P & *
(2) $ ≤ ! ∀ ϵ M, 4 ϵ H, i ϵ P (3) A $ ≤ (4) ∀ ϵ M, 4 ϵ H, i ϵ P & '
$ , , ≥ 0; ! ϵ J0,1K
Aangepaste Parameters/Variabelen: M
# $ !
A
De verzameling van alle machines Vaste kost om item i te produceren op machine m in periode t Variabele kost om item i te produceren op machine m in periode t Productiehoeveelheid van item i op machine m in periode t 1 als item i wordt geproduceerd op machine m in periode t 0 anders Procestijd of andere resource van item i op machine m
Indien er slechts 1 machine is, dan zal dit model uiteraard dezelfde oplossing genereren als het basis CLSP-model. De volgende stap is het geïntegreerde model uitbreiden voor parallelle machines.
4.2 Geïntegreerde model voor parallelle machines De onderhoudsactiviteiten van een parallel productiesysteem zullen verschillend zijn voor de machines. Het onderhoudsbeleid wordt namelijk per machine bekeken en is afhankelijk van verschillende factoren zoals leeftijd, gebruik en type machine. Voor nieuwe machines zal er wellicht heel wat minder preventief onderhoud nodig zijn dan voor oudere machines. Het kan voorvallen dat men gebruik maakt van toestellen van verschillende constructeurs, vandaar de afhankelijkheid van het type machine. Om rekening te houden met al deze factoren, zal men in dit model de preventieve onderhoudscyclus per machine kunnen ingeven, naargelang het onderhoudsbeleid. Daarnaast zijn er meerdere parameters die afhankelijk zijn van de machine. Dit is onder andere het geval voor de onderhoudskosten, de maximale capaciteit, de storingsfunctie en alle andere elementen die te maken hebben met het onderhoud. Het onderstaande model toont 39
het geïntegreerde model voor parallelle machines. Merk op dat het model sterk overeenkomt met het geïntegreerd model voor de enkele machine in paragraaf 3.2. Merk op dat het eerste deel van dit model identiek is aan het uitgebreide CLSP-model van vorige pagina. Objective function: & * ( & ) % & '
+ -
Constraints:
& *
!
+ # $ ) + + , ) ( & ) % & '
./ 01 + 1 2 3 4) 478 6 5
1) ∑ & * $ + ,9: − , = <3 ϵ M, 4 ∈ @, ∈ A
2 $ ∑C∈D,CE C ! <3 ϵ M, 4 ∈ @, ∈ A 3 ∑∈G A $ 4 <3 ϵ M, 4 ∈ @
$ , , , ≥ 0; ! ∈ J0,1K <3 ϵ M, 4 ∈ @, ∈ A
Aangepaste parameters/Variables: M
1 1
De verzameling van alle parallelle machines Onderhoudscyclus van machine m Kost van elke preventieve onderhoudsactiviteit voor machine m Kost van elke corrigerende onderhoudsactiviteit voor machine m
3 4) Storingsfunctie: :9§), met 4) de failure probability density function,
(4)
)
en [4) de cumulatieve functie, afhankelijk van de machine m
; ; S6 3 T + 4 ; 1)τ)T, indien er preventief /
onderhoud in periode t
= − S6 3 (T + (4 − 1)τ)T, voor alle andere periodes /
Capaciteitsverbruik omwille van preventief onderhoud op machine m Capaciteitsverbruik omwille van reactief onderhoud op machine m
Maximale capaciteit van machine m
Mocht men in het bedrijf voor alle machines hetzelfde onderhoudsbeleid voeren, wat overeen komt met dezelfde preventieve onderhoudscyclus , dan haalt men
./ uit de sommatie.
40
Wanneer dit
model nu wordt herschreven in overeenkomst met het praktische model van
paragraaf 3.2, dan bekomt men het model op volgende pagina. Deze aanpassing is nodig om het model te kunnen implementeren in AMPL. Objective function: ¨ Ô
1 +
& * nR:
¨©Ô
R(¨9:)©Ô ª:,(«¬
+ ( ∈G
!
/
-1 2 3 T + 4 ; ; 1) − 1)τ)T 6
+ # $ )8 + (ℎ , ) ∈ D ∈ G
Constraints:
1) ∑ & * $ + ,9: − , = <3 ϵ M, 4 ∈ @, ∈ A
(2) $ ≤ ∑C∈D,CE C ! <3 ϵ M, 4 ∈ @, ∈ A (3) A $ ≤ (4) <3 ϵ M, 4 ∈ @ ∈G
3′ 4
= − − S6 3 (T + (4 − 1)τ)T /
4 = ( − 1) + 1 /
= − 2 3 (T + (4 − 1)τ)T 6
( − 1) + 2 ≤ 4 ≤
for 1 ≤ ≤ ® and ( − 1) ≤ 4 ≤ with 4 ≤ . and $ , , , ≥ 0; ∈ .; ! ∈ J0,1K
for 1 ≤ ≤ ® and ( − 1) ≤ 4 ≤ and ∈ A Aangepaste parameters/Variables: n® Õ
kÕ
Aantal preventieve onderhoudsbeurten in de tijdshorizon voor machine m k afhankelijk van machine m
De grootste aanpassing in vergelijking met het model voor een enkele machine is de opsplitsing van de voorraadkosten. Het is namelijk onwaarschijnlijk dat een bedrijf een aparte voorraad heeft voor elke machine, maar wel één gezamenlijke voorraad. Hierboven werd de uitbreiding van het geïntegreerd model voor parallelle machines voorgesteld. De volgende stap is het model in AMPL implementeren en testen.
41
4.3 Implementatie van het parallel model in AMPL Het model voor parallelle machines bevat parameters en variabelen die afhankelijk zijn van drie factoren. Om zo’n grote problemen op te lossen zal ook hier gebruik gemaakt worden van de AMPL software met de CPLEX solver. In deze paragraaf zal opnieuw de .mod file kort geanalyseerd worden om de werking en de programmeertaal van AMPL wat te verduidelijken.
Het AMPL model is grotendeels identiek aan het model voor de enkele machine. Naast de twee factoren die ook terug te vinden zijn in het single machine model, namelijk de tijdsperiode en de productkeuze, is er hier een derde factor aanwezig, de machine. Er zullen met andere woorden drie sets nodig zijn in AMPL: MACHINE, PERIOD en ITEM. De parameters en variabelen zijn dezelfde als het model voor de enkele machine, op de afhankelijkheid van de set MACHINE na. De onderstaande tabel geeft ze nog eens allemaal weer.
AMPL param vastekost{m in MACHINE, t in PERIOD, i in ITEM}
Theoretisch Model
#
param varkost{m in MACHINE, t in PERIOD, i in ITEM}
+
param holdkost{t in PERIOD, i in ITEM}
param vraag{t in PERIOD, i in ITEM}
param cap_max > 0 integer param big_M
C
C∈D,CE
param l_r {m in MACHINE} > 0 integer
param l_p{m in MACHINE} > 0 integer
1
param prev kost {m in MACHINE} > 0 integer
1
param corr_kost {m in MACHINE} > 0 integer param aantal_PM {m in MACHINE} > 0 integer param frequentie_PM {m in MACHINE} > 0 integer param storingsfunctie{m in MACHINE, t in PERIOD} var productie_aantal{m in MACHINE, t in PERIOD, i in ITEM} >= 0 integer
n® /
k
2 3 T)T 6
$
Beschrijving Vaste kost om item i te produceren in periode t op machine m Variabele kost om item i te produceren in periode t op machine m Variabele voorraadkost van 1 unit van item i periode t Gevraagde hoeveelheid van item i in periode t Maximale capaciteit Bovengrens van de productiehoeveelheid van item i in periode t Verbruik capaciteit o.w.v. reactief onderhoud op machine m Verbruik capaciteit o.w.v. preventief onderhoud op machine m Kost voor preventief onderhoud op machine m Kost voor reactief onderhoud op machine m . , afhankelijk van machine m Parameter voor lengte van onderhoudscyclus Storingsfunctie van machine m Variabele productie hoeveelheid item i in periode t op machine m 42
var voorraad_aantal{t in PERIOD, i in ITEM} >= 0 integer var item_in_periode{m in MACHINE , t in PERIOD, i in ITEM} binary
,
!
Variabele voorraad hoeveelheid van item i in periode t op machine m Binaire variabele van de productie, ter bepaling van de vaste kosten
Tabel 8: Parameters en variabelen voor de parallelle uitbreiding
De formule voor de capaciteit, zoals beschreven in paragraaf 3.3.1.1, blijft geldig, mits de toevoeging van de afhankelijkheid van de machine voor sommige elementen in de formule. De bepaling van de capaciteit is dan als volgt: param capaciteit {m in MACHINE, t in PERIOD}:= cap_max[m] + (if exists {n in 1..aantal_PM[m]} t = (n-1)*frequentie_PM[m] + 1 then - l_p[m]) - l_r[m]*storingsfunctie[m, if t - floor(t/frequentie_PM[m])*frequentie_PM[m] <> 0 then t - floor(t/frequentie_PM[m])*frequentie_PM[m] else frequentie_PM[m]]; De ‘objective function’ en de restricties van het parallelle model zijn in overeenstemming met het model voor de enkele machine. Merk op dat ook hier het gedeelte van de voorraadkosten opgesplitst wordt van de andere productiekosten, aangezien deze kost niet afhankelijk is van de machine. minimize kosten: sum{m in MACHINE,n in 1..aantal_PM[m]}(prev_kost[m] + sum{t in PERIOD intersect ((n1)*frequentie_PM[m]+1..n*frequentie_PM[m])}(corr_kost[m]* storingsfunctie[m, 1 + t-(n-1)*frequentie_PM[m]-1]+ sum{i in ITEM} (vastekost[m,t,i]* item_in_periode[m,t,i] +varkost[m,t,i]*productie_aantal[m,t,i]))) + sum{t in PERIOD, i in ITEM}(holdkost[t,i]*voorraad_aantal[t,i]); subject to constraint0{i in ITEM}: sum{m in MACHINE}(productie_aantal[m,1,i]) - voorraad_aantal[1,i] = vraag[1,i]; subject to constraint1{i in ITEM, t in PERIOD: t<>1}: sum{m in MACHINE}(productie_aantal[m,t,i]) + voorraad_aantal[t-1,i] - voorraad_aantal[t,i]= vraag[t,i]; subject to constraint2{m in MACHINE, t in PERIOD, i in ITEM}: productie_aantal[m,t,i] <= big_M * item_in_periode[m,t,i]; subject to constraint3{m in MACHINE,t in PERIOD}: sum{i in ITEM}(productie_aantal[m,t,i]) <= capaciteit[m,t];
43
De controle van de kosten en de capaciteit gebeurt op dezelfde manier als bij het single machine model. Men weet voor alle parallelle machines het onderhoudsbeleid en alle andere parameters. Zodoende kan men alle machines apart beschouwen en de controle berekeningen voor elke machine uitvoeren. Door alle overeenstemmende waarden van de verschillende machines op te tellen, zal men de totale kosten of capaciteit bekomen. Aangezien dit analoog is aan de controleberekeningen van het geïntegreerde model voor de enkele machine, paragraaf 3.3.2, werd deze controle voor de parallelle machine niet uitgeschreven in deze scriptie.
44
5 Wijzigingen aan het model voor een enkele machine Het model voor de enkele machine dat gepresenteerd werd in hoofdstuk 3 kan nog wat aangepast worden om de realiteit nog meer te benaderen. In dit hoofdstuk zullen twee verbeteringen worden voorgesteld. Een eerste aanpassing zal effect hebben op de berekening van het onderhoud van de machine. De tweede verbetering zal handelen over de storingsfunctie die gebruikt wordt in het model.
5.1 Aanpassing berekening onderhoudskosten Het berekenen van de onderhoudskosten is niet volledig conform met de realiteit. Om die reden zal het model aangepast worden om een meer correcte oplossing te genereren. Hieronder volgt eerst een beschrijving van de aanpassing die uitgevoerd werd. Daarna zal het model met behulp van AMPL vergeleken worden met het originele model voor de enkele machine, om het effect van de aanpassing te kunnen waarnemen.
5.1.1 Theoretische aanpassing ten gevolge van de onderhoudskosten In paragraaf 3.3.2.2 werden de onderhoudskosten van het planningsmodel voor de enkele machine nagerekend. Het probleem zit hem in de kosten van het reactief onderhoud. Deze worden namelijk ongeacht het feit of er al dan niet productie is in een periode meegerekend. Indien er echter geen producten worden gefabriceerd op de machine in een bepaalde periode, dan mogen er uiteraard geen kosten voor het onderhoud worden meegerekend. De machine zal namelijk niet actief zijn, dus kan er ook geen storing optreden. Om dit probleem op te lossen, wordt het model voor de
enkele machine uitgebreid met een extra variabele. Deze variabele, Ö , zal door middel van een
extra restrictie (4) de waarde nul aannemen indien er geen productie is in periode 4 en waarde één
aannemen indien er wel productie is. Het model ziet er dan als volgt uit:
Objective function: ¨
1 +
¨R:
¨©
R(¨9:)©ª:,(«¬
+ ( ∈G
/
-1 ×É 2 3T + 4 ; ; 1) − 1)τ)T
!
6
+ # $ + ℎ , )8
45
Constraints:
1) $ + ,9: − , = <3 4 ∈ @, (2) $ ≤ - C 8 ! <3 4 ∈ @, C∈D,CE
(3) A $ ≤ (4) <3 4 ∈ @ ∈ G
3′
4
∈A
∈A
= − − S6 3(T + (4 − 1)τ)T /
4 = ( − 1) + 1 /
= − 2 3(T + (4 − 1)τ)T 6
( − 1) + 2 ≤ 4 ≤
(Ø) ×É ≥ ÙÊÉ ÚÅÄ É ∈ Û,
Ê∈Ã
for 1 ≤ ≤ : and ( − 1) ≤ 4 ≤ with 4 ≤ .
and $ , , ≥ 0; ∈ .; ! ∈ J0,1K
for 1 ≤ ≤ : and ( − 1) ≤ 4 ≤ and ∈ A De betekenis van alle parameters en variabelen zijn nog steeds dezelfde. Onderstaande tabel geeft de AMPL naamgeving, het symbool in het model en de beschrijving nogmaals weer: AMPL param vastekost{t in PERIOD, i in ITEM} param varkost{t in PERIOD, i in ITEM} param holdkost{t in PERIOD, i in ITEM} param vraag{t in PERIOD, i in ITEM} param cap_max > 0 integer param big_M param l_r > 0 integer param l_p > 0 integer param prev kost > 0 integer param corr_kost > 0 integer param aantal_PM > 0 integer param frequentie_PM > 0 integer
Theoretisch Model
#
+
C
C∈D,CE
1 1 n® k
Beschrijving Vaste kost om item i te produceren in periode t Variabele kost om item i te produceren in periode t Variabele voorraadkost van 1 unit van item i periode t Gevraagde hoeveelheid van item i in periode t Maximale capaciteit Bovengrens van de productiehoeveelheid van item i in periode t Verbruik capaciteit o.w.v. reactief onderhoud Verbruik capaciteit o.w.v. preventief onderhoud Kost voor preventief onderhoud Kost voor reactief onderhoud . Parameter voor lengte van 46
param storingsfunctie{t in PERIOD} var productie_aantal{t in PERIOD, i in ITEM} >= 0 integer var voorraad_aantal{t in PERIOD, i in ITEM} >= 0 integer var item_in_periode{t in PERIOD, i in ITEM} binary var productie_in_periode{t in PERIOD} binary
/
2 3TT 6
$ ,
! Ö
onderhoudscyclus Storingsfunctie Variabele productie hoeveelheid van item i in periode t Variabele voorraad hoeveelheid van item i in periode t Binaire variabele van de productie, ter bepaling van de vaste kosten Variabele
Tabel 9: AMPL parameters en variabelen aangepast model voor enkele machine
De extra variabele zal een kleine wijziging met zich meebrengen in de .mod-file van de AMPL implementatie. De ‘objective function’ ziet er in AMPL als volgt uit: minimize kosten: sum{n in 1..aantal_PM}(prev_kost + sum{t in PERIOD intersect ((n-1)* frequentie_PM+1..n*frequentie_PM)}(corr_kost*productie_in_periode[t]*storingsfunctie[1 + t-(n-1)*frequentie_PM-1] + sum{i in ITEM}(vastekost[t,i]*item_in_periode[t,i] + varkost[t,i] *productie_aantal[t,i] + holdkost[t,i]*voorraad_aantal[t,i])));
De extra restrictie is de volgende: subject to constraint4{i in ITEM, t in PERIOD}: productie_in_periode[t] >= item_in_periode[t,i];
Nu de aanpassing van het model is voorgesteld, wordt in de volgende paragraaf de oplossing vergeleken met het oorspronkelijke model voor de enkele machine.
5.1.2 Vergelijking met het originele model Het voorbeeld dat in dit hoofdstuk zal worden opgelost, is hetzelfde voorbeeld dat gebruikt werd ter controle van het oorspronkelijke geïntegreerd model voor de enkele machine in paragraaf 3.3.2. De tabellen op volgende pagina geven een samenvattend overzicht van alle gebruikte waarden voor de parameters, alsook de gebruikte waarden van de storingsfunctie en de vraag. De storingsfunctie is opnieuw op basis van een Gamma distributie met vorm- en schaalparameter gelijk aan twee.
47
Parameter Waarde Ý Þ
8 4 15 25 5 2 40 35 1 5
ßàÑá ÚÊÉ âÊÉ ÓÊÉ Èâ ÈÄ ãâ ãÄ
Leeftijd Machine t = 1: [0, 1»[ t = 2: [1»,2»[ t = 3: [2»,3»[ t = 4: [3»,4»[ t = 5: [4»,5»[ t = 6: [5»,6»[ t = 7: [6»,7»[ t = 8: [7»,8»[
Verwachte aantal storingen 0,901 1,489 1,664 1,789 1,799 1,833 1,857 1,875
Tabel 12: Storingsfunctie aangepast model
Tabel 10: Parameters aangepast model
Periode
Vraag
1 2 3 4 5 6 7 8
product 1 product 2 2 3 3 2 2 3 3 2 2 3 3 2 2 3 3 2
Tabel 11: Vraag aangepast model
Merk op dat het probleem enkel opgelost wordt voor één onderhoudsscenario, namelijk een cyclus van 4 periodes. Bij een vergelijking van de oplossing van beide modellen, is meteen duidelijk dat de aanpassing voor de onderhoudskosten zorgt voor een meer juiste oplossing. Het productieplan blijft ongewijzigd, enkel de berekening van de kosten zijn verschillend. De productiekosten bedragen 486,21 voor het oplossen met het oorspronkelijke model voor de enkele machine, terwijl deze slechts 366,75 zijn bij de aanpassing. De reden hiervoor is dat het model in periodes 7 en 8 geen productie genereert. De onderstaande tabel toont de productieplanning:
Periode Productiehoeveelheid Voorraadhoeveelheid Product 1 Product 2 Product 1 Product 2 1 2 5 0 2 2 5 0 2 0 3 0 6 0 3 4 6 0 3 1 5 0 3 1 7 6 7 0 5 5 7 0 0 3 2 8 0 0 0 0 Tabel 13: Gegenereerde planning van het voorbeeld voor het aangepaste model
De berekening van de 486,21 door het oorspronkelijke model wordt hieronder weergegeven. •
,XbT <3T: V
40 +
¨R:
¨∗Ü
R(¨9:)∗ܪ:,(«¬
/
035 2 3(T + (4 − ( − 1) ∗ 5 − 1)τ)T7 6
48
•
µ<<3 1: 40
4 = 1: 35 ∗ 0,901 4 = 2: 35 ∗ 1,489
4 3: 35 ∗ 1,664
•
4 = 4: 35 ∗ 1,749
µ<<3 = 2: 40
4 = 5: 35 ∗ 0,901 4 = 6: 35 ∗ 1,489
4 7: 35 ∗ 1,664
4 = 8: 35 ∗ 1,749
•
203,105 203,105
= 203,105 83,65
ÐÅÉÑÒË ÅÎÆËÄÓÅÇÆÍÌÅÍÉ = 40 + 266,07 + 40 + 266,07 = 486,21
Het aangepaste model zal echter de kosten van periode 7 en 8 niet meerekenen. De 203,105 voor
gelijk aan 2 zal verminderen naar 83,65. De totale kosten dalen hierdoor naar 366,75.
Conclusie: Het aangepaste model is een goede uitbreiding van het model voor de enkele machine. Het gegenereerde productieplan is onveranderd, maar de onderhoudskosten zullen meer overeenstemmen met de realiteit.
5.2 Gebruik van een andere storingsfunctie Net zoals de eerste aanpassing die hierboven werd beschreven, heeft ook de tweede wijziging een invloed op het onderhoudsgedeelte van het model. Het betreft hier namelijk de storingsfunctie die gebruikt wordt in de modellen. In deze scriptie werd tot nu toe altijd gebruik gemaakt van de Gamma distributie om de storingsfunctie te modelleren. In paragraaf 2.4.2.4 werd echter vermeld dat de Gamma distributie in de realiteit niet zo vaak aangewend wordt. Een meer aanvaarde verdeling die in de productiewereld het meest gebruikt wordt, is de Weibull distributie. In paragraaf 2.4.2.5 wordt deze verdeling uitgelegd. In dit hoofdstuk worden verschillende Weibull functies als storingsfunctie toegepast. De resultaten worden kort vergeleken om de invloed van de storingsfunctie te kunnen bepalen. Hieronder zal eerst wat meer info worden gegeven over de gebruikte Weibull functies, daarna zullen de resultaten worden besproken.
5.2.1 Weibull distributie als storingsfunctie Vooraleer de Weibull verdeling kan worden gebruikt, moeten eerst de parameters bepaald worden. Veronderstel dat hetzelfde voorbeeld gebruikt wordt als in vorige paragraaf 5.1. De tijdshorizon bestaat dan uit 8 periodes.
49
De Weibull functie ziet er als volgt uit: 4
x 4 }9: 9 ∝ .{ | . ∝ ∝
De x is de vormparameter en wordt in
eerste instantie gelijk gesteld aan 2 (Wienstein & Chung, 1999), daarna aan 1,5. Aangezien deze waarden groter zijn dan 1, zal de machine een stijgend storingsverloop hebben naarmate de ouderdom toeneemt. Figuur 20 toont de invloed van de vormparameter op de functie. De waarde van de schaalparameter ∝ wordt bepaald
door trial & error. In de bedrijfswereld wordt namelijk gewerkt met machine-uren. Dit betekent dat men vlug aan 1000 periodes zit. In ons model zullen er maar 8 periodes zijn. De schaalparameter zal als
Figuur 20: Effect Weibull vormparameter
gevolg hiervan heel wat kleiner moeten zijn.
(Croarkin et al, 2003)
Hoe groter de schaalparameter namelijk is, hoe meer de weibull distributie wordt uitgerekt. In
andere woorden, de verschillen tussen twee opeenvolgende periodes zullen kleiner zijn indien ∝
groot is. De tabel 14 geeft de waarden van de storingsfunctie weer voor verschillende waarden van de vorm- en schaalparameter. Merk het grote verschil op indien de schaalparameter zeer groot wordt gekozen. Ter info werden ook de waarden van de Gamma verdeling toegevoegd.
Bet = 2 Beta = 1,5
Weilbull
Distributies voor storingsfunctie Alpha 1,5 Alpha 2 Alpha 2,5 Alpha 3 Alpha 100 Alpha 1 Alpha 1,5 Alpha 2 Alpha 2,5 Alpha 2 Gamma Beta 2
[0,1τ[
[1τ,2τ[
[2τ,3τ[
Tijdshorizon [3τ,4τ[ [4τ,5τ[
[5τ,6τ[
[6τ,7τ[
[7τ,8τ[
0,444 0,250 0,160 0,111 0,0010 0,999 0,544 0,353 0,000
1,333 0,750 0,480 0,333 0,0018 1,828 0,995 0,646 0,379
2,222 1,250 0,800 0,555 0,0024 2,367 1,289 0,837 0,599
3,111 1,750 1,120 0,778 0,0028 2,804 1,526 0,991 0,709
4,000 2,250 1,440 1,000 0,0032 3,180 1,731 1,124 0,805
4,888 2,750 1,760 1,222 0,0035 3,516 1,914 1,243 0,890
5,777 3,250 2,080 1,444 0,0038 3,823 2,081 1,352 0,967
6,666 3,750 2,400 1,667 0,0041 4,100 2,236 1,452 1,039
0,901
1,489
1,663
1,749
1,799
1,833
1,857
1,875
Tabel 14: Weibull-Gamma storingsfunctie
50
De onderstaande grafiek geeft enkele Weibull storingsfuncties weer. De Gamma distributie is toegevoegd als referentie.
Storingsfunctie analyse 4 3,5 3 2,5
B = 2, A = 2
2
B = 2, A = 3 B = 1.5, A = 1.5
1,5
B = 1.5, A = 2
1
Gamma 0,5 0 1
2
3
4
5
6
7
8
Tijdshorizon (Periode) Figuur 21: Vergelijking verschillende storingsfunctie (grafiek)
5.2.2 Resultaten met verschillende storingsfuncties Voor elk van de 5 storingsfuncties die in de vorige paragraaf werden voorgesteld, werd een voorbeeld opgelost met het model voor de enkele machine. Het voorbeeld is identiek als dat van vorige paragraaf 5.1.2. De gegenereerde planningen voor enkele van die functies worden hieronder weergegeven. Betekenis afkortingen: PA
Productieaantal
P1
Product 1
VA
Voorraadaantal
P2
Product 2
Tabel 15: Planning en kosten (Gamma)
51
Tabel 16: Productie en kosten (B = 2; A = 2)
Tabel 19: Planning en kosten (B = 1,5; A = 1,5)
Tabel 17: Planning en kosten (B = 2; A =3)
Tabel 18: Planning en kosten (B = 1,5; A = 2)
Om deze resultaten te kunnen evalueren, moet eerst worden nagegaan wat er allemaal afhankelijk is van de storingsfunctie. In paragraaf 5.1.1 werd het model voor de enkele machine nogmaals gegeven. Het is duidelijk dat er twee factoren zijn die beïnvloed worden door de storingsfunctie. Enerzijds zijn er de kosten van de reactieve onderhoudsactiveiten ( 1 ) en anderzijds het
capaciteitsverlies ( ) dat hiermee verbonden is.
Een eerste waarneming is het belang van de startwaarde van de storingsfunctie. De Gamma distributie stijgt weliswaar minder snel dan de Weibull functies, maar de startwaarde ligt hoger. De Weibull distributies zullen een planning opstellen die zoveel mogelijk produceert in de periodes vlak na het preventief onderhoud. Dit zijn de punten waar de storingsfunctie namelijk gereset wordt en er dus de laagste kans op storing is. Indien het model de Gamma distributie gebruikt, dan 52
zal dit minder het geval zijn. Het onderling verschil tussen de periodes is namelijk veel kleiner. De productie zal dus wat meer verspreid worden. De startwaarde weegt echter meer door. Om die reden zullen de kosten bij gebruik van de Gamma functie hoger zijn dan bij de Weibull verdeling.
Een tweede waarneming is de vorm van de functie. Een Gamma distributie is een speciale variant van de exponentiële functie. Dit kan men ook duidelijk zien op de grafiek van figuur 21. De storingsfunctie zal snel stijgen in de eerste periodes en daarna vrij stabiel blijven. De Weibull functie zal een meer constante stijging genereren, afhankelijk van de gebruikte parameters. De kosten van het onderhoud tussen de verschillende storingsverdelingen laten duidelijk zien dat ze een heel groot effect hebben op de kosten.
Conclusie: In dit hoofdstuk werd een beknopt onderzoek gedaan naar de invloed van de storingsfunctie. Aangezien deze functie een grote invloed heeft op de kosten van het onderhoud is het belangrijk dat men voor werkelijke situaties goede data verzamelt zodat de correcte storingsfunctie kan bepaald worden.
53
6 Resultaten en vergelijking van de modellen In hoofdstuk 3 en 4 werd het model voor de enkele machine en het model voor de parallelle machines uitgebreid besproken. In deze paragraaf zullen deze modellen worden geëvalueerd en zal onderzocht worden of de modellen een meerwaarde hebben. Er zal gebruik gemaakt worden van de oorspronkelijke modellen en niet van de aangepaste modellen, besproken in vorige paragraaf.
In het eerste onderdeel zal het geïntegreerde model voor de enkele machine
vergeleken worden met het basis ‘capacitated lot sizing problem’-model. Vervolgens zal het geïntegreerde model voor de enkele machine vergeleken worden met de uitbreiding naar parallelle machines.
6.1 Vergelijking basis CLSP-model met het geïntegreerde model Vooraleer het geïntegreerde model voor de enkele machine in hoofdstuk 3.2 werd voorgesteld, werd eerst het basis ‘capacitated lot sizing problem’-model besproken. Dit CLSP-model genereert een productieplanning zonder rekening te houden met de onderhoudsactiviteiten. In dit deel van de scriptie wordt onderzocht of het geïntegreerde model een beter resultaat kan creëren dan het CLSP-model. Hieronder volgt eerst een beschrijving van de test. Vervolgens worden de resultaten geanalyseerd om zo tot een conclusie te komen.
6.1.1 Test opzet Deze test zal een identiek probleem laten oplossen door beide modellen. Aangezien het basis CLSPmodel geen rekening houdt met het onderhoud, zullen de kosten van de onderhoudsactiviteiten achteraf worden bijgeteld. Het planningsprobleem dat beide modellen zullen moeten creëren, heeft opnieuw een tijdshorizon van 8τ periodes. De machine in kwestie heeft een maximale capaciteit van 20. Er worden twee producten geproduceerd, waarbij de kosten van product 2 iets hoger liggen. De setup kosten (
)
en variabele kosten (# ) voor product 1 bedragen
respectievelijk 25 en 5. De setupkosten voor product 2 bedragen 30 en de variabele kosten komen op 7 per item. De voorraadkosten (+ ) zijn voor beide producten gelijk en bedragen 2. De kosten voor het preventief onderhoud (1 ) zijn 40, die van het reactief onderhoud (1 ) 35. Het
capaciteitsverlies omwille van de preventieve ( ) en reactieve ) onderhoudsactiviteiten zijn
respectievelijk 1 en 5. De storingsfunctie is opnieuw de gammadistributie die al meerdere malen in deze scriptie werd gebruikt. De waarden worden gegeven in de tabel op volgende pagina. De vraag van de producten wordt weergegeven in de rechter tabel. Het onderhoudsbeleid zal worden vastgelegd op een cyclus van 4τ. Dit betekent dat k gelijk is aan 4.
54
Leeftijd Machine t = 1: [0, 1τ[ t = 2: [1τ,2τ[ t = 3: [2τ,3τ[ t = 4: [3τ,4τ[ t = 5: [4τ,5τ[ t = 6: [5τ,6τ[ t = 7: [6τ,7τ[ t = 8: [7τ,8τ[
Verwachte aantal storingen 0,901 1,489 1,664 1,789 1,799 1,833 1,857 1,875
Tabel 21: Waarde storingsfunctie voor test CLSP Geïntegreerde model enkele machine
Periode 1 2 3 4 5 6 7 8
Vraag product 1 5 6 4 7 3 5 8 6
Vraag product 2 7 8 4 6 6 9 3 4
Tabel 20: Vraag voor test CLSP - Geïntegreerde model
6.1.2 Resultaten en conclusie van de test Het gegenereerde planningsmodel door het CLSP-model wordt weergegeven in tabel 22. De totale productiekosten bedragen in dit geval 859.
Periode 1 2 3 4 5 6 7 8
Basis CLSP model voor enkele machine Productie aantal Voorraad aantal Totale Werkelijke Product 1 Product 2 productie capaciteit Product 1 Product 2 20 14,495 5 15 0 8 10 12,555 10 0 4 0 16 11,680 0 16 0 12 15 11,255 15 0 8 6 0 14,495 0 0 5 0 16 12,555 0 16 0 7 14 11,680 14 0 6 4 0 11,255 0 0 0 0
Tabel 22: Resultaat voor test CLSP - Geïntegreerde model enkele machine: CLSP
Er zijn echter twee problemen met deze oplossing. Ten eerste zijn de kosten van de onderhoudsactiviteiten niet in rekening gebracht. Echter, aangezien beide modellen gebruik maken van hetzelfde onderhoudsbeleid en dezelfde storingsfunctie, zijn deze kosten verwaarloosbaar. De berekeningen zijn namelijk in dit geval voor beide modellen identiek. Het tweede probleem is een gevolg van het eerste. Dit model gebruikt immers voor alle perioden de maximale capaciteit. Dit is een valse assumptie, aangezien de storingen ervoor zullen zorgen dat deze maximale capaciteit niet volledig benut kan worden. De 4de kolom van de tabel met het gegenereerde productieplan geeft het totale productieaantal weer per periode. De 5de kolom weergeeft de werkelijke capaciteit, indien men rekening houdt met de storingen en het tijdsverlies omwille van preventief onderhoud. De berekening van die capaciteit gebeurt op dezelfde manier als beschreven in 55
paragraaf 3.3.1.1. In periodes 1,3,4,6 en 7 zal de productiehoeveelheid klaarblijkelijk groter zijn dan de beschikbare capaciteit. Het bedrijf zal niets anders kunnen dan het productieplan aan te passen en de capaciteit door te schuiven naar de volgende periode. Dit zal logischerwijze extra kosten met zich meebrengen. De aangepaste productieplanning wordt voorgesteld in onderstaande tabel. De bijhorende productiekosten zijn berekend per periode. Ter illustratie worden hieronder de kosten voor de productiekosten van periode 1 en 2 nagerekend.
•
Periode 1:
#3<T14 <W4
!
+ # $ + + , (zie paragraaf 3.1)
•
Periode 2:
(25 + 5 ∗ 6 + 2 ∗ 0) + (30 + 7 ∗ 6 + 2 ∗ 0) = 127
25 + 5 ∗ 5 + 2 ∗ 0 " 30 " 7 ∗ 9 + 2 ∗ 2 147
Aangepaste productieplanning CLSP model voor enkele machine Aangepaste voorraad Productie aantal Totale Werkelijke Productie aantal Oorspronkelijk Aangepast productie capaciteit kosten Periode Product 1 Product 2 Product 1 Product 2 Product 1 Product 2 14 14,495 147 1 5 15 5 9 0 2 12 12,555 127 2 10 0 6 6 0 0 11 11,680 130 3 0 16 4 7 0 3 11 11,255 120 4 15 0 7 4 0 1 13 14,495 140 5 0 0 8 5 5 0 12 12,555 120 6 0 16 0 12 0 3 11 11,680 86 7 14 0 11 0 3 0 7 11,255 98 8 0 0 3 4 0 0 Tabel 23: Aangepaste productieplanning testoplossing CLSP-model
De totale productiekost voor de aangepaste productieplanning is nu echter 968. Dit is een aanzienlijke verhoging die het bedrijf eventueel niet verwachtte omdat ze geen rekening hielden met de storingen en de werkelijke capaciteit.
Indien het probleem opgelost wordt met het geïntegreerde model voor de enkele machine, dan wordt onderstaande planning gegenereerd: Geïntegreerd model voor enkele machine Productie aantal Voorraad aantal Periode Product 1 Product 2 Product 1 Product 2 1 5 9 0 2 2 6 6 0 0 3 4 6 0 2 4 7 4 0 0 5 8 6 5 0 6 0 12 0 3 7 8 0 0 0 8 6 4 0 0 Tabel 24:Productieplanning test met geïntegreerd model
56
Het genereren van deze planning is veel eenvoudiger, aangezien een aanpassing van het productieplan niet meer nodig is. De planning houdt hier immers wel rekening met eventuele storingen. De planning komt vrij overeen met het aangepaste plan van het CLSP-model. De kostprijs van de productie ligt hier echter op 958.
Conclusie: Indien het onderhoudsbeleid wordt vastgelegd voor een enkele machine, dan zijn de onderhoudskosten voor de twee gebruikte modellen gelijk. De productiekosten zullen wel verschillen. Op het eerste zicht zal het CPLS-model een goedkopere oplossing genereren, maar dit model houdt geen rekening met de eventuele storingen van de machine. De geplande productie zal niet helemaal per periode kunnen worden uitgevoerd en een aangepaste planning is nodig. In tegenstelling tot het CLSP-model, creëert het productieplan met het geïntegreerde model direct een goed en optimaal productieplan. De kosten van het geïntegreerde model liggen immers lager dan die van het aangepaste CLSP-model. Het integreren van de onderhoud in de productieplanning heeft met andere woorden een grote meerwaarde. Niet alleen is het plan uitvoerbaar en is er geen aanpassing nodig, het is ook nog eens goedkoper.
6.2 Vergelijking basismodel voor enkele machine en model voor parallelle machines In voorgaande paragraaf werd onderzocht of het geïntegreerde model voor de enkele machine een verbetering is ten opzichte van het bekende CLSP-model. In dit gedeelte zullen de twee geïntegreerde modellen vergeleken worden. Er wordt namelijk nagegaan of het parallelle model een meerwaarde is voor een bedrijf en hun planning ten opzichte van het geïntegreerde model voor de enkele machine. Deze paragraaf zal dan ook een test beschrijven en uitvoeren waarin wordt onderzocht of het parallelle model in staat is een betere en dus goedkopere oplossing te genereren dan het model voor de enkele machine.
6.2.1 Beschrijving van de test Veronderstel dat het productiesysteem van een bedrijf bestaat uit twee machines, een oude en een nieuwe. De nieuwe machine is M1 of machine 1, de oude is M2 of machine 2. De doel is een geïntegreerd productie- en onderhoudsplanning te maken. De planning zal eerst gegenereerd worden met behulp van het model voor de enkele machine. Deze oplossing zal vervolgens vergeleken worden met de optimale oplossing van het parallelle model.
57
De parameters van de twee machines zullen als gevolg van het leeftijdsverschil verschillend zijn. De nieuwe machine zal betere specificaties hebben. Veronderstel dat de tijdshorizon 8τ periodes omvat, zoals in voorgaande voorbeelden al het geval was. De nieuwe machine heeft een maximale capaciteit van 20, terwijl dit voor de oude slechts 15 bedraagt. Dit is vrij logisch, aangezien nieuwere machines vaak meer efficiënt zijn en een snellere productie mogelijk maken. Er zullen
opnieuw twee producten worden geproduceerd. De kosten van de voorraad (+ ) bedragen 2 en
zijn onafhankelijk van het product en van de machine. De andere productiekosten zijn daarentegen wel afhankelijk van de machinekeuze. Indien men een item produceert op de nieuwe machine, dan zal de setupkost of vaste kost (
) 25
zijn en de variabele kost (# ) 5 per item geproduceerd.
Voor de oude machine komt dit op respectievelijk 30 en 7. De kosten van de oude machine zullen dus iets hoger liggen. Dit omwille van het feit dat men in de machinebouwindustrie streeft naar het ontwikkelen van machines die zo goedkoop mogelijk kunnen produceren. De nieuwe machine zal dus wellicht een beter rendement halen en als gevolg hiervan goedkoper zijn om een item te produceren. De kosten voor het onderhoud verschillen ook wat. Dit zal opnieuw voor de nieuwe machine iets goedkoper zijn, aangezien hier vaak nieuwe goedkopere technologieën worden
toegepast. Voor het preventief onderhoud (1 ) bedraagt de kost voor de nieuwe machine 40 en voor de oudere 45. De kosten van het reactief onderhoud (1 ) bedragen dan weer respectievelijk
35 en 40. Twee andere parameters die verbonden zijn met het onderhoud zijn het capaciteitsverlies omwille van het preventief en reactief onderhoud. Voor het preventief onderhoud zal dit wellicht gelijk blijven, ongeacht de machine, aangezien deze activiteit meestal offline gebeurt. Het verlies ( ) voor beide machines bedraagt 1. Het verlies omwille van het
reactief onderhoud zal waarschijnlijk wel wat verschillen. Oudere machines zijn vaak minder goed ontworpen om gemakkelijk onderhoud uit te voeren. Om die reden is het verlies van het reactief onderhoud ) van de nieuwe machine gelijk aan 5, terwijl dit voor de oudere machine 6 bedraagt. Tot slot wordt de storingsfunctie voor beide machines gelijk genomen. Het preventief
onderhoud werd in het begin van deze scriptie beschreven als een activiteit die de leeftijd van de machine terug op nul zet. Men spreekt van ‘as-good-as-new’. Voor de oude machine betekent dit dat de storingsfunctie gelijk is aan die van de nieuwe machine. De storingsfunctie is dezelfde gammadistributie als in de voorbeelden in de vorige hoofdstukken. De shape en rate parameter is gelijk aan 2. De waarden voor de storingsfunctie worden weergegeven in tabel 25. De vraag van de twee producten wordt weergegeven in tabel 26. De totale vraag is 124 items groot en werd willekeurig verdeeld over de periodes. De vraag mag niet groter zijn dan 138 eenheden. De reden hiervoor is dat de capaciteit van de twee machines samen in het slechtste geval 138 bedraagt. Dit slechtste geval komt voor indien beide machines een onderhoudsbeleid hebben van T gelijk aan 8τ. In dat geval zou de nieuwe machine 89 items kunnen produceren en de oude slechts 49. Men kan 58
dit narekenen aan de hand van de waarde van de capaciteit voor de 8 perioden. De tabel met deze capaciteiten kan men in de tabel 27 terugvinden. In de berekening van die 138 werden alle waarden van de capaciteit naar beneden afgerond, aangezien de productiehoeveelheid een geheel getal moet zijn. Een half product maken in periode 1 en vervolgens de andere helft in periode 2 wordt niet toegelaten Leeftijd Machine
Verwachte aantal storingen 0,901 1,489 1,664 1,789 1,799 1,833 1,857 1,875
t = 1: [0, 1τ[ t = 2: [1τ,2τ[ t = 3: [2τ,3τ[ t = 4: [3τ,4τ[ t = 5: [4τ,5τ[ t = 6: [5τ,6τ[ t = 7: [6τ,7τ[ t = 8: [7τ,8τ[
Tabel 25: Storingsfunctie test model parallelle machines
Machine 1 Periode 1 2 3 4 5 6 7 8 Machine 2 Periode 1 2 3 4 5 6 7 8 Max capaciteit:
k=1 14,495 14,495 14,495 14,495 14,495 14,495 14,495 14,495 k=1 9,495 9,495 9,495 9,495 9,495 9,495 9,495 9,495 184
Periode 1 2 3 4 5 6 7 8
Vraag product 1 13 8 10 4 7 12 5 8
Vraag product 2 6 3 11 6 9 7 9 6
Tabel 26: Vraag test model voor parallelle machines
Beschikbare capaciteit i.f.v. T = k τ (maximale capaciteit: 20) k=2 k=3 k=4 k=5 k=6 k=7 14,495 14,495 14,495 14,495 14,495 14,495 12,555 12,555 12,555 12,555 12,555 12,555 14,495 11,680 11,680 11,680 11,680 11,680 12,555 14,495 11,255 11,255 11,255 11,255 14,495 12,555 14,495 11,005 11,005 11,005 12,555 11,680 12,555 14,495 10,835 10,835 14,495 14,495 11,680 12,555 14,495 10,715 12,555 12,555 11,255 11,680 12,555 14,495 Beschikbare capaciteit i.f.v T = k τ (maximale capaciteit: 15) k=2 k=3 k=4 k=5 k=6 k=7 9,495 9,495 9,495 9,495 9,495 9,495 7,555 7,555 7,555 7,555 7,555 7,555 9,495 6,680 6,680 6,680 6,680 6,680 7,555 9,495 6,255 6,255 6,255 6,255 9,495 7,555 9,495 6,005 6,005 6,005 7,555 6,680 7,555 9,495 5,835 5,835 9,495 9,495 6,680 7,555 9,495 5,715 7,555 7,555 6,255 6,680 7,555 9,495 Min capaciteit:
k=8 14,495 12,555 11,680 11,255 11,005 10,835 10,715 10,625 k=8 9,495 7,555 6,680 6,255 6,005 5,835 5,715 5,625 138
Tabel 27: Capaciteit van de machines voor test model parallelle machines
59
6.2.2 Oplossen van het voorbeeld met het model voor een enkele machine Wanneer men een probleem met meerdere machines wil oplossen met het model voor een enkele machine, dan is het grootste probleem de verdeling van de vraag. De nieuwe machine, machine 1, heeft veel betere specificaties. Het belangrijkste is dat de productiekosten een stuk lager liggen dan de oude machine. Indien een bedrijf in zo’n situatie de vraag manueel moet verdelen over de machines, is het aanneembaar dat men zal werken volgens een heuristiek die zoveel mogelijk items op de nieuwe machine zal plaatsen. De maximale capaciteit van die machine 1 zal dus dienen als basis voor de verdeling. Wanneer die maximale capaciteit bereikt is, kan men de rest van de items naar machine 2 plaatsen. Het verdelen van de vraag moet echter voor elk onderhoudsbeleid van machine 1 opnieuw aangepast worden, aangezien de capaciteit per periode afhankelijk is van het beleid. In de tabel op vorige pagina kan men duidelijk zien dat de capaciteit, in de periodes bij een onderhoudsbeleid van T gelijk aan 1τ,veel groter is dan deze bij een beleid van T gelijk aan 8τ. Na het bepalen van de vraag moet het model opgelost worden met behulp van AMPL. Aangezien er voor machine 2 ook 8 verschillende onderhoudscyclussen zijn, moet het model voor elk beleid worden doorlopen. In totaal zullen er dus 64 mogelijkheden zijn. Voor elk van de 8 onderhoudscyclussen van machine 1 werd een tabel opgesteld die de verdeling van de vraag weergeeft. Onder die tabel staat dan telkens een andere tabel met de kosten voor alle 8 onderhoudscyclussen van machine 2. Hieronder worden deze tabellen getoond voor een T gelijk aan 1τ en 3τ. Voor alle overige mogelijkheden, wordt verwezen naar bijlage 6.
Onderhoudscyclus Machine 1: T = 1τ
VRAAG Periode 1 2 3 4 5 6 7 8
Capaciteit Machine 1 14,495 14,495 14,495 14,495 14,495 14,495 14,495 14,495 115,960
machine 1 machine 2 Totaal product 1 product 2 product 1 product 2 product 1 product 2 13 1 0 5 13 6 8 3 0 0 8 3 10 4 0 7 10 11 4 6 0 0 4 6 7 7 0 2 7 9 12 2 0 5 12 7 5 9 0 0 5 9 8 6 0 0 8 6 67 38 0 19 67 57
Tabel 28: Verdeling van de vraag voor T = 1τ
60
Machine 1 (T1 = 1τ) 1477,28 1477,28 1477,28 1477,28 1477,28 1477,28 1477,28 1477,28
Onderhoudscyclus machine 2
TOTALE KOSTEN T2 k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8
Machine 2
Totaal
881,32 795,4 803,92 795,24 811,24 826 840,72 834,68
2358,6 2272,68 2281,2 2272,52 2288,52 2303,28 2318 2311,96
Tabel 29: Kostentabel voor T = 1τ
Onderhoudscyclus Machine 1: T = 3τ
VRAAG Periode 1 2 3 4 5 6 7 8
Capaciteit Machine 1 14,495 12,555 11,680 14,495 12,555 11,680 14,495 12,555 104,510
machine 1 machine 2 Totaal product 1 product 2 product 1 product 2 product 1 product 2 13 1 0 5 13 6 8 3 0 0 8 3 10 1 0 10 10 11 4 6 0 0 4 6 7 5 0 4 7 9 11 0 1 7 12 7 5 9 0 0 5 9 8 4 0 2 8 6 66 29 1 28 67 57
Tabel 30: Verdeling van de vraag voor T = 3τ
Onderhoudscyclus machine 2
TOTALE KOSTEN T2
Machine 1 (T1 = 3τ)
Machine 2
Totaal
k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8
1279,43 1279,43 1279,43 1279,43 1279,43 1279,43 1279,43 1279,43
1021,32 939,4 981,92 963,24 969,24 1018 1032,72 1026,68
2300,75 2218,83 2261,35 2242,67 2248,67 2297,43 2312,15 2306,11
Tabel 31: Kostentabel voor T = 3τ
61
6.2.3 Vergelijking met oplossing van het model voor parallelle machines Het oplossen van dit voorbeeld met behulp van het model voor parallelle machines is vaak rechttoe rechtaan. Men vult alle parameters in het model in en laat het programma een optimale oplossing genereren voor elke onderhoudscyclus. Ook hier zijn er uiteraard 64 mogelijke combinaties, want zowel machine 1 als machine 2 hebben 8 mogelijke onderhoudsbeleiden. Alle kosten van zowel het model voor de enkele machine als deze van het model voor parallelle machines worden hieronder in een kostenmatrix weergegeven.
Onderhoudscyclus Machine 2: T2
Onderhoudscyclus Machine 2: T2
Model Enkele Machine 1τ 2τ 3τ 4τ 5τ 6τ 7τ 8τ Model Parallelle Machines 1τ 2τ 3τ 4τ 5τ 6τ 7τ 8τ
KOSTENMATRIX: Vergelijking single VS parallel model Onderhoudscyclus Machine 1: T1 1τ 2τ 3τ 4τ 5τ 6τ 2358,6 2303,92 2300,75 2322,53 2326,28 2348,2 2272,68 2232 2218,83 2236,61 2252,36 2270,28 2281,2 2234,52 2261,35 2273,13 2280,88 2314,8 2272,52 2231,84 2242,67 2270,45 2274,2 2294,12 2288,52 2229,84 2248,67 2254,45 2286,2 2306,12 2303,28 2270,6 2297,43 2289,21 2304,96 2354,88 2318 2285,32 2312,15 2327,93 2337,68 2369,6 2311,96 2279,28 2306,11 2321,89 2331,64 2363,56 Machine 1 1τ 2τ 3τ 4τ 5τ 6τ 2260,6 2208,92 2217,75 2223,53 2235,28 2252,19 2190,68 2130 2147,83 2150,61 2151,36 2172,28 2190,2 2134,52 2152,35 2142,13 2159,88 2182,8 2193,52 2136,84 2150,67 2160,45 2164,2 2175,11 2195,52 2138,84 2157,67 2161,45 2166,2 2186,11 2202,28 2145,6 2176,43 2168,21 2187,96 2226,88 2217 2161,32 2193,15 2208,93 2202,68 2241,6 2210,96 2160,28 2187,11 2219,89 2196,64 2235,55
7τ 2373,08 2301,16 2337,68 2325 2335 2371,76 2416,48 2410,44
8τ 2386,17 2304,25 2340,77 2350,09 2352,09 2374,85 2441,57 2449,53
7τ 2270,07 2184,15 2196,68 2196,99 2207,99 2238,46 2261,47 2255,43
8τ 2278,16 2192,24 2204,76 2212,09 2219,09 2246,85 2272,57 2287,53
Tabel 32: Kostenmatrix
Conclusie: De minimale totale kosten wanneer men het model voor de enkele machine gebruikt bedragen 2218,83. Het bijhorende onderhoudsbeleid voor de nieuwe machine is een onderhoudscyclus van 3τ en voor de oude machine 2τ. Dit wil met andere woorden zeggen dat men een preventief onderhoud zal uitvoeren na elke respectievelijke 3 en 2 periodes. Vergelijking we dit met het model voor parallelle machines, dan wordt een totale kost bekomen van 2130. Dit bij een onderhoudsbeleid van 2τ voor zowel de nieuwe als de oude machine. Als conclusie kan er worden besloten dat het uitgebreide model voor de parallelle machines een duidelijke meerwaarde heeft ten opzichte van het basismodel. Naast de totale kosten die beduidend lager zijn, is de tijdswinst die men creëert door de vraag niet manueel te hoeven opsplitsen een duidelijk voordeel. 62
7 Conclusie De globalisering van de wereld heeft ervoor gezorgd dat de concurrentie in de productiewereld zeer groot is. Om economisch zo rendabel mogelijk te zijn, trachten de bedrijven hun productieplanningen te optimaliseren. Dit optimaliseren betekent dat de beschikbaarheid zo goed mogelijk moet worden benut en dat men moet streven naar een evenwicht tussen beschikbaarheid en de bijhorende onderhoudskosten. Vroeger werden de productie- en onderhoudsplanningen apart gegenereerd. Het gevolg was dat er conflicten ontstonden. Tegenwoordig heeft men echter de samenhang van de twee processen ingezien. Er is hierdoor een grotere interesse ontstaan in een gezamenlijke planning voor productie en onderhoud.
In deze masterproef werd het modelleren van geïntegreerde productie- en onderhoudsplanningen bestudeerd. Het model uit de paper ‘An integrated production and preventive maintenance
planning model’ (Aghezzaf et al, 2007) werd voorgesteld als basismodel om een geïntegreerde planning te genereren voor een productiesysteem die bestaat uit een enkele machine. In een volgende fase werd dit model uitgebreid naar meerdere parallelle machines. Na de controle van de twee modellen zijn er twee extra aanpassingen uitgewerkt. De eerste aanpassing zorgde ervoor dat de berekening van de onderhoudskosten meer conform was met de realiteit. De tweede aanpassing gebruikte een Weibull distributiefunctie in plaats van een Gamma verdeling om de storingen te simuleren. De literatuurstudie bracht namelijk aan het licht dat een Weibull verdeling de meest aangewezen distributie is om het falen van een machine te simuleren.
Na het ontwikkelen van de modellen, was de volgende doelstelling onderzoeken of deze modellen meerwaarde hebben voor een bedrijf. Om dit onderzoek mogelijk te maken, werd gebruik gemaakt van de modelleringssoftware AMPL. Deze software is in staat om de planningsproblemen aan de hand van een model op te lossen op een snelle en correcte manier. Vooreerst werd een vergelijking gemaakt tussen het geïntegreerde model voor de enkele machine en het eenvoudigere aparte productieplanningsmodel, ook wel het ‘capacitated lot sizing problem (CLSP)’ genaamd. Het geïntegreerde productie- en onderhoudsplanningsmodel bleek twee grote troeven te hebben. Enerzijds genereerde het een planning die goedkoper was en anderzijds was de planning uitvoerbaar in tegenstelling tot het CLSP-model. Het CLSP-model hield namelijk geen rekening met het optreden van eventuele storingen. Dit zorgde ervoor dat niet alle geplande productie altijd kon uitgevoerd worden. Dit zorgt uiteraard voor extra kosten voor een bedrijf. Na het aantonen van de meerwaarde van het model voor enkele machines, werd ook onderzocht of het model voor parallelle machines een toegevoegde waarde voor een bedrijf kon hebben. Er werd hiervoor een 63
probleem opgelost met zowel het model voor de enkele machine als dat voor de parallelle machine. Het uitgebreide model bleek in staat om een goedkopere oplossing te genereren. Bovendien moest men de vraag manueel opsplitsen bij het toepassen van het geïntegreerde model voor de enkele machine. Dit bracht heel wat tijdsverlies met zich mee.
Er kan als conclusie van deze thesis gesteld worden dat het gebruik van een geïntegreerd productie- en onderhoudsplanningsmodel aan te raden is. De invloed die het productieproces en de onderhoudsactiviteiten op elkaar hebben is te groot om te negeren. De geïntegreerde planning zorgt voor een duidelijke kostenbesparing
en een productieplanning die haalbaar is. Dit in
tegenstelling tot de productieplanningen die geen rekening houden met de factor onderhoud en de bijhorende storingen die kunnen optreden.
Naar de toekomst toe kan het model nog verder uitgebreid worden. Onderzoek naar een productiesysteem met serie geschakelde machines is de logische volgende stap. Verder wordt er hier gewerkt met een preventief onderhoud die de machine terugbrengt naar een ‘as-good-asnew’ status. Deze ideale assumptie is in contradictie met de realiteit, want daarin zal de machine blijvend degenereren. Verder onderzoek is nodig om de invloed hiervan te bepalen en om na te gaan hoe dit kan geïmplementeerd worden in het model.
64
8 Bibliografie Aghezzaf E.H., Najib M., (2008). Integrated production planning and preventive maintenance in deteriorating production systems. Information Sciences 178. 3382-3392 Gilbert, James P. and Finch, Byron J., (1985). Maintenance Management: Keeping Up with Production’s Changing Trends and Technology. Journal of Oper. Management. 6, 1-12 Wienstein L., Chung C.H., (1999). Integrated maintenance and production decisions in a hierarchical Production planning environment. Comput. Oper. Res.26. 1059-1074 Aghezzaf E.H., Jamali M.A., Ait-Kadi, D., (2007). An integrated production and preventive Maintenance planning model. European Journal of Oper. Res. 181. 679-685 Wienstein L., (1996). Decision support for the integration of maintenance activities with front end Production planning activities. Diss. The University of Kentucky Ettkin, Lawrence, P. and Jahnig, David G., (1986). Adapting MRP II for Maintenance Resource Management Can Provide A Strategic Advantage. Industrial Engineering, August 50-59 Karima B., Fatemi Ghomi S.M.T., Wilson J.M., (2000). The capacitated lot sizing problem: a review of models and algorithms. Omega 31. 365-378 Knezevic J., (1987). Condition parameter based approach to calculation of reliability characteristics. Reliability Engineering, vol. 19, issue 1. 29-39 Van Gouwbergen D., (2010). Design of Manufacturing and Service Operations. Engineering Science, Department Industrial Engineering, Ghent, Belgium Croarkin C., Tobias P., (2003), NIST/SEMATECH e-Handbook of Statistical Methods, http://www.itl.nist.gov/div898/handbook/ Lewis, E.E., (1987). Introduction to Reliability Engineering. John Wiley and Sons, New York, USA
Pinedo M., (1995). Scheduling: Theory, Algorithms, and Systems. Prentice-Hall
Cho D. I., Pariar M., (1991). A survey of maintenance model for multi-unit systems. European Journal of Oper. Res., Vol 51, no1, pg1-23 Dekker R., (1996). Application of maintenance optimization models: a review and analysis. Reliab. Eng. Syst.saf., vol 51, no 3, pg 229-240 Ashayeri J., Teelen A., Selen W., (1996). A production and maintenance planning model for the process industry. Int. J. Production Res., Vol 34, no 12, pg 3311-3326 Graves G.H., Lee C.Y., (1999). Scheduling maintenance and semiresumable jobs on a single machine. Nav. Res. Logist., Vol 46, no 7, pg 845-863
65
Lee C.Y., Chen Z.L., (2000).Scheduling jobs and maintenance activities on parallel machines. Nav. Res. Logist., Vol47, no 2, pg 145-165 Schmidt G., (2000). Scheduling with limited machine availability. European Journal of Oper. Res. 121, 1-15 Cassady C.R., Kutanoglu E., (2005). Integrating Preventive Maintenance Planning and Production Scheduling for a Single Machine. IEEE Transactions on Reliability 54 n°2 Drexl A., Kimms A., (1997). Lot Sizing and Scheduling – Survey and Extensions. European Journal of Oper. Res. 99. 221-23
66
Bijlagen Bijlage 1: AMPL files van het basis CLSP model (No_maintenance) .mod-file: basis CLSP model # ------------------------------------------------------# declareren variabelen en parameters # ------------------------------------------------------set ITEM; set PERIOD; param vastekost{t in PERIOD, i in ITEM}; param varkost{t in PERIOD, i in ITEM}; param holdkost{t in PERIOD, i in ITEM}; param vraag{t in PERIOD, i in ITEM}; param capaciteit > 0 integer; param big_M:= 10000; var productie_aantal{t in PERIOD, i in ITEM} >= 0; var voorraad_aantal{t in PERIOD, i in ITEM} >= 0; var item_in_periode{t in PERIOD, i in ITEM} binary; #-------------------------------------------------------# Objective function #-------------------------------------------------------minimize kosten: sum{t in PERIOD, i in ITEM}(vastekost[t,i]*item_in_periode[t,i] varkost[t,i]*productie_aantal[t,i] + holdkost[t,i]*voorraad_aantal[t,i]);
+
#-------------------------------------------------------# Constraints #-------------------------------------------------------subject to constraint0{i in ITEM}: productie_aantal[1,i] - voorraad_aantal[1,i] = vraag[1,i]; subject to constraint1{i in ITEM, t in PERIOD: t<>1}: productie_aantal[t,i] + voorraad_aantal[t-1,i] - voorraad_aantal[t,i] = vraag[t,i]; subject to constraint2{t in PERIOD, i in ITEM}: productie_aantal[t,i] <= big_M * item_in_periode[t,i]; subject to constraint3{t in PERIOD}: sum{i in ITEM}(productie_aantal[t,i]) <= capaciteit; I
.dat-file: basis CLSP-model set ITEM := product1 product2; set PERIOD := 1 2 3 4 5 6 7 8; param capaciteit := 15; param vastekost: product1 product2:= 1 25 25 2 25 25 3 25 25 4 25 25 5 25 25 6 25 25 7 25 25 8 25 25; param varkost: product1 product2:= 1 5 5 2 5 5 3 5 5 4 5 5 5 5 5 6 5 5 7 5 5 8 5 5; param holdkost: product1 product2:= 1 2 2 2 2 2 3 2 2 4 2 2 5 2 2 6 2 2 7 2 2 8 2 2; param vraag: product1 product2:= 1 2 3 2 3 2 3 2 3 4 3 2 5 2 3 6 3 2 7 2 3 8 3 2;
.run-file: basis CLSP-model model no_maintenance.mod; data no_maintenance.dat; solve; display productie_aantal; display voorraad_aantal; display kosten; II
Bijlage 2: AMPL files van het geïntegreerd model voor enkele machine .mod-file: geïntegreerd model voor enkele machine # ------------------------------------------------------# declareren variabelen en parameters # ------------------------------------------------------set ITEM; set PERIOD; param vastekost{t in PERIOD, i in ITEM}; param varkost{t in PERIOD, i in ITEM}; param holdkost{t in PERIOD, i in ITEM}; param vraag{t in PERIOD, i in ITEM}; param cap_max > 0 integer; param big_M:= 10000; param l_p > 0 integer; param l_r > 0 integer; param prev_kost > 0 integer; param corr_kost > 0 integer; param aantal_PM > 0 integer; param frequentie_PM > 0 integer; param storingsfunctie{t in PERIOD};
# parameter N/k # parameter k
var productie_aantal{t in PERIOD, i in ITEM} >= 0 integer; var voorraad_aantal{t in PERIOD, i in ITEM} >= 0 integer; var item_in_periode{t in PERIOD, i in ITEM} binary; param capaciteit {t in PERIOD}:= cap_max + (if exists {n in 1..aantal_PM} t = (n-1)*frequentie_PM + 1 then - l_p) - l_r*storingsfunctie[ if t - floor(t/frequentie_PM)*frequentie_PM <> 0 then t - floor(t/frequentie_PM)*frequentie_PM else frequentie_PM];
#-------------------------------------------------------# Objective function #-------------------------------------------------------minimize kosten: sum{n in 1..aantal_PM}(prev_kost + sum{t in PERIOD intersect ((n-1)*frequentie_PM+1..n*frequentie_PM)}(corr_kost*storingsfunctie[1 + t-(n-1) *frequentie_PM-1] + sum{i in ITEM}(vastekost[t,i]*item_in_periode[t,i] + varkost[t,i]*productie_aantal[t,i] + holdkost[t,i]*voorraad_aantal[t,i])));
III
minimize totale_productie_kosten: sum{t in PERIOD, i in ITEM}(vastekost[t,i]*item_in_periode[t,i] varkost[t,i]*productie_aantal[t,i] + holdkost[t,i]*voorraad_aantal[t,i]);
+
minimize totale_onderhouds_kosten: sum{n in 1..aantal_PM}(prev_kost + sum{t in PERIOD intersect ((n-1)* frequentie_PM+1..n*frequentie_PM)}(corr_kost*storingsfunctie[1 + t-(n-1)* frequentie_PM-1])); #-------------------------------------------------------# Constraints #-------------------------------------------------------subject to constraint0{i in ITEM}: productie_aantal[1,i] - voorraad_aantal[1,i] = vraag[1,i]; subject to constraint1{i in ITEM, t in PERIOD: t<>1}: productie_aantal[t,i] + voorraad_aantal[t-1,i] - voorraad_aantal[t,i] = vraag[t,i]; subject to constraint2{t in PERIOD, i in ITEM}: productie_aantal[t,i] <= big_M * item_in_periode[t,i]; subject to constraint3{t in PERIOD}: sum{i in ITEM}(productie_aantal[t,i]) <= capaciteit[t];
.dat-file: geïntegreerd model voor enkele machine set ITEM := product1 product2; set PERIOD := 1 2 3 4 5 6 7 8; param cap_max := 15; param prev_kost:= 28; param corr_kost:= 35; param aantal_PM:= 2; param frequentie_PM:= 6;
# parameter N/k # parameter k
param l_p := 1; param l_r := 5;
# = a*Cmax # = b*Cmax
param storingsfunctie:= 1 0.901 2 1.489 3 1.664 4 1.749 5 1.799 6 1.833 7 1.857 8 1.875; IV
param vastekost: product1 product2:= 1 25 25 2 25 25 3 25 25 4 25 25 5 25 25 6 25 25 7 25 25 8 25 25; param varkost: product1 product2:= 1 5 5 2 5 5 3 5 5 4 5 5 5 5 5 6 5 5 7 5 5 8 5 5; param holdkost: product1 product2:= 1 2 2 2 2 2 3 2 2 4 2 2 5 2 2 6 2 2 7 2 2 8 2 2; param vraag: product1 product2:= 1 2 3 2 3 2 3 2 3 4 3 2 5 2 3 6 3 2 7 2 3 8 3 2;
.run-file: geïntegreerd model voor enkele machine model thesis_model.mod; data thesis_model.dat; solve; display productie_aantal; display voorraad_aantal; display capaciteit; display totale_productie_kosten; display totale_onderhouds_kosten; display kosten; V
Bijlage 3: AMPL files van het CLSP-model voor parallelle machines .mod-file: CLSP-model voor parallelle machines # ------------------------------------------------------# declareren variabelen en parameters # ------------------------------------------------------set ITEM; set PERIOD; set MACHINE; param vastekost{m in MACHINE, t in PERIOD, i in ITEM}; param varkost{m in MACHINE, t in PERIOD, i in ITEM}; param holdkost{t in PERIOD, i in ITEM}; param vraag{t in PERIOD, i in ITEM}; param capaciteit > 0 integer; param big_M:= 10000; var productie_aantal{m in MACHINE, t in PERIOD, i in ITEM} >= 0; var voorraad_aantal{t in PERIOD, i in ITEM} >= 0; var item_in_periode{m in MACHINE, t in PERIOD, i in ITEM} binary; #-------------------------------------------------------# Objective function #-------------------------------------------------------minimize kosten: sum{m in MACHINE, t in PERIOD, i in ITEM}(vastekost[m,t,i]*item_in_periode[m,t,i] + varkost[m,t,i]*productie_aantal[m,t,i]) + sum{t in PERIOD, i in ITEM}(holdkost[t,i]*voorraad_aantal[t,i]); #-------------------------------------------------------# Constraints #-------------------------------------------------------subject to constraint0{m in MACHINE,i in ITEM}: productie_aantal[m,1,i] - voorraad_aantal[1,i] = vraag[1,i]; subject to constraint1{m in MACHINE,i in ITEM, t in PERIOD: t<>1}: productie_aantal[m,t,i] + voorraad_aantal[t-1,i] - voorraad_aantal[t,i] = vraag[t,i]; subject to constraint2{m in MACHINE,t in PERIOD, i in ITEM}: productie_aantal[m,t,i] <= big_M * item_in_periode[m,t,i]; subject to constraint3{m in MACHINE,t in PERIOD}: sum{i in ITEM}(productie_aantal[m,t,i]) <= capaciteit; VI
.dat-file: CLSP-model voor parallelle machines set MACHINE := M1 M2; set ITEM := product1 product2; set PERIOD := 1 2 3 4 5 6 7 8; param capaciteit := 15; param vastekost:= [M1,*,*]: 1 2 3 4 5 6 7 8
product1 25 25 25 25 25 25 25 25
product2:= 25 25 25 25 25 25 25 25
[M2,*,*]: 1 2 3 4 5 6 7 8
product1 25 25 25 25 25 25 25 25
product2:= 25 25 25 25 25 25 25 25;
param varkost:= [M1,*,*]: 1 2 3 4 5 6 7 8
product1 5 5 5 5 5 5 5 5
product2:= 5 5 5 5 5 5 5 5
[M2,*,*]: 1 2 3 4 5 6 7 8
product1 5 5 5 5 5 5 5 5
product2:= 5 5 5 5 5 5 5 5;
VII
param holdkost: product1 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2
product2:= 2 2 2 2 2 2 2 2;
param vraag: product1 product2:= 1 2 3 2 3 2 3 2 3 4 3 2 5 2 3 6 3 2 7 2 3 8 3 2;
.run-file: CLSP-model voor parallelle machines model clsp_parallel.mod; data clsp_parallel.dat; solve; display productie_aantal; display voorraad_aantal; display kosten;
Bijlage 4: AMPL files van het geïntegreerd model voor parallelle machines .mod-file: Geïntegreerd model voor parallelle machines # ------------------------------------------------------# declareren variabelen en parameters # ------------------------------------------------------set ITEM; set PERIOD; set MACHINE;
param vastekost{m in MACHINE, t in PERIOD, i in ITEM}; param varkost{m in MACHINE, t in PERIOD, i in ITEM}; param holdkost{t in PERIOD, i in ITEM}; param vraag{t in PERIOD, i in ITEM}; param cap_max{m in MACHINE} > 0 integer; param big_M:= 10000; VIII
param l_p{m in MACHINE} > 0 integer; param l_r{m in MACHINE} > 0 integer; param prev_kost{m in MACHINE} > 0 integer; param corr_kost{m in MACHINE} > 0 integer; param aantal_PM{m in MACHINE} > 0 integer; param frequentie_PM{m in MACHINE} > 0 integer; param storingsfunctie{m in MACHINE, t in PERIOD};
# parameter N/k # parameter k
var productie_aantal{m in MACHINE, t in PERIOD, i in ITEM} >= 0 integer; var voorraad_aantal{t in PERIOD, i in ITEM} >= 0 integer; var item_in_periode{m in MACHINE, t in PERIOD, i in ITEM} binary; param capaciteit {m in MACHINE, t in PERIOD}:= cap_max[m] + (if exists {n in 1..aantal_PM[m]} t = (n-1)*frequentie_PM[m] + 1 then - l_p[m]) - l_r[m]*storingsfunctie[m, if t - floor(t/frequentie_PM[m])*frequentie_PM[m] <> 0 then t - floor(t/frequentie_PM[m])*frequentie_PM[m] else frequentie_PM[m]]; #-------------------------------------------------------# Objective function #-------------------------------------------------------minimize kosten: sum{m in MACHINE,n in 1..aantal_PM[m]}(prev_kost[m] + sum{t in PERIOD intersect ((n-1)*frequentie_PM[m]+1..n*frequentie_PM[m])}(corr_kost[m]* storingsfunctie[m, 1 + t-(n-1)*frequentie_PM[m]-1] + sum{i in ITEM} (vastekost[m,t,i]*item_in_periode[m,t,i] + varkost[m,t,i]*productie_aantal[m,t,i]))) + sum{t in PERIOD, i in ITEM}(holdkost[t,i]*voorraad_aantal[t,i]); minimize totale_productie_kosten: sum{m in MACHINE, t in PERIOD, i in ITEM}(vastekost[m,t,i]*item_in_periode[m,t,i] + varkost[m,t,i]*productie_aantal[m,t,i]) + sum{t in PERIOD, i in ITEM}(holdkost[t,i]* voorraad_aantal[t,i]); minimize totale_onderhouds_kosten: sum{m in MACHINE,n in 1..aantal_PM[m]}(prev_kost[m] + sum{t in PERIOD intersect ((n-1)*frequentie_PM[m]+1..n*frequentie_PM[m])}( corr_kost[m]*storingsfunctie[m, 1 + t-(n-1)*frequentie_PM[m]-1]));
#-------------------------------------------------------# Constraints #-------------------------------------------------------subject to constraint0{i in ITEM}: sum{m in MACHINE}(productie_aantal[m,1,i]) - voorraad_aantal[1,i] = vraag[1,i];
IX
subject to constraint1{i in ITEM, t in PERIOD: t<>1}: sum{m in MACHINE}(productie_aantal[m,t,i]) voorraad_aantal[t,i] = vraag[t,i];
+
voorraad_aantal[t-1,i]
-
subject to constraint2{m in MACHINE, t in PERIOD, i in ITEM}: productie_aantal[m,t,i] <= big_M * item_in_periode[m,t,i]; subject to constraint3{m in MACHINE,t in PERIOD}: sum{i in ITEM}(productie_aantal[m,t,i]) <= capaciteit[m,t];
.dat-file: Geïntegreerd model voor parallelle machines set ITEM:= P1 P2; set PERIOD:= 1 2 3 4 5 6 7 8; set MACHINE:= M1 M2; param cap_max:= M1 15 M2 15; param prev_kost:= M1 28 M2 28; param corr_kost:= M1 35 M2 35; param aantal_PM:= M1 2 M2 4; param frequentie_PM:= M1 4 M2 2; param l_p := M1 1 M2 1; param l_r := M1 5 M2 5;
# parameter N/k
# parameter k
# = a*Cmax
# = b*Cmax
param storingsfunctie: 1 2 3 4 5 6 7 8:= M1 0.901 1.489 1.664 1.749 1.799 1.833 1.857 1.875 M2 0.901 1.489 1.664 1.749 1.799 1.833 1.857 1.875;
X
param vastekost:= [M1,*,*]: 1 2 3 4 5 6 7 8 [M2,*,*]: 1 2 3 4 5 6 7 8 param varkost:= [M1,*,*]: 1 2 3 4 5 6 7 8 [M2,*,*]: 1 2 3 4 5 6 7 8 param holdkost: 1 2 3 4
P1 25 25 25 25 25 25 25 25 P1 25 25 25 25 25 25 25 25
P2:= 25 25 25 25 25 25 25 25 P2:= 25 25 25 25 25 25 25 25;
P1 5 5 5 5 5 5 5 5 P1 5 5 5 5 5 5 5 5
P2:= 5 5 5 5 5 5 5 5 P2:= 5 5 5 5 5 5 5 5; P1 2 2 2 2
2 2 2 2
P2:=
XI
5 6 7 8
2 2 2 2
2 2 2 2;
1 2 3 4 5 6 7 8
P1 2 3 2 3 2 3 2 3
P2:= 3 2 3 2 3 2 3 2;
param vraag:
.run-file: Geïntegreerd model voor parallelle machines model parallel_model.mod; data parallel_model.dat; solve; display productie_aantal; display voorraad_aantal; display capaciteit; display totale_productie_kosten; display totale_onderhouds_kosten; display kosten; #----------------------------------------------------------#Indien in tekstbestandje: alle # tekens wegdoen #----------------------------------------------------------#display productie_aantal > parallel_model_output.txt; #display voorraad_aantal > parallel_model_output.txt; #display capaciteit > parallel_model_output.txt; #display totale_productie_kosten > parallel_model_output.txt; #display totale_onderhouds_kosten > parallel_model_output.txt; #display kosten > parallel_model_output.txt;
XII
Bijlage 5: AMPL files van het model met de aanpassing van de onderhoudskosten .mod-file: Aanpassing onderhoudskosten # ------------------------------------------------------# declareren variabelen en parameters # ------------------------------------------------------set ITEM; set PERIOD; param vastekost{t in PERIOD, i in ITEM}; param varkost{t in PERIOD, i in ITEM}; param holdkost{t in PERIOD, i in ITEM}; param vraag{t in PERIOD, i in ITEM}; param cap_max > 0 integer; param big_M:= 10000; param l_p > 0 integer; param l_r > 0 integer; param prev_kost > 0 integer; param corr_kost > 0 integer; param aantal_PM > 0 integer; param frequentie_PM > 0 integer; param storingsfunctie{t in PERIOD};
# parameter N/k # parameter k
var productie_aantal{t in PERIOD, i in ITEM} >= 0 integer; #integer toegevoegd, want kwam geen integers uit, wat nt realistisch is var voorraad_aantal{t in PERIOD, i in ITEM} >= 0 integer; var item_in_periode{t in PERIOD, i in ITEM} binary; var productie_in_periode{t in PERIOD} binary; param capaciteit {t in PERIOD}:= cap_max + (if exists {n in 1..aantal_PM} t = (n-1)*frequentie_PM + 1 then - l_p) - l_r*storingsfunctie[ if t - floor(t/frequentie_PM)*frequentie_PM <> 0 then t - floor(t/frequentie_PM)*frequentie_PM else frequentie_PM]; #-------------------------------------------------------# Objective function #-------------------------------------------------------minimize kosten: sum{n in 1..aantal_PM}(prev_kost + sum{t in PERIOD intersect ((n-1)* frequentie_PM+1..n*frequentie_PM)}(corr_kost*productie_in_periode[t]* storingsfunctie[1 + t-(n-1)*frequentie_PM-1] + sum{i in ITEM}(vastekost[t,i]* item_in_periode[t,i] + varkost[t,i]*productie_aantal[t,i] + holdkost[t,i] *voorraad_aantal[t,i]))); XIII
minimize totale_productie_kosten: sum{t in PERIOD, i in ITEM}(vastekost[t,i]*item_in_periode[t,i] + varkost[t,i]* productie_aantal[t,i] + holdkost[t,i]*voorraad_aantal[t,i]); minimize totale_onderhouds_kosten: sum{n in 1..aantal_PM}(prev_kost + sum{t in PERIOD intersect ((n-1)* frequentie_PM+1..n*frequentie_PM)}(corr_kost*productie_in_periode[t]* storingsfunctie[1 + t-(n-1)*frequentie_PM-1])); #-------------------------------------------------------# Constraints #-------------------------------------------------------subject to constraint0{i in ITEM}: productie_aantal[1,i] - voorraad_aantal[1,i] = vraag[1,i]; subject to constraint1{i in ITEM, t in PERIOD: t<>1}: productie_aantal[t,i] + voorraad_aantal[t-1,i] - voorraad_aantal[t,i] = vraag[t,i]; subject to constraint2{t in PERIOD, i in ITEM}: productie_aantal[t,i] <= big_M * item_in_periode[t,i]; subject to constraint3{t in PERIOD}: sum{i in ITEM}(productie_aantal[t,i]) <= capaciteit[t]; subject to constraint4{i in ITEM, t in PERIOD}: productie_in_periode[t] >= item_in_periode[t,i];
De .dat en .run file zijn identiek als deze van paragraaf 9.2.
XIV
Bijlage 6: Oplossing voor paragraaf 6.2.2 Hieronder volgen de oplossingen voor het probleem van paragraaf 6.2. Dit is de oplossing waarbij de vraag manueel moest verdeeld worden en het geïntegreerd model voor de enkele machine werd gebruikt om een multi-machine probleem op te lossen.
Onderhoudscyclus Machine 1: T = 1τ
VRAAG Periode 1 2 3 4 5 6 7 8
Capaciteit Machine 1 14,495 14,495 14,495 14,495 14,495 14,495 14,495 14,495 115,960
Onderhoudscyclus machine 2
TOTALE KOSTEN T2 k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8
Onderhoudscyclus Machine 1: T = 2τ
VRAAG Periode 1 2 3 4 5 6 7 8
Capaciteit Machine 1 14,495 12,555 14,495 12,555 14,495 12,555 14,495 12,555 108,200
TOTALE KOSTEN T2 Machine 2 k=1 T: k=2 k=3 k=4 k=5 k=6 k=7 k=8
machine 1 machine 2 Totaal product 1 product 2 product 1 product 2 product 1 product 2 13 1 0 5 13 6 8 3 0 0 8 3 10 4 0 7 10 11 4 6 0 0 4 6 7 7 0 2 7 9 12 2 0 5 12 7 5 9 0 0 5 9 8 6 0 0 8 6 67 38 0 19 67 57 Machine 1 (T1 = 1τ) 1477,28 1477,28 1477,28 1477,28 1477,28 1477,28 1477,28 1477,28
Machine 2
Totaal
881,32 795,4 803,92 795,24 811,24 826 840,72 834,68
2358,6 2272,68 2281,2 2272,52 2288,52 2303,28 2318 2311,96
machine 1 machine 2 Totaal product 1 product 2 product 1 product 2 product 1 product 2 13 1 0 5 13 6 8 3 0 0 8 3 10 4 0 7 10 11 4 6 0 0 4 6 7 7 0 2 7 9 12 0 0 7 12 7 5 9 0 0 5 9 8 4 0 2 8 6 67 34 0 23 67 57
Machine 1 (T1 = 2τ)
Machine 2
Totaal
1374,6 1374,6 1374,6 1374,6 1374,6 1374,6 1374,6 1374,6
929,32 857,4 859,92 857,24 855,24 896 910,72 904,68
2303,92 2232 2234,52 2231,84 2229,84 2270,6 2285,32 2279,28
XV
Onderhoudscyclus Machine 1: T = 3τ
VRAAG Periode 1 2 3 4 5 6 7 8
Capaciteit Machine 1 14,495 12,555 11,680 14,495 12,555 11,680 14,495 12,555 104,510
T2
Machine 1 (T1 = 3τ)
Machine 2
Totaal
Onderhoudscyclus machine 2
TOTALE KOSTEN k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8
1279,43 1279,43 1279,43 1279,43 1279,43 1279,43 1279,43 1279,43
1021,32 939,4 981,92 963,24 969,24 1018 1032,72 1026,68
2300,75 2218,83 2261,35 2242,67 2248,67 2297,43 2312,15 2306,11
Periode 1 2 3 4 5 6 7 8
Capaciteit Machine 1 14,495 12,555 11,680 11,255 14,495 12,555 11,680 11,255 99,970
VRAAG
TOTALE KOSTEN T2 k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8
Onderhoudscyclus machine 2
Onderhoudscyclus Machine 1: T = 4τ
machine 1 machine 2 Totaal product 1 product 2 product 1 product 2 product 1 product 2 13 1 0 5 13 6 8 3 0 0 8 3 10 1 0 10 10 11 4 6 0 0 4 6 7 5 0 4 7 9 11 0 1 7 12 7 5 9 0 0 5 9 8 4 0 2 8 6 66 29 1 28 67 57
machine 1 machine 2 Totaal product 1 product 2 product 1 product 2 product 1 product 2 13 1 0 5 13 6 8 3 0 0 8 3 10 1 0 10 10 11 4 6 0 0 4 6 7 7 0 2 7 9 12 0 0 7 12 7 5 6 0 3 5 9 8 3 0 3 8 6 67 27 0 30 67 57 Machine 1 (T1 = 4τ)
Machine 2
Totaal
1308,21 1308,21 1308,21 1308,21 1308,21 1308,21 1308,21 1308,21
1014,32 928,4 964,92 962,24 946,24 981 1019,72 1013,68
2322,53 2236,61 2273,13 2270,45 2254,45 2289,21 2327,93 2321,89
XVI
Onderhoudscyclus Machine 1: T = 5τ
VRAAG Periode 1 2 3 4 5 6 7 8
Capaciteit machine 1 machine 2 Totaal Machine 1 product 1 product 2 product 1 product 2 product 1 product 2 14,495 13 1 0 5 13 6 12,555 8 3 0 0 8 3 11,680 10 1 0 10 10 11 11,255 4 6 0 0 4 6 11,005 7 4 0 5 7 9 14,495 12 2 0 5 12 7 12,555 5 7 0 2 5 9 11,680 8 3 0 3 8 6 99,720 67 27 0 30 67 57
Onderhoudscyclus machine 2
TOTALE KOSTEN
Onderhoudscyclus Machine 1: T = 6τ
VRAAG Periode 1 2 3 4 5 6 7 8
k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8
Machine 1 (T1 = 5τ) 1319,96 1319,96 1319,96 1319,96 1319,96 1319,96 1319,96 1319,96
Machine 2
Totaal
1006,32 932,4 960,92 954,24 966,24 985 1017,72 1011,68
2326,28 2252,36 2280,88 2274,2 2286,2 2304,96 2337,68 2331,64
Capaciteit machine 1 machine 2 Totaal Machine 1 product 1 product 2 product 1 product 2 product 1 product 2 14,495 13 1 0 5 13 6 12,555 8 3 0 0 8 3 11,680 10 1 0 10 10 11 11,255 4 6 0 0 4 6 11,005 7 4 0 5 7 9 10,835 10 0 2 7 12 7 14,495 5 9 0 0 5 9 12,555 8 4 0 2 8 6 98,875 65 28 2 29 67 57
TOTALE KOSTEN T2 Machine 2 k=1 T: k=2 k=3 k=4 k=5 k=6 k=7 k=8
Machine 1 (T1 = 6τ)
Machine 2
Totaal
1310,88 1310,88 1310,88 1310,88 1310,88 1310,88 1310,88 1310,88
1037,32 959,4 1003,92 983,24 995,24 1044 1058,72 1052,68
2348,2 2270,28 2314,8 2294,12 2306,12 2354,88 2369,6 2363,56
XVII
Onderhoudscyclus Machine 1: T = 7τ
VRAAG Periode 1 2 3 4 5 6 7 8
Capaciteit machine 1 machine 2 Totaal Machine 1 product 1 product 2 product 1 product 2 product 1 product 2 14,495 13 1 0 5 13 6 12,555 8 3 0 0 8 3 11,680 10 1 0 10 10 11 11,255 4 6 0 0 4 6 11,005 7 4 0 5 7 9 10,835 10 0 2 7 12 7 10,715 5 5 0 4 5 9 14,495 8 6 0 0 8 6 97,035 65 26 2 31 67 57
Onderhoudscyclus machine 2
TOTALE KOSTEN
Periode 1 2 3 4 5 6 7 8
Machine 2
Totaal
k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8
1313,76 1313,76 1313,76 1313,76 1313,76 1313,76 1313,76 1313,76
1059,32 987,4 1023,92 1011,24 1021,24 1058 1102,72 1096,68
2373,08 2301,16 2337,68 2325 2335 2371,76 2416,48 2410,44
Capaciteit machine 1 machine 2 Totaal Machine 1 product 1 product 2 product 1 product 2 product 1 product 2 14,495 13 1 0 5 13 6 12,555 8 3 0 0 8 3 11,680 10 1 0 10 10 11 11,255 4 6 0 0 4 6 11,005 7 4 0 5 7 9 10,835 10 0 2 7 12 7 10,715 5 5 0 4 5 9 10,625 8 2 0 4 8 6 93,165 65 22 2 35 67 57
TOTALE KOSTEN T2 k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8
Onderhoudscyclus machine 2
Onderhoudscyclus Machine 1: T = 8τ
VRAAG
T2
Machine 1 (T1 = 7τ)
Machine 1 (T1 = 8τ)
Machine 2
Totaal
1280,85 1280,85 1280,85 1280,85 1280,85 1280,85 1280,85 1280,85
1105,32 1023,4 1059,92 1069,24 1071,24 1094 1160,72 1168,68
2386,17 2304,25 2340,77 2350,09 2352,09 2374,85 2441,57 2449,53
XVIII