def main(argv):
    if (len(sys.argv) == 2 and sys.argv[1].isdigit()):  # one arguement passed
        num = int(sys.argv[1])
    else:
        print "Incorrect Usage: ./couldy_likelihood.py <number>"
        exit(1)
    network = BayesianNetwork()  # Define the Bayesian Network

    ## Add nodes to the network ##
    cloudy = network.add_node("cloudy")
    sprinkler = network.add_node("sprinkler")
    rain = network.add_node("rain")
    wetgrass = network.add_node(("wetgrass"))

    ## Add connections between nodes ##
    network.connect_nodes(cloudy.name, sprinkler.name)
    network.connect_nodes(cloudy.name, rain.name)
    network.connect_nodes(sprinkler.name, wetgrass.name)
    network.connect_nodes(rain.name, wetgrass.name)

    ## Add conditional probability to nodes ##
    network.init_probability_tables()  # initialise the probability tables

    network.add_probability("cloudy", {'probability': 0.5})

    network.add_probability("sprinkler", {'cloudy': 1, 'probability': 0.1})
    network.add_probability("sprinkler", {'cloudy': 0, 'probability': 0.5})

    network.add_probability("rain", {'cloudy': 1, 'probability': 0.8})
    network.add_probability("rain", {'cloudy': 0, 'probability': 0.2})

    network.add_probability("wetgrass", {
        'sprinkler': 1,
        'rain': 1,
        'probability': 0.99
    })
    network.add_probability("wetgrass", {
        'sprinkler': 0,
        'rain': 0,
        'probability': 0.0
    })
    network.add_probability("wetgrass", {
        'sprinkler': 0,
        'rain': 1,
        'probability': 0.9
    })
    network.add_probability("wetgrass", {
        'sprinkler': 1,
        'rain': 0,
        'probability': 0.9
    })

    ## Defining paramenters for likelihood weighting ##
    evidence = {"sprinkler": 1, "wetgrass": 1}
    outcome = {"cloudy": 1}
    run_likelihood(network, evidence, outcome, num)
Beispiel #2
0
from src.node import Node
from src.bayesian_network import BayesianNetwork

network = BayesianNetwork()

#print network.get_nodes()

cloudy = network.add_node("cloudy")
sprinkler = network.add_node("sprinkler")
rain = network.add_node("rain")
wetgrass = network.add_node(("wetgrass"))
#cyclea = network.add_node("cyclea")

network.connect_nodes(cloudy.name, sprinkler.name)
network.connect_nodes(cloudy.name, rain.name)
network.connect_nodes(sprinkler.name, wetgrass.name)
network.connect_nodes(rain.name, wetgrass.name)
#network.connect_nodes(cyclea.name,wetgrass.name)

network.init_probability_tables()

network.add_probability("cloudy", {'probability': 0.5})

network.add_probability("sprinkler", {'cloudy': 1, 'probability': 0.1})
network.add_probability("sprinkler", {'cloudy': 0, 'probability': 0.5})

network.add_probability("rain", {'cloudy': 1, 'probability': 0.8})
network.add_probability("rain", {'cloudy': 0, 'probability': 0.2})

network.add_probability("wetgrass", {
    'sprinkler': 1,