Applying canonical models in a fault tree encoded in a BBN

The front end.
Post Reply
Posts: 5
Joined: Wed Mar 29, 2017 10:28 am

Applying canonical models in a fault tree encoded in a BBN

Post by mlfee » Sat Jun 02, 2018 5:55 pm


I would like to have advice/tips on how I can use NOISY-MAX nodes on a fault tree encoded in a BBN.

I have encoded a fault tree into a BBN, based on Bobbio et al's paper ( ... l-text.pdf). I have done that in order to use BBN to alter a probability feeding in to fault tree, based on observations and that there can be a single event affecting multiple entries in a fault tree - or nodes as the fault tree has been encoded into a BBN.

It is based on this fault tree found on page 257 of the above link and is attached as Model 1.

I have used "___ Input" nodes as dummy nodes feeding into the fault tree nodes. By "dummy", I mean, I select the "State 1" - Failure for all of these input nodes in order to propagate the failure probabilities from e.g. P1 input = State 1, to P1, to S1. At P1 the CPTs of when P1 Input = State 0 has been written as "0" and "1", and the failure probabilities have been written into the column of P1 Input = State 1 (Failure). Then at the equivalent AND/OR gates of D1, S1, S2 and TE-Fault, the CPTS are encoded as "0" or "1" depending if it is an AND or OR gate.

At these equivalent gate nodes(binary) - D1, S1, S2 and TE-Fault, I tried to write it as as a NOISY-OR or NOISY-AND gate, by specifiying the LEAK = "0" and "1". I think I have encoded it correctly (Or maybe not, but when I click on the reveal CPT button on a NOISY-AND/OR node, it shows the same CPT as that I have generated base on a general chance node). I have attached this as "Model 2".

Now I would like to do the same as on page 257 of the Bobbio paper, and include a PS (power supply node), and that this event interacts with the P1, P2 and TE=Fault. PS has three states (Correct, Defective, Failure).

My main question is how do I encode the PS node as a NOISY-MAX in order to correctly represent the relationship I desire between PS and P1, P2 and PS and TE-Fault.

PS and TE-Fault

I have gone through the Jaundice tutorial ( where it guides how to set up the CPT for a multi-state node like Jaundice, and to order the states from highest to lowest). and also read Mareks paper that NOISY-MAX is a generalisation of the NOISY-OR...and here is my problem.

I would like the Node PS to Te-Fault to be represented as how N and N input is feeding to TE-Fault, it seems feasible for the a binary state node like N, but I can't seem to get it right for PS ( 3 states) to TE-Fault.

If data tells me that P(PS= Correct)=0.85, P(PS=Defective)=0.05 and P(PS=Failure) = 0.1 (summing to 1) is NOISY-MAX of PS the correct way to do it, such that I can represent it as I have done for N and N Input to TE-Fault?

Seeing that I could use NOISY-OR for a 2 state node (in Model 2) and representing in that manner, I tried to use NOISY-MAX for a 3-state node like PS (Model 3).

What I have done in Model 3, I have written that in the NOISY-MAX node of PS, given PS Input = Correct, is P(PS= Correct)=0.85, P(PS=Defective)=0.05 and P(PS=Failure) = 0.1 and for PS Input = Defective, it is P(PS= Correct)=0.05, P(PS=Defective)=0.85 and P(PS=Failure) = 0.1, and the PS Input = Failure had greyed out boxes of (0,0,1)

It doesn't look right, as when I select observation in PS, PS Input and Copy of PS as "failure", TE-Fault returns a probability of State 1 as 1, instead of calculating the failure as an OR-gate and considering the failure probabilities of S12, N and PS.

PS and P1, P2

At the node P1 and P2, it is to alter the probability of P1 given the states of PS, the idea is that when PS = Defective, it should have a higher rate of failure than when PS = Correct. In order to represent the desired probability at P1, I have to select the observation at PS ("Correct") and at PS input ("Correct"), and it seems to reflect the correct probabilities, so I think I I have described the CPT at P1 and P2 correctly.

But how should PS be encoded then, if I want to avoid clicking the observation twice at PS and PS Input.

Currently at my wits end, and some tips will be useful for me , thank you so much for your time.
Model 3
(14.69 KiB) Downloaded 93 times
Model 1
(12.01 KiB) Downloaded 94 times
Model 2
(3.14 KiB) Downloaded 98 times

marek [BayesFusion]
Site Admin
Posts: 271
Joined: Tue Dec 11, 2007 4:24 pm

Re: Applying canonical models in a fault tree encoded in a BBN

Post by marek [BayesFusion] » Mon Jul 02, 2018 2:47 pm

I would love to help but after reading your long post, I feel that I am rather confused.

I'm afraid I have a hard time understanding your Model 2. You are saying that the child nodes are Noisy-OR but they have just one parent. OR is not a unary operator, so I am not 100% sure what you want to accomplish. In order for a Noisy-OR gate to represent the OR function, the leak has to be zero but also the influences have to be all 1. They you will receive exactly what you have in Model 1.

I am confused also by your Model 3. PS nodes have three state and they don't seem to be sorted from the strongest to the weakest. This is a precondition to the Noisy-MAX node. Before you have all parents and the child fulfill this condition, you cannot start defining the gate. Otherwise, you will get very quickly confused about the meaning of the parameters.

A good paper to read in order to understand the intricacies of canonical models and how Noisy-OR/MAX nodes work is the following:

There is a reference to this paper in the GeNIe manual.

On a side note, I definitely suggest using meaningful names for states in a Bayesian network. If you use SHIFT when dropping a node in the graph window, it will allow you to use some standard names, such as True/False, etc. State0 and State1 can get you easily confused. They are automatically assigned to states because a GeNIe is syntactically correct at all times.
I hope this helps,


Post Reply