# 8th IMA International Conference on Modelling in Industrial Maintenance and Reliability Jacob T. Ormerod Vero Beach, Florida, USA

## Presentation on theme: "8th IMA International Conference on Modelling in Industrial Maintenance and Reliability Jacob T. Ormerod Vero Beach, Florida, USA"— Presentation transcript:

8th IMA International Conference on Modelling in Industrial Maintenance and Reliability Jacob T. Ormerod Vero Beach, Florida, USA jake@openrealiability.org Oxford University July 10, 2014

Jacob T. Ormerod Vero Beach, Florida, USA jake@openrealiability.org A word about OpenReliability.org Currently developing in the R Statistical Programming environment. Weibull Analysis – Abernethy Reliability Methods, package abrem (formerly package weibulltoolkit) Stochastic Simulator for Reliability Analysis, package stosim Spare Parts Analysis – Multi-Eshelon Techniques for Recoverable Item Control (METRIC, MOD-METRIC, VARI-METRIC,...)

Jacob T. Ormerod Vero Beach, Florida, USA jake@openrealiability.org The Example Problem Simple enough for my 87 year old mother to understand. Sophisticated enough that solution without stochastic approach is too difficult. Completely implemented in the R system. (commercial software not required) This paper describes the development of useful contributed package functions. In this environment we call a collection of useful functions that can be made to work together a “toolkit”. This is not intended to be the development of a mindless user application.

Multi-train Feed Inventory Primary Reactor

Charge Unit 1A Charge Unit 1BCharge Unit 1C Charge Unit 2ACharge Unit 2BCharge Unit 2C Charge Unit 3ACharge Unit 3BCharge Unit 3C Accumulator Storage Discharge Primary Reactor Charge Storage Example Problem RBD

Example Problem Statement The charge storage has a capacity for 16 hours of replacement time for a single charge train. An accumulator unit operation has the ability to replenish the complete storage inventory in 2weeks, but will be operated to attempt to top off the tank after any consumption. It is assumed that the accumulator operates on excess capacity from the charge feed system and does not reduce flow available to the primary reactor. The storage discharge unit has a capacity for replacement of a single charge train. The primary reactor system requires 3 days to restart upon any sudden, partial loss of charge flow. However, it can be turned down to 60% of production given an hour’s notice. The operators of this unit need to have a policy that will enable them to optimize total production from the primary reactor. This is expected to be accomplished by establishing a reserve inventory to be held in storage, which should then trigger turndown of the primary reactor to avoid damaging shutdown.

EventIDFDFP1RDRP1RP2 fail rate/yrMTTR UnavailAvailability 101 E 2,000 L 1.700 1.400Subsys A 4.38 14.590.007290.992707 102 E 3,500 N 16.000 4.000Subsys B 2.50 16.000.004570.995429 103 E 10,000 W 962Subsys C 0.88 85.080.008510.991492 7.60 23.320.020240.979762 Input Table ValuesAnalytical Summary 2 oo3 trains down sequentially(3 * 0.02) * (2 * 7.6) =0.912 Single Train Operational Data

SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 for( row in 1:nrow(Train1)) { set.seed(Train1\$Seed[row]) TTF<-rexp(NumRands,1/Train1\$FP1[row]) if(row==1) { TTR<-rlnorm(NumRands, Train1\$RP1[row], Train1\$RP2[row]) }else{ if(row==2) { TTR<-rnorm(Normand, Train1\$RP1[row], Train1\$RP2[row]) }else{ TTR<-rweibull(NumRands,Train1\$RP2[row], Train1\$RP1[row]) }} TTFmat<-rbind(TTFmat,TTF) TTRmat<-rbind(TTRmat,TTR) } Times To FailureTimes To Repair Getting Random Values for a Simulated History

Times To FailureTimes To Repair Building the Simulated History SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 Simulated History Event Queue TimeDurationOpLineEventID 3,461.3 26.11101 4,910.8 11.21102 8,021.5 82.01103 TimeDurationOpLineEventID 3,461.3 26.11101 Pull the first event for the Simulation History from the Queue

