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)
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 )
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"]]
def huang_darwiche_dag(huang_darwiche_nodes): nodes = huang_darwiche_nodes return build_bbn(nodes)