Post date: Mar 11, 2014 5:10:6 PM
#################################################################################
#################################################################################
#################################################################################
#################################################################################
# Reliability of a noncoherent system
# Consider a pump, whose reliability is p, pumping liquid into
# a vessel monitored by a level sensor whose reliability is s,
# which informs a level controller whose reliability is c.
# The reliability of this system is nonunate. Below is an
# elaboration of the interval calculation of the system's
# reliability
F <- function(a,b,c) return(a * c + b - b * c)
f <- function(a,b,c, u,v,w,x,y,z) return(F(a,b,c))
sc = corners(f, c(both,both,both), a,b,c)
plotbox(sc,new=FALSE,col='red')
# translate input from experts into parameters
q <- function(lambda,mu) return(pexp(500, lambda+mu) / (1 + mu/lambda)) # translate lambda and mu to characterizations of the component unavailability
# do the analysis
pump = q1 = q(1e-3, 0.1)
sensor = q2 = q(2e-3, 5e-2)
controller = q3 = q(3e-3, 1/60)
pump; sensor; controller # 0.00990099, 0.03846154, 0.1525342
f(pump,sensor,controller) # 0.03410508
//////////////////////////////////////////////////////////////////////////////////////
// characterize the uncertainty arbitrarily...plus or minus 30%
pump = measure(q1, 30%)
sensor = measure(q2, 30%)
controller = measure(q3, 30%)
range pump; range sensor; range controller
[ 0.003960396, 0.01584159]
[ 0.01538461, 0.06153847]
[ 0.06101367, 0.2440548]
n = ncs(pump,sensor,controller)
c = corners(pump,sensor,controller)
clear; s = sir(pump,sensor,controller, 20)
m = mca(pump,sensor,controller, 1000)
show s in blue; show n in black; show c in green; show m in red
range(n); range(s); range(c); range(m)
[ 0.0006075025, 0.06446601]
[ 0.01199703, 0.05903612]
[ 0.01259648, 0.05875033]
[ 0.01516103, 0.05562977]
//////////////////////////////////////////////////////////////////////////////////////
// natural (minimal) uncertainty, from significant digits
pump = q1 = q([1e-3 per hour], [0.1 per hour])
sensor = q2 = q([2e-3 per hour], [5e-2 per hour])
controller = q3 = q([3e-3 per hour], 1/[60 hours]) + 0
pump; sensor; controller
[ 0.003322259, 0.02912622]
[ 0.02654867, 0.05263158]
[ 0.1208633, 0.1853325]
[1e-3 per hour]; [0.1 per hour]
[ 0.0005, 0.0015] per hour
[ 0.05, 0.15] per hour
[2e-3 per hour]; [5e-2 per hour]
[ 0.0015, 0.0025] per hour
[ 0.045, 0.055] per hour
[3e-3 per hour]; [60 hours]
[ 0.0025, 0.0035] per hour
[ 55, 65] hours
n = ncs(pump,sensor,controller)
c = corners(pump,sensor,controller)
clear; s = sir(pump,sensor,controller, 20)
m = mca(pump,sensor,controller, 1000)
clear; show s in blue; show n in black; show c in green; show m in red
range(n); range(s); range(c); range(m)
[ 0.01719587, 0.05482085]
[ 0.02199165, 0.05004216]
[ 0.02224406, 0.04979065]
[ 0.0235281, 0.04926684]