/** * Sets the distribution of a normal variable with multinomial parents in the Hugin model from the corresponding * distribution in the AMIDST model. * @param dist the AMIDST distribution to be converted. * @throws ExceptionHugin */ private void setNormal_MultinomialParents(Normal_MultinomialParents dist) throws ExceptionHugin { List<Variable> conditioningVariables = dist.getConditioningVariables(); int numParentAssignments = MultinomialIndex.getNumberOfPossibleAssignments(conditioningVariables); for(int i=0;i<numParentAssignments;i++) { Normal normal = dist.getNormal(i); this.setNormal(normal, i); } }
public static void main(String[] args) throws Exception { //Load the learnt model BayesianNetwork fireDetector = BayesianNetworkLoader.loadFromFile("./models/LearntFireDetectorModel.bn"); //Access the variable of interest. Variable fire = fireDetector.getVariables().getVariableByName("Fire"); Variable temperature = fireDetector.getVariables().getVariableByName("Temperature"); Variable smoke = fireDetector.getVariables().getVariableByName("Smoke"); //Modify the parameters of the model according to our prior knowledge. Multinomial fireprob = fireDetector.getConditionalDistribution(fire); fireprob.setProbabilities(new double[]{0.999, 0.001}); Normal_MultinomialParents tempprob = fireDetector.getConditionalDistribution(temperature); tempprob.getNormal(1).setMean(tempprob.getNormal(0).getMean()+10); tempprob.getNormal(1).setVariance(tempprob.getNormal(0).getVariance()); Multinomial_MultinomialParents smokeProb = fireDetector.getConditionalDistribution(smoke); smokeProb.getMultinomial(1).setProbabilities(new double[]{0.001, 0.999}); //Print the model System.out.println(fireDetector); //Save to disk the new model BayesianNetworkWriter.save(fireDetector,"./models/FireDetectorModel.bn"); } }
Normal normal1 = normal_multinomialParents.getNormal(dynamicParentsConfiguration); normal1.setConditioningVariables(multinomialParents);
tempprob.getNormal(1).setMean(tempprob.getNormal(0).getMean()+10); tempprob.getNormal(1).setVariance(tempprob.getNormal(0).getVariance()); tempTimeT.getNormal_NormalParentsDistribution(1).setIntercept(tempprob.getNormal(0).getMean()+10); tempTimeT.getNormal_NormalParentsDistribution(1).setCoeffForParent(temperature.getInterfaceVariable(),0.0); tempTimeT.getNormal_NormalParentsDistribution(1).setVariance(tempprob.getNormal(0).getVariance());
/** * Sets the distribution of a normal variable with multinomial parents in the AMIDST model from the corresponding * distribution in the Hugin model. * For each assignment of the multinomial parents, a univariate normal is set. * @param huginVar the Hugin variable with the distribution to be converted. * @throws ExceptionHugin */ private void setNormal_MultinomialParents(Node huginVar) throws ExceptionHugin { int indexNode = this.huginBN.getNodes().indexOf(huginVar); Variable amidstVar = this.amidstBN.getVariables().getVariableById(indexNode); List<Variable> conditioningVariables = this.amidstBN.getDAG().getParentSet(amidstVar).getParents(); int numParentAssignments = MultinomialIndex.getNumberOfPossibleAssignments(conditioningVariables); Normal_MultinomialParents dist = this.amidstBN.getConditionalDistribution(amidstVar); for (int i = 0; i < numParentAssignments; i++) { Normal normal = dist.getNormal(i); this.setNormal(huginVar, normal, i); } }
tempprob.getNormal(0).setMean(18); tempprob.getNormal(0).setVariance(3); sensorSmokeProb.getNormal(0).setMean(0); sensorSmokeProb.getNormal(0).setVariance(0.1); sensorSmokeProb.getNormal(1).setMean(5); sensorSmokeProb.getNormal(1).setVariance(3); sensorSmokeProbTimeT.getNormal(0).setMean(0); sensorSmokeProbTimeT.getNormal(0).setVariance(0.1); sensorSmokeProbTimeT.getNormal(1).setMean(5); sensorSmokeProbTimeT.getNormal(1).setVariance(3);
tempsMonth[i] = dist.getNormal(0).getMean();
tempsMonth[i] = dist.getNormal(0).getMean();