Times To FailureTimes To Repair Building the Simulated History SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 Simulated History Event Que TimeDurationOpLineEventID 3,461.3 26.11101 TimeDurationOpLineEventID 4,936.9 11.21102 8,047.6 82.01103 Delay the history time for remaining events in the Queue by repair time of last event

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue TimeDurationOpLineEventID 3,461.3 26.11101 SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 Event Clock Time 3,487.39 TimeDurationOpLineEventID 4,936.9 11.21102 8,047.6 82.01103 4,717.5 1.01101 Add the new event TTF to current EventClock time to get history time for new random event.

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue TimeDurationOpLineEventID 4,717.5 1.01101 4,936.9 11.21102 8,047.6 82.01103 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 Sort the Queue, then Pull the next event for the Simulation History from the Queue SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Que TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 Delay the history time for remaining events in the Queue by repair time of last event SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 TimeDurationOpLineEventID 4,937.9 11.21102 8,048.6 82.01103

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue Add the new event TTF to current EventClock time to get history time for new random event. TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 Event Clock Time 4,718.4 SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 TimeDurationOpLineEventID 4,937.9 11.21102 8,048.6 82.01103 7,184.3 32.31101

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 Sort the Queue, then Pull the next event for the Simulation History from the Queue TimeDurationOpLineEventID 4,937.9 11.21102 7,184.3 32.31101 8,048.6 82.01103 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 Delay the history time for remaining events in the Queue by repair time of last event SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 TimeDurationOpLineEventID 7,195.4 32.31101 8,059.7 82.01103

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 Add the new event TTF to current EventClock time to get history time for new random event. SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 Event Clock Time 4,949.1 TimeDurationOpLineEventID 7,195.4 32.31101 8,059.7 82.01103 10,126.37 21.41102

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 Continue Building the Simulated History SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 TimeDurationOpLineEventID 7,195.4 32.31101 8,059.7 82.01103 10,126.37 21.41102 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 7,195.4 32.31101

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue Continue Building the Simulated History SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 7,195.4 32.31101 8,092.0 82.01103 TimeDurationOpLineEventID 8,092.0 82.01103 9,235.9 1.91101 10,158.6 21.41102

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue Continue Building the Simulated History SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 7,195.4 32.31101 8,092.0 82.01103 9,317.9 1.91101 TimeDurationOpLineEventID 9,317.9 1.91101 10,240.7 21.41102 78,103.8 101.01103

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue Continue Building the Simulated History SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 7,195.4 32.31101 8,092.0 82.01103 9,317.9 1.91101 9,728.3 1.11101 TimeDurationOpLineEventID 9,728.3 1.11101 10,242.6 21.41102 78,105.7 101.01103

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue Continue Building the Simulated History TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 7,195.4 32.31101 8,092.0 82.01103 9,317.9 1.91101 9,728.3 1.11101 10,145.8 2.01101 TimeDurationOpLineEventID 10,145.8 2.01101 10,243.7 21.41102 78,106.8 101.01103 SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue Continue Building the Simulated History TimeDurationOpLineEventID 10,245.7 21.41102 14,715.1 7.81101 78,108.9 101.01103 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 7,195.4 32.31101 8,092.0 82.01103 9,317.9 1.91101 9,728.3 1.11101 10,145.8 2.01101 10,245.7 21.41102 SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue Continue Building the Simulated History SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 7,195.4 32.31101 8,092.0 82.01103 9,317.9 1.91101 9,728.3 1.11101 10,145.8 2.01101 10,245.7 21.41102 14,662.4 14.81102 TimeDurationOpLineEventID 14,662.4 14.81102 14,736.6 7.81101 78,130.3 101.01103

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue Continue Building the Simulated History SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 7,195.4 32.31101 8,092.0 82.01103 9,317.9 1.91101 9,728.3 1.11101 10,145.8 2.01101 10,245.7 21.41102 14,662.4 14.81102 14,751.4 7.81101 TimeDurationOpLineEventID 14,751.4 7.81101 18,773.6 20.11102 78,145.1 101.01103

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue Continue Building the Simulated History SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 7,195.4 32.31101 8,092.0 82.01103 9,317.9 1.91101 9,728.3 1.11101 10,145.8 2.01101 10,245.7 21.41102 14,662.4 14.81102 14,751.4 7.81101 14,779.2 6.81101 TimeDurationOpLineEventID 14,922.2 3.61101 18,788.2 20.11102 78,159.7 101.01103

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue Continue Building the Simulated History SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 TimeDurationOpLineEventID 14,922.2 3.61101 18,781.4 20.11102 78,152.9 101.01103 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 7,195.4 32.31101 8,092.0 82.01103 9,317.9 1.91101 9,728.3 1.11101 10,145.8 2.01101 10,245.7 21.41102 14,662.4 14.81102 14,751.4 7.81101 14,779.2 6.81101 14,922.2 3.61101

