/** * Metodo che rappresenta l'atto di decisione (return true/false) in relazione all'evento casuale * generato e alla probabilità della configurazione passata come parametro. * * @param probability probabilità generata casualmente, da confrontare con la probabilità degli * eventi. * @param modelBuiltUpSoFar modello degli eventi. * @return */ public Boolean isTrueFor(double probability, Map<String, Boolean> modelBuiltUpSoFar) { HashMap<String, Boolean> conditions = new HashMap<String, Boolean>(); if (isRoot()) { // BayesBox.LOG(getVariable() + " is root!"); conditions.put(getVariable(), Boolean.TRUE); } else { for (int i = 0; i < parents.size(); i++) { BayesNetNode parent = parents.get(i); conditions.put(parent.getVariable(), modelBuiltUpSoFar.get(parent.getVariable())); } } double trueProbability = probabilityOf(conditions); // BayesBox.LOG("Probability: "+probability + " - TrueProb: "+trueProbability); if (probability <= trueProbability) { return Boolean.TRUE; } else { return Boolean.FALSE; } }
/** * Metodo che stabilisce la dipendenza del nodo corrente da altri nodi. * * @param parent1 primo nodo da cui dipendere * @param parent2 secondo nodo da cui dipendere */ public void influencedBy(BayesNetNode parent1, BayesNetNode parent2) { influencedBy(parent1); influencedBy(parent2); distribution = new ProbabilityDistribution(parent1.getVariable(), parent2.getVariable()); }
/** * Metodo che stabilisce la dipendenza del nodo corrente da un altro nodo. * * @param parent1 nodo da cui dipendere */ public void influencedBy(BayesNetNode parent1) { addParent(parent1); parent1.addChild(this); distribution = new ProbabilityDistribution(parent1.getVariable()); }