예제 #1
0
                             aiub,
                             aiedges,
                             node_repair=rarray[-1],
                             asmp0=asmp0)
     aarray.append(node_ai)
 elif inspyear[ia]:
     # node ai
     node_ai = create_node_a("A" + str(ia + 1),
                             [aarray[-1], node_k, node_m], ainum, ailb,
                             aiub, aiedges)
     # node inspection
     node_insp = Node("Inspection" + str(ia + 1),
                      parents=None,
                      rvname='discrete')
     node_insp.set_node_kind(DECISION_NODE)
     node_insp.set_node_state_name(['no', 'insp1', 'insp2', 'insp3'])
     # node mi
     node_mi = create_node_mi("M" + str(ia + 1), [node_insp, node_ai],
                              minum, ailb, aiub, aiedges)
     # node ui
     node_ui = Node("Util_Insp" + str(ia + 1),
                    parents=[node_insp],
                    rvname='deterministic')
     node_ui.set_node_kind(UTILITY_NODE)
     node_ui.assign_func(inspection_utility)
     # node repair
     node_repair = Node("Repair" + str(ia + 1),
                        parents=[node_insp],
                        rvname='discrete')
     node_repair.set_node_kind(DECISION_NODE)
     node_repair.set_node_state_name(['no', 'repair'])
예제 #2
0
 aiedges = np.hstack((aiedges,acrit+1e-3))
 if ia == 0:
     node_ai = create_node_a("A"+str(ia+1), [aarray[-1], node_k, node_m], ainum, ailb, aiub, aiedges)
     aarray.append(node_ai)
 elif inspyear[ia-1]:
     asmp0 = rv_a0.rvs(size=int(nsmp))
     node_ai = create_node_a("A"+str(ia+1), [aarray[-1], node_k, node_m], ainum, ailb, aiub, aiedges,
             node_repair=rarray[-1], asmp0=asmp0)
     aarray.append(node_ai)
 elif inspyear[ia]:
     # node ai
     node_ai = create_node_a("A"+str(ia+1), [aarray[-1], node_k, node_m], ainum, ailb, aiub, aiedges)
     # node inspection
     node_insp = Node("Inspection"+str(ia+1), parents=None, rvname='discrete')
     node_insp.set_node_kind(DECISION_NODE)
     node_insp.set_node_state_name(['no', 'insp1', 'insp2', 'insp3'])
     # node mi
     node_mi = create_node_mi("M"+str(ia+1), [node_insp, node_ai], minum, ailb, aiub, aiedges)
     # node ui
     node_ui = Node("Util_Insp"+str(ia+1), parents=[node_insp], rvname='deterministic')
     node_ui.set_node_kind(UTILITY_NODE)
     node_ui.assign_func(inspection_utility)
     # node repair
     node_repair = Node("Repair"+str(ia+1), parents=[node_insp], rvname='discrete')
     node_repair.set_node_kind(DECISION_NODE)
     node_repair.set_node_state_name(['no', 'repair'])
     # node ur
     node_ur = Node("Util_Repair"+str(ia+1), parents=[node_repair, node_ai], rvname='deterministic')
     node_ur.set_node_kind(UTILITY_NODE)
     def repair_utility(pstate, node_ai=node_ai):
         repairstate, aistate = pstate
예제 #3
0
weather = Node("Weather", parents=None, rvname='discrete')
forecast = Node("Forecast", parents=[weather], rvname='discrete')
umbrella = Node("Umbrella", parents=[forecast], rvname='discrete')
satisfy = Node("Satisfaction", parents=[weather, umbrella], rvname='deterministic')
umbrella.set_node_kind(DECISION_NODE)
satisfy.set_node_kind(UTILITY_NODE)

# assign CPT
# node weather
weathercpt = np.array([[0.7, 0.3]])
weather.assign_cpt(weathercpt, statenames=['sunshine', 'rain'])
# node forecast
forecastcpt = np.array([[0.7, 0.2, 0.1], [0.15, 0.25, 0.6]])
forecast.assign_cpt(forecastcpt, statenames=['sunny', 'cloudy', 'rainy'])
# node umbrella
umbrella.set_node_state_name(['take_umbrella', 'dont_take_umbrella'])
# node satisfy
def calculate_util(pstate):
    forecaststate,umbrellastate = pstate
    if forecaststate==0 and umbrellastate==0:
        return 20.
    elif forecaststate==0 and umbrellastate==1:
        return 100.
    elif forecaststate==1 and umbrellastate==0:
        return 70.
    elif forecaststate==1 and umbrellastate==1:
        return 0.
satisfy.assign_func(calculate_util)
# create new network
dbnet = Network("BNexample1")
예제 #4
0
umbrella = Node("Umbrella", parents=[forecast], rvname='discrete')
satisfy = Node("Satisfaction",
               parents=[weather, umbrella],
               rvname='deterministic')
umbrella.set_node_kind(DECISION_NODE)
satisfy.set_node_kind(UTILITY_NODE)

# assign CPT
# node weather
weathercpt = np.array([[0.7, 0.3]])
weather.assign_cpt(weathercpt, statenames=['sunshine', 'rain'])
# node forecast
forecastcpt = np.array([[0.7, 0.2, 0.1], [0.15, 0.25, 0.6]])
forecast.assign_cpt(forecastcpt, statenames=['sunny', 'cloudy', 'rainy'])
# node umbrella
umbrella.set_node_state_name(['take_umbrella', 'dont_take_umbrella'])


# node satisfy
def calculate_util(pstate):
    forecaststate, umbrellastate = pstate
    if forecaststate == 0 and umbrellastate == 0:
        return 20.
    elif forecaststate == 0 and umbrellastate == 1:
        return 100.
    elif forecaststate == 1 and umbrellastate == 0:
        return 70.
    elif forecaststate == 1 and umbrellastate == 1:
        return 0.