Beispiel #1
0
  /**
   * 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;
    }
  }
Beispiel #2
0
 /**
  * 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());
 }
Beispiel #3
0
 /**
  * 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());
 }