Times To FailureTimes To Repair Building the Simulated History Simulated History Event Queue SysASysBSysC 3,461.3 4,910.8 8,021.5 1,230.1 5,177.3 69,929.8 2,465.8 4,395.2 212.2 2,008.2 4,096.4 42,037.2 408.4 1,180.9 24,633.8 417.6 20.6 8,530.5 4,567.3 3,140.8 854.1 20.1 3,401.4 12,830.4 136.1 3,942.6 4,679.7 229.0 2,476.6 1,473.7 SysASysBSysC 26.1 11.2 82.0 1.0 21.4 101.0 32.3 14.8 130.5 1.9 20.1 82.2 1.1 23.7 121.1 2.0 21.1 59.6 7.8 20.7 96.5 6.8 22.3 98.3 3.6 18.8 160.1 1.4 18.3 81.9 TimeDurationOpLineEventID 3,461.3 26.11101 4,717.5 1.01101 4,937.9 11.21102 7,195.4 32.31101 8,092.0 82.01103 9,317.9 1.91101 9,728.3 1.11101 10,145.8 2.01101 10,245.7 21.41102 14,662.4 14.81102 14,751.4 7.81101 14,779.2 6.81101 14,922.2 3.61101 15,154.7 1.41101 TimeDurationOpLineEventID 15,154.7 1.41101 18,791.8 20.11102 78,163.2 101.01103

Creating the OpLine Detail Sim Histories Train1Train2Train3 Time Duration 720.6 0.87 1,107.9 1.24 1,417.2 14.70 1,725.5 1.84 2,750.4 1.52 3,022.3 16.01 3,901.6 2.21 4,144.2 4.16 5,397.1 12.22 6,538.5 2.78 6,552.0 18.47 7,710.1 0.17 8,162.4 8.27 9,902.0 2.91 11,542.1 87.59 Time Duration 4,718.4 0.58 5,520.2 190.51 5,759.6 3.99 7,181.5 31.02 9,551.7 7.78 9,722.9 16.73 10,339.8 1.88 10,847.3 115.06 13,132.9 1.15 15,686.1 17.61 17,256.3 18.34 20,572.7 17.49 21,627.7 6.34 22,345.2 13.88 22,499.8 9.71 Time Duration 12.7 13.45 1,480.9 1.00 4,580.0 10.29 5,104.3 0.30 5,269.8 20.32 5,788.9 2.75 6,253.8 14.80 6,377.7 12.54 7,104.4 18.31 10,690.6 4.91 11,041.3 16.35 11,192.9 20.97 15,073.7 52.40 16,833.8 1.98 17,001.5 97.84 Time DurationTrain 1Train 2Train 3 - 12.70111 12.7 13.45110 26.2 694.46111 720.6 0.87011 721.5 386.40111 1,107.9 1.24011 1,109.1 308.04111 1,417.2 14.70011 1,431.9 49.08111 1,480.9 1.00110 1,481.9 243.59111 1,725.5 1.84011 1,727.4 1,023.05111 2,750.4 1.52011 2,751.9 270.37111 3,022.3 16.01011 3,038.3 863.32111 3,901.6 2.21011 3,903.9 240.35111 4,144.2 4.16011 4,148.4 431.66111 4,580.0 10.29110 4,590.3 128.09111 4,718.4 0.58101 OpLine Detail

library(stosim) > Train1<-ChargeTrain data(ChargeTrain) OpLine EventID FD FP1 FP2 FP3 RD RP1 RP2 RP3 Seed Simulation_Years=1000 1 1 101 E 2000 0 0 L 1.7 1.4 0 3 Train1<-ChargeTrain 2 1 102 E 3500 0 0 N 16.0 4.0 0 9 Train2<-cbind(Train1[,-11],"Seed"=Train1[,11]+200) 3 1 103 E 10000 0 0 W 96.0 2.0 0 11 Train3<-cbind(Train2[,-11],"Seed"=Train2[,11]+200) sh1<-SimHistory(Train1,Simulation_Years) sh2<-SimHistory(Train2,Simulation_Years) dim(history) sh3<-SimHistory(Train3,Simulation_Years) > dim(history) ChargeSystem<-list(sh1, sh2, sh3) [1] 45441 6 history<-DetailOpLines(ChargeSystem) 7.6 events per yearstateMAT<-as.matrix(history[,4:6]) 2.0 lines per eventGenRate<-.rowSums(stateMAT,45441,3)/3 3.0 trains 45.6 expected linesGenRate[1:10] per year > GenRate[1:10] [1] 1.000 0.667 1.000 0.667 1.000 0.667 1.000 [8] 0.67 1.00 0.67 Availability<-sum(GenRate*history\$Duration)/(8760*1000) Availability twodown<-GenRate[sapply(GenRate, function(x) x==1/3)] > Availabilitylength(twodown) [1] 0.979674 > length(twodown) [1] 929 alldown<-GenRate[sapply(GenRate, function(x) x==0)] length(alldown) > length(alldown) [1] 6 167 years MTBF which(GenRate==0) > which(GenRate==0) [1] 3622 5474 10416 21626 22372 28486 X Exploring the OpLine Detail

