def get_alarm3_prob(bayes_net):
    """Calculate theprobability of the
    temperature being hot (T/F) in the
    power plant system, given that the
    alarm sounds and neither the gauge
    nor alarm is faulty."""
    # TODO: finish this function
    MA = bayes_net.get_node_by_name('main alarm')
    B = bayes_net.get_node_by_name('burglar')
    A2 = bayes_net.get_node_by_name('alarm 2')
    A3 = bayes_net.get_node_by_name('alarm 3')
    engine = JunctionTreeEngine(bayes_net)
    engine.evidence[A2] = False
    engine.evidence[MA] = False
    engine.evidence[B] = True
    Q = engine.marginal(A3)[0]
    index = Q.generate_index([True],range(Q.nDims))
    temp_prob = Q[index]

    engine2 = EnumerationEngine(bayes_net)
    engine2.evidence[A2] = False # A won against B
    engine2.evidence[MA] = False # A won against B
    engine2.evidence[B] = True # A won against B

    Q = engine.marginal(A3)[0]
    posterior = Q.table
    print "Or:" , posterior.tolist()

    return temp_prob
def get_gauge_prob(bayes_net, gauge_hot):
    """Calculate the marginal probability of the gauge showing hot (T/F) in the power plant system."""
    # TODO: finish this function
    G_node = bayes_net.get_node_by_name('gauge')
    engine = JunctionTreeEngine(bayes_net)
    Q = engine.marginal(G_node)[0]
    index = Q.generate_index([gauge_hot],range(Q.nDims))
    prob = Q[index]
    return prob
def get_alarm_prob(bayes_net, alarm_rings):
    """Calculate the marginal probability of the alarm ringing (T/F) in the power plant system."""
    # TODO: finish this function
    A_node = bayes_net.get_node_by_name('alarm')
    engine = JunctionTreeEngine(bayes_net)
    Q = engine.marginal(A_node)[0]
    index = Q.generate_index([alarm_rings],range(Q.nDims))
    prob = Q[index]
    return prob
def get_not_G_given_not_N(bayes_net):
    N_node = bayes_net.get_node_by_name('netflix')
    G_node = bayes_net.get_node_by_name('graduate')

    engine = JunctionTreeEngine(bayes_net)
    engine.evidence[N_node] = False
    Q = engine.marginal(G_node)[0]
    index = Q.generate_index([False], range(Q.nDims))
    graduate_prob = Q[index]
    return (graduate_prob)
def get_A_given_E(bayes_net):
    E_node = bayes_net.get_node_by_name('exercise')
    A_node = bayes_net.get_node_by_name('assignment')

    engine = JunctionTreeEngine(bayes_net)
    engine.evidence[E_node] = True
    Q = engine.marginal(A_node)[0]
    index = Q.generate_index([True], range(Q.nDims))
    assignment_prob = Q[index]
    return (assignment_prob)
def get_gauge_prob(bayes_net, gauge_hot):
    """Calculate the marginal
    probability of the gauge
    showing hot (T/F) in the
    power plant system."""
    G_node = bayes_net.get_node_by_name("gauge")
    engine = JunctionTreeEngine(bayes_net)
    Q = engine.marginal(G_node)[0]
    index = Q.generate_index([gauge_hot], range(Q.nDims))
    gauge_prob = Q[index]

    return gauge_prob
    raise NotImplementedError
def get_E_given_G_N(bayes_net):
    E_node = bayes_net.get_node_by_name('exercise')
    G_node = bayes_net.get_node_by_name('graduate')
    N_node = bayes_net.get_node_by_name('netflix')

    engine = JunctionTreeEngine(bayes_net)
    engine.evidence[G_node] = True
    engine.evidence[N_node] = True
    #engine.evidence[N_node] = False
    Q = engine.marginal(E_node)[0]
    index = Q.generate_index([True], range(Q.nDims))
    exercise_prob = Q[index]
    return (exercise_prob)
def get_C_given_G_E(bayes_net):
    C_node = bayes_net.get_node_by_name('club')
    G_node = bayes_net.get_node_by_name('graduate')
    E_node = bayes_net.get_node_by_name('exercise')

    engine = JunctionTreeEngine(bayes_net)
    engine.evidence[G_node] = True
    engine.evidence[E_node] = True
    #engine.evidence[N_node] = False
    Q = engine.marginal(C_node)[0]
    index = Q.generate_index([True], range(Q.nDims))
    club_prob = Q[index]
    return (club_prob)
