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)
aiedges = np.linspace(0., aiub, ainum-1.) 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):
import numpy as np import itertools import sys from bnexample1_funcs import form2y # random variables rvX1 = stats.lognorm(1., scale=np.exp(0)) rvX3 = stats.lognorm(1., scale=np.exp(3*np.sqrt(2))) # create nodes 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:
import sys from bnexample1_funcs import form2y # random variables rvX1 = stats.lognorm(1., scale=np.exp(0)) rvX3 = stats.lognorm(1., scale=np.exp(3 * np.sqrt(2))) # create nodes 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):