Inference (discrete & continuous) with a Bayesian network in Matlab
bayesVersion = '7.24';
networkPath = ['C:\ProgramData\Bayes Server ', bayesVersion, '\Sample Networks\Waste.bayes'];
jarPath = ['C:\Program Files\Bayes Server\Bayes Server ', bayesVersion, '\API\Java\BayesServer-', bayesVersion, '.jar'];
javaaddpath(jarPath);
import com.bayesserver.*;
import com.bayesserver.inference.*;
network = Network();
network.load(networkPath);
disp(['Network has ', num2str(network.getNodes.size), ' nodes']);
filterState = network.getVariables().get('Filter state', true);
filterStateIntact = filterState.getStates().get('Intact', true);
dustEmission = network.getVariables().get('Dust emission', true);
wasteType = network.getVariables().get('Waste type', true);
wasteTypeIndustrial = wasteType.getStates().get('Industrial', true);
wasteTypeHousehold = wasteType.getStates().get('Household', true);
inference = RelevanceTreeInference(network);
queryOptions = RelevanceTreeQueryOptions();
queryOutput = RelevanceTreeQueryOutput();
queryWasteType = Table(wasteType);
inference.getQueryDistributions().add(queryWasteType);
evidence = inference.getEvidence();
evidence.setState(filterStateIntact);
evidence().set(dustEmission, java.lang.Double(3.0));
inference.query(queryOptions, queryOutput);
disp(queryWasteType.get(toJavaArray(wasteTypeIndustrial)));
disp(queryWasteType.get(toJavaArray(wasteTypeHousehold)));