def get_alarm_prob(bayes_net, alarm_rings):
    """Calculate the marginal
    probability of the alarm
    ringing (T/F) in the
    power plant system."""
    A_node = bayes_net.get_node_by_name("alarm")
    engine = JunctionTreeEngine(bayes_net)
    Q = engine.marginal(A_node)[0]
    index = Q.generate_index([alarm_rings], range(Q.nDims))
    alarm_prob = Q[index]

    return alarm_prob
    raise NotImplementedError
def get_alarm_prob(bayes_net):
    """Calculate the marginal 
    probability of the alarm 
    ringing in the 
    power plant system."""
    # TODO: finish this function
    #raise NotImplementedError
    A_node = bayes_net.get_node_by_name('alarm')
    #T_node = bayes_net.get_node_by_name('temperature')
    engine = JunctionTreeEngine(bayes_net)
    Q = engine.marginal(A_node)[0]
    index = Q.generate_index([True], range(Q.nDims))
    alarm_prob = Q[index]
    return alarm_prob
def get_mission_prob_goodbooster(bayes_net):
    """Calculate the marginal
    probability of the alarm
    ringing in the
    power plant system."""
    # TODO: finish this function
    #raise NotImplementedError
    mission_node = bayes_net.get_node_by_name('mission')
    #T_node = bayes_net.get_node_by_name('temperature')
    engine = JunctionTreeEngine(bayes_net)
    Q = engine.marginal(mission_node)[0]
    index = Q.generate_index([False], range(Q.nDims))
    mission_prob = Q[index]
    print(mission_prob)
Beispiel #12
0
def get_temperature_prob(bayes_net,temp_hot):
    """Calculate the probability of the temperature being hot (T/F) in the power plant system, given that the
      alarm sounds and neither the gauge nor alarm is faulty."""
    # TODO: finish this function
    T_node = bayes_net.get_node_by_name('temperature')
    F_A_node = bayes_net.get_node_by_name('faulty alarm')
    F_G_node = bayes_net.get_node_by_name('faulty gauge')
    A_node = bayes_net.get_node_by_name('alarm')
    engine = JunctionTreeEngine(bayes_net)
    engine.evidence[A_node] = True # alarm sounds
    engine.evidence[F_A_node] = False # alarm is NOT faulty
    engine.evidence[F_G_node] = False # gauge is NOT faulty
    Q = engine.marginal(T_node)[0]
    index = Q.generate_index([temp_hot],range(Q.nDims))
    prob = Q[index]
    return prob
def get_mission_prob_badbooster(bayes_net):
    """Calculate the conditional probability
    of the temperature being hot in the
    power plant system, given that the
    alarm sounds and neither the gauge
    nor alarm is faulty."""
    # TODO: finish this function
    #raise NotImplementedError
    weather_node = bayes_net.get_node_by_name('weather')
    mission_node = bayes_net.get_node_by_name('mission')
    engine = JunctionTreeEngine(bayes_net)
    engine.evidence[weather_node] = False
    Q = engine.marginal(mission_node)[0]
    index = Q.generate_index([False], range(Q.nDims))
    mission_prob = Q[index]
    print(mission_prob)
def get_gauge_prob(bayes_net):
    """Calculate the marginal
    probability of the gauge 
    showing hot in the 
    power plant system."""
    # TODO: finish this function
    #raise NotImplementedError
    G_node = bayes_net.get_node_by_name('gauge')
    #T_node = bayes_net.get_node_by_name('temperature')
    #F_G_node = bayes_net.get_node_by_name('faulty gauge')
    engine = JunctionTreeEngine(bayes_net)
    #engine.evidence[T_node] = True
    #engine.evidence[F_G_node] = True
    Q = engine.marginal(G_node)[0]
    index = Q.generate_index([True], range(Q.nDims))
    gauge_prob = Q[index]
    return gauge_prob
Beispiel #15
0
def get_ghost_prob2(bayes_net):
    """Calculate theprobability of the
    temperature being hot (T/F) in the
    power plant system, given that the
    alarm sounds and neither the gauge
    nor alarm is faulty."""
    # TODO: finish this function
    A3 = bayes_net.get_node_by_name('alarm 3')
    A2 = bayes_net.get_node_by_name('alarm 2')
    G = bayes_net.get_node_by_name('ghost')

    engine = JunctionTreeEngine(bayes_net)
    engine.evidence[A2] = False
    engine.evidence[A3] = True
    Q = engine.marginal(G)[0]
    index = Q.generate_index([False],range(Q.nDims))
    temp_prob = Q[index]

    return temp_prob