EventIDFDFP1RDRP1RP2 fail rate/yrMTTR UnavailAvailability 101 E 2,000 L 1.700 1.400Subsys A 4.38 14.590.007290.992707 102 E 3,500 N 16.000 4.000Subsys B 2.50 16.000.004570.995429 103 E 10,000 W 962Subsys C 0.88 85.080.008510.991492 7.60 23.320.020240.979762 Input Table ValuesAnalytical Summary 2 oo3 trains down sequentially(3 * 0.02) * (2 * 7.6) =0.912

Exploring the OpLine Detail history[3610:3630,] > history[3610:3630,] PageTimeDurationTrain 1Train 2Train 3 3610 1677321.3 16.86011 3611 1677338.2 296.83111 3612 1677635 16.15011 3613 1677651.2 675.11111 3614 1678326.3 6.96011 3615 1678333.3 749.73111 3616 1679083 18.46110 3617 1679101.5 272.55111 3618 1679374 1.39110 3619 1679375.4 53.44111 3620 1679428.8 74.74110 3621 1679503.6 13.44100 3622 1679517 1.80000 3623 1679518.8 5.16100 3624 1679524 3.62101 3625 1679527.6 1,120.87111 3626 1680648.5 22.27110 3627 1680670.7 3.85100 3628 1680674.6 78.74110 3629 1680753.3 404.63111 3630 1681157.9 0.07110

model<-history[3610:3630,] > history[3610:3630,] reserveHrs<-5 TimeDurationTrain 1Train 2Train 3 EndInvMTwInv<-MultiTrainWithInventory( 677321.3 16.86011 16.00 model,16,reserveHrs,336, 1,.6,1) 677338.2 296.83111 16.00 677635 16.15011 5.00 > MTwInv 677651.2 675.11111 16.00TimeDurationProdRateDisCapExRunOut EmptyOn D 678326.3 6.96011 9.040 677,338.200.666667000 678333.3 749.73111 16.00677338.2 307.831000 679083 18.46110 5.00677646 5.150.666667000 679101.5 272.55111 16.00677651.2 1,442.811000 679374 1.39110 14.61679094 7.460.666667000 679375.4 53.44111 16.00679101.5 338.381000 679428.8 74.74110 5.00679439.8 64.740.666667000 679503.6 13.44100 -679504.6 5.000.6000 679517 1.80000 -679509.6 14.400010 679518.8 5.16100 -679524 3.620000 679524 3.62101 -679527.6 1,131.871000 679527.6 1,120.87111 16.00680659.5 12.270.666667000 680648.5 22.27110 5.00680671.7 2.850.6000 680670.7 3.85100 1.72680674.6 78.740.666667000 680674.6 78.74110 1.72680753.3 404.701000 680753.3 404.63111 16.00 681157.9 0.07110 15.93 Production History with Inventory Suport

Production History EntriesInventory Entries else Is GenRate is lower than last? At Failure Condition Was last condition an operational state?NoEND OF EVENT -record no change in inventory, path 101 Is current demand within discharge capability?NoEnter DischargeCapacityExceeded condition at beginning of train state. ProdRate = zero END OF EVENT -record no change in inventory, path 102 Is there any inventory in storage?NoEnter EmptyOnDemand condition at beginning of train state. ProdRate = zero END OF EVENT -record zero inventory, path 103 else Is the inventory sufficiently above Reserve? Inventory starts above reserve Will the end inventory reach Reserve? NoEND OF EVENT - only record end inventory for train state, path 104 Is the GenRate below TurndownLimit?NoEnter new ProdRate = GenRate condition at time reserve level was reached END OF EVENT - record end inventory at Reserve, path 105 YesEnter new ProdRate = TurndownLimit condition at time reserve level was reached Will operation at TurndownLimit run out inventory? NoEND OF EVENT - only record end inventory for train state, path 106 YesEnter RunOut condition at end of train state. ProdRate = zero END OF EVENT -record zero inventory, path 107 Logic for Production from Multi-Train system with Inventory

