예제 #1
0
def sprinkler_bbn():
    """Sprinkler BBN built with build_bbn."""
    def f_rain(rain):
        if rain is True:
            return 0.2
        return 0.8

    def f_sprinkler(rain, sprinkler):
        sprinkler_dict = {
            (False, True): 0.4,
            (False, False): 0.6,
            (True, True): 0.01,
            (True, False): 0.99,
        }
        return sprinkler_dict[(rain, sprinkler)]

    def f_grass_wet(sprinkler, rain, grass_wet):
        table = dict()
        table["fft"] = 0.0
        table["fff"] = 1.0
        table["ftt"] = 0.8
        table["ftf"] = 0.2
        table["tft"] = 0.9
        table["tff"] = 0.1
        table["ttt"] = 0.99
        table["ttf"] = 0.01
        return table[make_key(sprinkler, rain, grass_wet)]

    return build_bbn(f_rain, f_sprinkler, f_grass_wet)
예제 #2
0
    def _generate_bbn(self):
        """Re-create the _bbn."""
        self._node_functions = self._create_node_functions()

        self._bbn = build_bbn(
            list(self._node_functions.values()), domains=self._domains
        )
예제 #3
0
 def test_build_graph(self, huang_darwiche_nodes):
     bbn = build_bbn(huang_darwiche_nodes)
     nodes = {node.name: node for node in bbn.nodes}
     assert nodes["f_a"].parents == []
     assert nodes["f_b"].parents == [nodes["f_a"]]
     assert nodes["f_c"].parents == [nodes["f_a"]]
     assert nodes["f_d"].parents == [nodes["f_b"]]
     assert nodes["f_e"].parents == [nodes["f_c"]]
     assert nodes["f_f"].parents == [nodes["f_d"], nodes["f_e"]]
     assert nodes["f_g"].parents == [nodes["f_c"]]
     assert nodes["f_h"].parents == [nodes["f_e"], nodes["f_g"]]
예제 #4
0
def huang_darwiche_dag(huang_darwiche_nodes):

    nodes = huang_darwiche_nodes
    return build_bbn(nodes)