Beispiel #16
0
def get_alarm_prob(bayes_net, alarm_rings):
    """Calculate the marginal probability of the alarm ringing (T/F) in the power plant system."""
    # True or False
    alarm_rings = alarm_rings
    # set up engine
    engine = JunctionTreeEngine(bayes_net)
    # get nodes
    F_A_node = bayes_net.get_node_by_name('faulty alarm')
    G_node = bayes_net.get_node_by_name('gauge')
    A_node = bayes_net.get_node_by_name('alarm')
    # Compute the marginal probability of alarm given no evidence
    Q = engine.marginal(A_node)[0]
    #Q is a DiscreteDistribution, and so to index into it, we have to use the class' method to create an index
    index = Q.generate_index([False], range(Q.nDims))
    alarm_prob_false = Q[index]
    alarm_prob_true = float(1 - Q[index])
    alarm_prob = alarm_prob_true
    print "The marginal probability of alarm=true:", alarm_prob_true
    # marginal probablility of alarm ringing
    return alarm_prob
Beispiel #17
0
def get_temperature_prob(bayes_net, temp_hot):
    """Calculate the conditional probability 
    of the temperature being hot (T/F) in the
    power plant system, given that the
    alarm sounds and neither the gauge
    nor alarm is faulty."""
    # TODO: finish this function
    # raise NotImplementedError
    A_node = bayes_net.get_node_by_name("alarm")
    F_A_node = bayes_net.get_node_by_name("faulty alarm")
    F_G_node = bayes_net.get_node_by_name("faulty gauge")
    T_node = bayes_net.get_node_by_name("temperature")
    engine = JunctionTreeEngine(bayes_net)
    engine.evidence[A_node] = True
    engine.evidence[F_G_node] = False
    engine.evidence[F_A_node] = False
    Q = engine.marginal(T_node)[0]
    index = Q.generate_index([temp_hot], range(Q.nDims))
    temp_prob = Q[index]
    return temp_prob
Beispiel #18
0
def get_gauge_prob(bayes_net, gauge_hot):
    """Calculate the marginal probability of the gauge showing hot (T/F) in the power plant system."""
    # True or False
    gauge_hot = gauge_hot
    # Set up engine
    engine = JunctionTreeEngine(bayes_net)
    # Get nodes
    G_node = bayes_net.get_node_by_name('gauge')
    F_G_node = bayes_net.get_node_by_name('faulty gauge')
    T_node = bayes_net.get_node_by_name('temperature')
    # Compute the marginal probability of gauge given no evidence
    Q = engine.marginal(G_node)[0]
    #Q is a DiscreteDistribution, and so to index into it, we have to use the class' method to create an index
    index = Q.generate_index([False], range(Q.nDims))
    gauge_prob_false = Q[index]
    gauge_prob_true = float(1 - Q[index])
    gauge_prob = gauge_prob_true
    print "The marginal probability of gauge=true:", gauge_prob
    # marginal probablility of gauge showing hot
    return gauge_prob
Beispiel #19
0
def get_temperature_prob(bayes_net, temp_hot):
    """Calculate theprobability of the temperature being hot (T/F) in the power plant system, given that the alarm sounds and neither the gauge nor alarm is faulty."""
    engine = JunctionTreeEngine(bayes_net)
    G_node = bayes_net.get_node_by_name('gauge')
    F_G_node = bayes_net.get_node_by_name('faulty gauge')
    T_node = bayes_net.get_node_by_name('temperature')
    A_node = bayes_net.get_node_by_name('alarm')
    F_A_node = bayes_net.get_node_by_name('faulty alarm')
    # True of False
    temp_hot = temp_hot
    engine.evidence[F_A_node] = False
    engine.evidence[F_G_node] = False
    engine.evidence[A_node] = True
    Q = engine.marginal(T_node)[0]
    index = Q.generate_index([False], range(Q.nDims))
    temp_prob_false = Q[index]
    temp_prob_true = float(1 - Q[index])
    temp_prob = temp_prob_true
    print "The probability of temperature=true (hot) given,"
    print "F_A = false, F_G = false, and alarm sounds"
    print "temp_prob:  ", temp_prob
    # the probability that the temperature is actually hot, given that the alarm sounds and the alarm and gauge are both working
    return temp_prob