Inventory starts within Reserve elseWill duration of event permit full turndown? Will any inventory remain at end of TurndownTime? NoEnter RunOut condition before end ofturndown time. ProdRate = zero END OF EVENT -record zero inventory, path 108 Is the GenRate below TurndownLimit?NoEnter ProdRate = GenRate at end of turndown time END OF EVENT - only record end inventory for train state, path 109 YesEnter ProdRate = TurndownLimit condition at end of turndown time Will operation at TurndownLimit run out inventory? NoEND OF EVENT - only record end inventory for train state, path 110 YesEnter RunOut condition at end of train state. ProdRate = zero END OF EVENT -record zero inventory, path 111 Event Duration Less than Time for Turndown within Reserve Will operation at current rate cause RunOut?NoEND OF EVENT - only record end inventory for train state, path 112 YesEnter RunOut condition at end of train state. ProdRate = zero END OF EVENT -record zero inventory, path 113 Logic for Production from Multi-Train system with Inventory At Repair Condition else Is GenRate now equal to 1? Is ProdRate unchanged?NoProduction is fully restored. ProdRate = 1 add 2 to path Was there enough run time for refill to complete?NoEND OF EVENT -define inventory change according to RefillHrs capability, path 201/203 YesEND OF EVENT -inventory is now at CapacityHrs, path 202/204

Logic for Production from Multi-Train system with Inventory GenRate is not yet fully restored elseIs LastProdRate greater than GenRate? elseIs the inventory sufficiently above Reserve? Will the end inventory reach Reserve?NoEND OF EVENT - only record end inventory for train state, path 205 Is the GenRate below TurndownLimit?NoEnter new ProdRate = GenRate condition at time reserve level was reached END OF EVENT - record end inventory at Reserve, path 206 YesEnter new ProdRate = TurndownLimit condition at time reserve level was reached Will operation at TurndownLimit run out inventory? NoEND OF EVENT - only record end inventory for train state, path 207 YesEnter RunOut condition at end of train state. ProdRate = zero END OF EVENT -record zero inventory, path 208 Inventory starts within Reserve Is the GenRate below TurndownLimit?NoEnter ProdRate = GenRate immediatelyEND OF EVENT - no change to inventory, path 209 YesEnter ProdRate = TurndownLimit immediately Will any inventory remain at end of Train State? NoEND OF EVENT - only record end inventory for train state, path 210 YesEnter RunOut condition at end of turndown time. ProdRate = zero END OF EVENT -record zero inventory, path 211 no demand is occurring on storage Is GenRate now > = TurndownLimit?Nono change in ProdRate, which must be zeroEND OF EVENT -record no change in inventory, path 212 Is GenRate greater than Last ProdRate?Nono change in ProdRateEND OF EVENT -record no change in inventory, path 213 YesProduction is restored to GenRateEND OF EVENT -record no change in inventory, path 214

Completion of Model Analysis for(x in seq(1.5,15,by=.5)) { ChgTwInv<-MultiTrainWithInventory(ChargeTrainParallelHistory, 16,x,336, 1,.6,1) wid<-ChgTwInv[[1]] DischargeCapExceeded<-sum(wid\$DisCapEx) RunOut=sum(wid\$RunOut) EmptyOnDemand<-sum(wid\$EmptyOnD) Reactor_Restarts<-DischargeCapExceeded+RunOut+EmptyOnDemand Availability<-sum(wid\$Duration*wid\$ProdRate)/(Simulation_Years*8760+Reactor_Restarts*72) thisDFline<-data.frame(ReserveHrs=x,DischargeCapExceeded=DischargeCapExceeded, RunOut=RunOut, EmptyOnDemand=EmptyOnDemand, Availability=Availability) ChargeTrain2PrimaryReactor<-rbind(ChargeTrain2PrimaryReactor,thisDFline) } Model<-ChargeTrain2PrimaryReactor Reserve_Hours<-Model\$ReserveHrs Reactor_Availability<-Model\$Availability plot(Reserve_Hours,Reactor_Availability,type="l") Usage MultiTrainWithInventory(model, CapacityHrs, ReserveHrs, RefillTime, DischargeCap=1, TurndownLimit=0.6, TurndownTime=1, ProgRpt=FALSE)

Expanded Considerations MulitiTrainWithInventory was designed to take restraining parameters of the example problem as variables. This enables its proactive use in design. What is the value of additional storage capacity? Is a single train discharge capability too limiting? What is an effective accumulator design?

Expanded Considerations With simulated history for the system so developed what other kind of questions can be posed? What does the distribution of annual availability look like? What is the confidence in meeting availability commitments? If the charge feed system crosses a contractual barrier, what might the effect of contract performance penalties be?

Expanded Considerations What other type of problems are suited to stochastic, discrete event modeling? Multiple supply systems of varied capacity and design. Service to multiple customers from a pipeline network. Distribution of available product to clients during curtailment. Account for compression and piping (pumping) limitations. Account for pressure drop in pipeline system. More Ideas???

Thank You

Similar presentations