distB_Time0.getMultinomial(0).setProbabilities(new double[]{0.4, 0.1, 0.5}); distB_Time0.getMultinomial(1).setProbabilities(new double[]{0.2, 0.5, 0.3}); distC_Time0.getMultinomial(0).setProbabilities(new double[]{0.4, 0.6}); distC_Time0.getMultinomial(1).setProbabilities(new double[]{0.2, 0.8}); distD_Time0.getMultinomial(0).setProbabilities(new double[]{0.7, 0.3}); distD_Time0.getMultinomial(1).setProbabilities(new double[]{0.1, 0.9}); distE_Time0.getMultinomial(0).setProbabilities(new double[]{0.8, 0.2}); distE_Time0.getMultinomial(1).setProbabilities(new double[]{0.1, 0.9}); distG_Time0.getMultinomial(0).setProbabilities(new double[]{0.6, 0.4}); distG_Time0.getMultinomial(1).setProbabilities(new double[]{0.7, 0.3}); distA_TimeT.getMultinomial(0).setProbabilities(new double[]{0.15, 0.85}); distA_TimeT.getMultinomial(1).setProbabilities(new double[]{0.1, 0.9}); distB_TimeT.getMultinomial(0).setProbabilities(new double[]{0.1, 0.2, 0.7}); distB_TimeT.getMultinomial(1).setProbabilities(new double[]{0.6, 0.1, 0.3}); distB_TimeT.getMultinomial(2).setProbabilities(new double[]{0.3, 0.4, 0.3}); distB_TimeT.getMultinomial(3).setProbabilities(new double[]{0.2, 0.1, 0.7}); distB_TimeT.getMultinomial(4).setProbabilities(new double[]{0.5, 0.1, 0.4}); distB_TimeT.getMultinomial(5).setProbabilities(new double[]{0.1, 0.1, 0.8}); distC_TimeT.getMultinomial(0).setProbabilities(new double[]{0.4, 0.6}); distC_TimeT.getMultinomial(1).setProbabilities(new double[]{0.2, 0.8}); distD_TimeT.getMultinomial(0).setProbabilities(new double[]{0.7, 0.3});
Multinomial multinomial1 = (Multinomial) multinomial_multinomialParents.getMultinomial(dynamicParentsConfiguration);
smokeProb.getMultinomial(1).setProbabilities(new double[]{0.001, 0.999}); fireprobTimeT.getMultinomial(0).setProbabilities(new double[]{0.999, 0.001}); fireprobTimeT.getMultinomial(1).setProbabilities(new double[]{0.01, 0.99}); smokeProbTimeT.getMultinomial(1).setProbabilities(new double[]{0.001, 0.999}); smokeProbTimeT.getMultinomial(3).setProbabilities(new double[]{0.001, 0.999});
/** * Sets the distribution of a multinomial variable with multinomial parents in the AMIDST model * from the corresponding distribution in the Hugin model. * @param huginVar the Hugin variable with the distribution to be converted. * @throws ExceptionHugin */ private void setMultinomial_MultinomialParents(Node huginVar) throws ExceptionHugin { int indexNode = this.huginBN.getNodes().indexOf(huginVar); Variable amidstVar = this.amidstBN.getVariables().getVariableById(indexNode); int numStates = amidstVar.getNumberOfStates(); double[] huginProbabilities = huginVar.getTable().getData(); List<Variable> parents = this.amidstBN.getDAG().getParentSet(amidstVar).getParents(); int numParentAssignments = MultinomialIndex.getNumberOfPossibleAssignments(parents); for (int i = 0; i < numParentAssignments; i++) { double[] amidstProbabilities = new double[numStates]; for (int k = 0; k < numStates; k++) { amidstProbabilities[k] = huginProbabilities[i * numStates + k]; } Multinomial_MultinomialParents dist = this.amidstBN.getConditionalDistribution(amidstVar); dist.getMultinomial(i).setProbabilities(amidstProbabilities); } }
amidstProbabilities[k] = huginProbabilitiesTimeT[i * numStates + k]; dist_TimeT.getMultinomial(i).setProbabilities(amidstProbabilities); amidstProbabilities[k] = huginProbabilitiesTime0[i * numStates + k]; dist_Time0.getMultinomial(i).setProbabilities(amidstProbabilities);
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"); } }
smokeProb.getMultinomial(0).setProbabilities(new double[]{0.9, 0.1}); fireprobTimeT.getMultinomial(0).setProbabilities(new double[]{1.0, 0.0}); smokeProbTimeT.getMultinomial(0).setProbabilities(new double[]{0.9, 0.1}); smokeProbTimeT.getMultinomial(1).setProbabilities(new double[]{0.9, 0.1}); smokeProbTimeT.getMultinomial(2).setProbabilities(new double[]{0.1, 0.9}); smokeProbTimeT.getMultinomial(3).setProbabilities(new double[]{0.9, 0.1});
smokeProb.getMultinomial(0).setProbabilities(new double[]{0.9, 0.1});
smokeProb.getMultinomial(0).setProbabilities(new double[]{0.9, 0.1});
smokeProb.getMultinomial(0).setProbabilities(new double[]{0.9, 0.1});