###########################################################
# #
# Construct a BDD and a ROBDD for a given consecutive #
# threshold system and evaluate its reliability #
# #
###########################################################
from c_bdd import BDDSystem
from c_robdd import ROBDDSystem
from c_conthreshold import BDDConsecutiveThreshold, ROBDDConsecutiveThreshold
# Component reliabilities
p = 0.5
# Component weights
a = [8, 7, 6, 5, 3, 2]
# Threshold
b = 10
# Initial value
s0 = 0
# Number of components
n = len(a)
# Sum of weights
wsum = 0
for wg in a:
wsum += wg
sys = BDDSystem(BDDConsecutiveThreshold(a, wsum, s0, b))
result = sys.calculateReliability0(p)
sys.printSystem()
print("")
print("---------------")
print("BDD-method:")
print("---------------")
print("System unreliability = ", result[0])
print("System reliability = ", result[1])
print("")
print("------------------------")
print("")
sys = ROBDDSystem(ROBDDConsecutiveThreshold(a, wsum, s0, b))
result = sys.calculateReliability0(p)
sys.printSystem()
print("")
print("---------------")
print("ROBDD-method:")
print("---------------")
print("System unreliability = ", result[0])
print("System reliability = ", result[1])