use of org.drools.beliefs.bayes.JunctionTreeBuilder in project drools by kiegroup.
the class SprinkerTest method setUp.
@Before
public void setUp() {
connectParentToChildren(cloudyNode, sprinklerNode, rainNode);
connectParentToChildren(sprinklerNode, wetGrassNode);
connectParentToChildren(rainNode, wetGrassNode);
cloudyNode.setContent(cloudy);
sprinklerNode.setContent(sprinkler);
rainNode.setContent(rain);
wetGrassNode.setContent(wetGrass);
JunctionTreeBuilder jtBuilder = new JunctionTreeBuilder(graph);
jTree = jtBuilder.build();
}
use of org.drools.beliefs.bayes.JunctionTreeBuilder in project drools by kiegroup.
the class SprinkerTest method testNoEvidence.
@Test
public void testNoEvidence() {
JunctionTreeBuilder jtBuilder = new JunctionTreeBuilder(graph);
JunctionTree jTree = jtBuilder.build();
JunctionTreeClique jtNode = jTree.getRoot();
BayesInstance bayesInstance = new BayesInstance(jTree);
bayesInstance.globalUpdate();
assertArray(new double[] { 0.5, 0.5 }, scaleDouble(3, bayesInstance.marginalize("Cloudy").getDistribution()));
assertArray(new double[] { 0.5, 0.5 }, scaleDouble(3, bayesInstance.marginalize("Rain").getDistribution()));
assertArray(new double[] { 0.7, 0.3 }, scaleDouble(3, bayesInstance.marginalize("Sprinkler").getDistribution()));
assertArray(new double[] { 0.353, 0.647 }, scaleDouble(3, bayesInstance.marginalize("WetGrass").getDistribution()));
}
use of org.drools.beliefs.bayes.JunctionTreeBuilder in project drools by kiegroup.
the class SprinkerTest method testGrassWetEvidence.
@Test
public void testGrassWetEvidence() {
JunctionTreeBuilder jtBuilder = new JunctionTreeBuilder(graph);
JunctionTree jTree = jtBuilder.build();
JunctionTreeClique jtNode = jTree.getRoot();
BayesInstance bayesInstance = new BayesInstance(jTree);
bayesInstance.setLikelyhood("WetGrass", new double[] { 1.0, 0.0 });
bayesInstance.globalUpdate();
assertArray(new double[] { 0.639, 0.361 }, scaleDouble(3, bayesInstance.marginalize("Cloudy").getDistribution()));
assertArray(new double[] { 0.881, 0.119 }, scaleDouble(3, bayesInstance.marginalize("Rain").getDistribution()));
assertArray(new double[] { 0.938, 0.062 }, scaleDouble(3, bayesInstance.marginalize("Sprinkler").getDistribution()));
assertArray(new double[] { 1.0, 0.0 }, scaleDouble(3, bayesInstance.marginalize("WetGrass").getDistribution()));
}
use of org.drools.beliefs.bayes.JunctionTreeBuilder in project drools by kiegroup.
the class SprinkerTest method testSprinklerEvidence.
@Test
public void testSprinklerEvidence() {
JunctionTreeBuilder jtBuilder = new JunctionTreeBuilder(graph);
JunctionTree jTree = jtBuilder.build();
JunctionTreeClique jtNode = jTree.getRoot();
BayesInstance bayesInstance = new BayesInstance(jTree);
bayesInstance.setLikelyhood("Sprinkler", new double[] { 1.0, 0.0 });
bayesInstance.setLikelyhood("Cloudy", new double[] { 1.0, 0.0 });
bayesInstance.globalUpdate();
assertArray(new double[] { 1.0, 0.0 }, scaleDouble(3, bayesInstance.marginalize("Cloudy").getDistribution()));
assertArray(new double[] { 0.8, 0.2 }, scaleDouble(3, bayesInstance.marginalize("Rain").getDistribution()));
assertArray(new double[] { 1.0, 0.0 }, scaleDouble(3, bayesInstance.marginalize("Sprinkler").getDistribution()));
assertArray(new double[] { 0.82, 0.18 }, scaleDouble(3, bayesInstance.marginalize("WetGrass").getDistribution()));
}
use of org.drools.beliefs.bayes.JunctionTreeBuilder in project drools by kiegroup.
the class BayesAssemblerService method addResource.
@Override
public void addResource(Object kbuilder, Resource resource, ResourceType type, ResourceConfiguration configuration) throws Exception {
BayesNetwork network;
JunctionTreeBuilder builder;
KnowledgeBuilder kb = (KnowledgeBuilder) kbuilder;
Bif bif = XmlBifParser.loadBif(resource, kb.getErrors());
if (bif == null) {
return;
}
try {
network = XmlBifParser.buildBayesNetwork(bif);
} catch (Exception e) {
kb.getErrors().add(new BayesNetworkAssemblerError(resource, "Unable to parse opening Stream:\n" + e.toString()));
return;
}
try {
builder = new JunctionTreeBuilder(network);
} catch (Exception e) {
kb.getErrors().add(new BayesNetworkAssemblerError(resource, "Unable to build Junction Tree:\n" + e.toString()));
return;
}
KnowledgeBuilderImpl kbuilderImpl = (KnowledgeBuilderImpl) kbuilder;
PackageRegistry pkgReg = kbuilderImpl.getOrCreatePackageRegistry(new PackageDescr(network.getPackageName()));
InternalKnowledgePackage kpkgs = pkgReg.getPackage();
Map<ResourceType, ResourceTypePackage> rpkg = kpkgs.getResourceTypePackages();
BayesPackage bpkg = (BayesPackage) rpkg.get(ResourceType.BAYES);
if (bpkg == null) {
bpkg = new BayesPackage();
rpkg.put(ResourceType.BAYES, bpkg);
}
bpkg.addJunctionTree(network.getName(), builder.build());
}
Aggregations