{"id":1209,"date":"2014-02-28T23:26:12","date_gmt":"2014-03-01T03:26:12","guid":{"rendered":"http:\/\/www.reliabilityanalytics.com\/blog\/?p=1209"},"modified":"2014-02-28T23:29:55","modified_gmt":"2014-03-01T03:29:55","slug":"using-the-discrete-event-simulation-tool-for-spare-parts-planning","status":"publish","type":"post","link":"https:\/\/reliabilityanalytics.com\/blog\/2014\/02\/28\/using-the-discrete-event-simulation-tool-for-spare-parts-planning\/","title":{"rendered":"Using the Discrete Event Simulation Tool for Spare Parts Planning"},"content":{"rendered":"<p>Discrete event simulation (DES) is a powerful technique that can be used to to solve more complex system reliability modeling and supportability problems. This article discusses using the <a title=\"Reliability Analytics Toolkit Discrete Event Simulation tool\" href=\"http:\/\/reliabilityanalyticstoolkit.appspot.com\/discrete_event_simulation\">Discrete Event Simulation<\/a>\u00a0tool in the Reliability Analytics Toolkit for spare parts planning purposes.<\/p>\n<p><!--more--><em>This article uses the pre-filled input in the\u00a0<a title=\"Reliability Analytics Toolkit Discrete Event Simulation tool\" href=\"http:\/\/reliabilityanalyticstoolkit.appspot.com\/discrete_event_simulation\">Discrete Event Simulation<\/a>\u00a0tool &#8211; simply click the calculate button to experiment for yourself.<\/em><\/p>\n<p>In order to generate a spare parts usage table, part numbers must be defined for each serial numbered item entered into Input #1, as highlighted in yellow below. \u00a0The tool expects part number to be in the fifth input field, to the right of a part description.<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1210\" title=\"des_spare_parts_planning_1\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_1.png\" alt=\"\" width=\"728\" height=\"530\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_1.png 728w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_1-300x218.png 300w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_1-412x300.png 412w\" sizes=\"auto, (max-width: 728px) 100vw, 728px\" \/><\/a><\/p>\n<p>Setting the simulation for 100 trials of 8,760 hours each results in the following table showing per trial spare parts usage. The table also provides an indication of the variability in spare parts required by showing the maximum and minimum number of spare parts required over the 100 trials.<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1211\" title=\"des_spare_parts_planning_2\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_2.png\" alt=\"\" width=\"732\" height=\"275\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_2.png 732w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_2-300x112.png 300w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_2-500x187.png 500w\" sizes=\"auto, (max-width: 732px) 100vw, 732px\" \/><\/a><\/p>\n<p><strong>Spares Table Observations:<\/strong><\/p>\n<p><strong><\/strong>In the first row, part number 223141 was coded to fail exactly on 2,190 hour intervals. Since we simulate for 8,760 hours per trial, one might expect four failures, and thus four spares would be required (8760\/2190 = 4). \u00a0However the table shows a max, min and average spares of 3 required for this part number. \u00a0This is because the part number was coded to take one hour to restore. \u00a0Therefore, a fourth spare would not be needed until the simulation clock reaches 8,764 hours, which accounts for the one hour restoration time for each of the four failures. Because each trial ends at time 8,760 hours, three spares are required, not four. However, extending the simulation time by four hours to 8,764 hours in Input #4A will result in 4 spares required for part number 223141.<\/p>\n<p>The second row of the table, part number 543221, required an average of 2.3 failures with a minimum of 1 and a maximum of 4. There are two 543221 parts in the system, with an MTBF of 5,000 hours. \u00a0At first glance one might expect\u00a0(1\/5000)*2*8760 = 3.5 failures, and thus an average of 3.5 spares required. Why does the table indicate only 2.3 spares for part number 543221? The reason that this part number is associated with sn3 and sn4 and these two serial numbers were coded to be restored only on 4,000 hour intervals (input #3, regularly scheduled preventive maintenance, shown below). Therefore, there is often a significant wait time for restoration when no further failures can occur, thus no further spares are required.<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1216\" title=\"des_spare_parts_planning_3\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_3.png\" alt=\"\" width=\"437\" height=\"282\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_3.png 437w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_3-300x193.png 300w\" sizes=\"auto, (max-width: 437px) 100vw, 437px\" \/><\/a><\/p>\n<p>Deleting the two rows highlighted in the above picture and rerunning the simulation results in the following spares table:<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1217\" title=\"des_spare_parts_planning_4\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_4.png\" alt=\"\" width=\"695\" height=\"282\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_4.png 695w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_4-300x121.png 300w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_4-500x202.png 500w\" sizes=\"auto, (max-width: 695px) 100vw, 695px\" \/><\/a><\/p>\n<p>However, 3.1 spares is still less than the 3.5 expected. \u00a0A second reason why we are getting an average that is less than expected is because the serial numbers associated with this part number were coded in input #1 to take 68 hours to restore, with a standard deviation of 48 hours and a normal distribution, as shown below:\u00a0<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1218\" title=\"des_spare_parts_planning_5\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_5.png\" alt=\"\" width=\"631\" height=\"199\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_5.png 631w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_5-300x94.png 300w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_5-500x157.png 500w\" sizes=\"auto, (max-width: 631px) 100vw, 631px\" \/><\/a><\/p>\n<p>Re-encoding these two entries to reflect instantaneous repair by entering a zero repair time:<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1219\" title=\"des_spare_parts_planning_6\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_6.png\" alt=\"\" width=\"635\" height=\"93\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_6.png 635w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_6-300x43.png 300w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_6-500x73.png 500w\" sizes=\"auto, (max-width: 635px) 100vw, 635px\" \/><\/a><\/p>\n<p>and rerunning the simulation results in the following spares table showing an average of 3.3 spares required:<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_7.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1220\" title=\"des_spare_parts_planning_7\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_7.png\" alt=\"\" width=\"696\" height=\"277\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_7.png 696w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_7-300x119.png 300w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_7-500x198.png 500w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/a><\/p>\n<p>The remaining difference (3.3 versus the expected 3.5) is caused by the variability with simulating only 100 trials. Leaving the seed input blank (input #5) and rerunning the 100 trial simulation several times will result in an average spares required for part number 543221 that varies around 3.5.<\/p>\n<p>Running the simulation for 1000 trials (with instantaneous repair) results in the 3.5 average spares expected:<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_8.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1221\" title=\"des_spare_parts_planning_8\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_8.png\" alt=\"\" width=\"748\" height=\"278\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_8.png 748w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_8-300x111.png 300w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_8-500x185.png 500w\" sizes=\"auto, (max-width: 748px) 100vw, 748px\" \/><\/a><\/p>\n<p>The above table shows that for 1000 trials, the maximum spares ever required for a one year period was 11. So, at least one time in 1000 trials, 11 spares were required. Checking this result against the Poisson spares calculator, with a confidence of 0.999, results in 11 spares being required:<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1223\" title=\"des_spare_parts_planning_9\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9.png\" alt=\"\" width=\"717\" height=\"539\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9.png 717w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9-300x225.png 300w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9-399x300.png 399w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/a><\/p>\n<p>A confidence of 0.999 means that 999 times out of 1000 we expect 11 spares to be sufficient; however, for one time out of 1000 we expect more than 11 spares to be required. \u00a0For the simulation results shown above, the maximum was 11 spares after 1000 trials, therefore, this is not exactly what is expected based on the Poisson calculation above. \u00a0We would expect that for at least one trial would require 12 spares. This unexpected result is again due to the variability associated with the simulation and not fully reaching a steady state. Removing the seed in input #5 and rerunning the simulation several times will result in the expected maximum of 12 spares, as shown below:<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9a.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1224\" title=\"des_spare_parts_planning_9a\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9a.png\" alt=\"\" width=\"620\" height=\"277\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9a.png 620w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9a-300x134.png 300w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9a-500x223.png 500w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<p>The Flow regulator, part number 665789 shown in the third row above requires an average of 17.1 spares. This item fails approximately once every 800 hours. \u00a0On average, we would expect 8760\/800=10.95 failures for one item. This part was coded to take 168 hours to repair, therefore, on average there is 8760-10.95*168 = 6920 hours during which the item can fail (it is down for repair other times). The expected failures for one item during this operating time is 6920\/800 = 8.7 failures. For two items, 2*8.7 = 17.4, which is about what the average spares required is based on the simulation results. Clicking the up\/down charts helps visualize this process, for example showing 18 failures for trial #1:<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9d.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1232\" title=\"des_spare_parts_planning_9d\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9d.png\" alt=\"\" width=\"1003\" height=\"175\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9d.png 1003w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9d-300x52.png 300w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9d-1000x175.png 1000w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9d-500x87.png 500w\" sizes=\"auto, (max-width: 1003px) 100vw, 1003px\" \/><\/a><\/p>\n<p>The fourth row in the above table, part number 830254, shows only 3.3 failures required. This may seem wrong at first, as this item fails every 1000 hours. However, this part number is associated with sn8 and sn9, which were specified to be restored to as good as new every 525 hours in Input #3:<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9b.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1227\" title=\"des_spare_parts_planning_9b\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9b.png\" alt=\"\" width=\"447\" height=\"276\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9b.png 447w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9b-300x185.png 300w\" sizes=\"auto, (max-width: 447px) 100vw, 447px\" \/><\/a><\/p>\n<p>Therefore, since this part number 830254 was coded to fail in accordance with a Weibull distribution, with a characteristic life of 1000 hours, and a shape parameter of 3.5, which approximates a normal distribution probability density function, most failures will occur after 525 hours of life. \u00a0Therefore, because we have specified with Input #3 that new bearings are installed every 525 hours, only an average of 3.3 spares are needed for <span style=\"text-decoration: underline;\">corrective<\/span> maintenance, but the price to pay for the lack of failures during operation is than an average of 31.5 spares are needed for <span style=\"text-decoration: underline;\">preventive<\/span> maintenance:\u00a0<a href=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9c.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1228\" title=\"des_spare_parts_planning_9c\" src=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9c.png\" alt=\"\" width=\"596\" height=\"390\" srcset=\"https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9c.png 596w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9c-300x196.png 300w, https:\/\/reliabilityanalytics.com\/blog\/wp-content\/uploads\/2014\/02\/des_spare_parts_planning_9c-458x300.png 458w\" sizes=\"auto, (max-width: 596px) 100vw, 596px\" \/><\/a><\/p>\n<p>8760\/525=16.7, therefore 16 PM actions per year are made for each bearing. Since we have two bearings, we expect 2*16=32 bearings to be used for PM, which agrees reasonably with the simulation result of 31.5.<\/p>\n<p>The final row of the table for 830258, Power Supply, requires an average of 1.3 spares per year. \u00a0There are three power supplies, so we expect\u00a0(1\/20000)*3*8760 = 1.3 failures, therefore, the simulation result is as expected.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Discrete event simulation (DES) is a powerful technique that can be used to to solve more complex system reliability modeling and supportability problems. This article discusses using the Discrete Event Simulation\u00a0tool in the Reliability Analytics Toolkit for spare parts planning &hellip; <a href=\"https:\/\/reliabilityanalytics.com\/blog\/2014\/02\/28\/using-the-discrete-event-simulation-tool-for-spare-parts-planning\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59,55],"tags":[68,42],"class_list":["post-1209","post","type-post","status-publish","format-standard","hentry","category-reliability-modeling","category-system-modeling","tag-simulation","tag-toolkit-examples"],"_links":{"self":[{"href":"https:\/\/reliabilityanalytics.com\/blog\/wp-json\/wp\/v2\/posts\/1209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/reliabilityanalytics.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/reliabilityanalytics.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/reliabilityanalytics.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/reliabilityanalytics.com\/blog\/wp-json\/wp\/v2\/comments?post=1209"}],"version-history":[{"count":13,"href":"https:\/\/reliabilityanalytics.com\/blog\/wp-json\/wp\/v2\/posts\/1209\/revisions"}],"predecessor-version":[{"id":1234,"href":"https:\/\/reliabilityanalytics.com\/blog\/wp-json\/wp\/v2\/posts\/1209\/revisions\/1234"}],"wp:attachment":[{"href":"https:\/\/reliabilityanalytics.com\/blog\/wp-json\/wp\/v2\/media?parent=1209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/reliabilityanalytics.com\/blog\/wp-json\/wp\/v2\/categories?post=1209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/reliabilityanalytics.com\/blog\/wp-json\/wp\/v2\/tags?post=1209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}