/** * Returns the total number of variables in this DynamicBayesianNetwork. * @return an {@code int} that represents the number of variables. */ public int getNumberOfDynamicVars() { return this.getDynamicVariables().getNumberOfVars(); }
/** * Returns the variable of a coressponding interface variable. * @param var a {@link Variable} object. * @return a {@link Variable} object. */ public Variable getVariableFromInterface(Variable var){ return nonInterfaceVariables.get(var.getVarID()-this.getNumberOfVars()); }
/** * Blocks this DynamicVariables. */ public void block(){ for (int i = 0; i < this.interfaceVariables.size(); i++) { VariableImplementation var = (VariableImplementation)this.interfaceVariables.get(i); var.setVarID(i+this.getNumberOfVars()); } }
/** * Returns the total number of variables in this DynamicBayesianNetwork. * @return an {@code int} that represents the number of variables. */ public int getNumberOfVars() { return this.getDynamicVariables().getNumberOfVars(); }
/** * Creates a new DynamicDAG from a set of given dynamic variables. * @param dynamicVariables1 a set of variables of type {@link DynamicVariables}. */ public DynamicDAG(DynamicVariables dynamicVariables1) { this.dynamicVariables = dynamicVariables1; this.parentSetTime0 = new ArrayList(dynamicVariables.getNumberOfVars()); this.parentSetTimeT = new ArrayList(dynamicVariables.getNumberOfVars()); for (Variable var : dynamicVariables) { parentSetTime0.add(var.getVarID(), new ParentSetImpl(var)); parentSetTimeT.add(var.getVarID(), new ParentSetImpl(var)); } this.dynamicVariables.block(); }
public DynamicClassifier(Attributes attributes) { super(attributes); classVar = variables.getListOfDynamicVariables().get(variables.getNumberOfVars()-1); dynamicInferenceAlgoPredict = new FactoredFrontierForDBN(getInferenceAlgoPredict()); InferenceEngineForDBN.setInferenceAlgorithmForDBN(dynamicInferenceAlgoPredict); }
@Override public boolean isValidConfiguration() { boolean isValid = true; long numReal = variables.getListOfDynamicVariables() .stream() .filter( v -> v.getStateSpaceTypeEnum().equals(StateSpaceTypeEnum.REAL)) .count(); long numFinite = variables.getListOfDynamicVariables() .stream() .filter( v -> v.getStateSpaceTypeEnum().equals(StateSpaceTypeEnum.FINITE_SET)) .count(); if(numFinite != 1 || numReal != variables.getNumberOfVars()-1) { isValid = false; setErrorMessage("Invalid configuration: wrong number types of variables domains. " + "It should contain 1 discrete variable and the rest shoud be real"); } return isValid; }
public static List<Variable> getCausalOrderTime0(DynamicDAG dag){ DynamicVariables variables = dag.getDynamicVariables(); int nNrOfAtts = variables.getNumberOfVars(); List<Variable> order = new ArrayList(); boolean[] bDone = new boolean[variables.getNumberOfVars()]; for (Variable var: variables){ bDone[var.getVarID()] = false; } for (int iAtt = 0; iAtt < nNrOfAtts; iAtt++) { boolean allParentsDone = false; for (Variable var2 : variables){ if (!bDone[var2.getVarID()]) { allParentsDone = true; int iParent = 0; for (Variable parent: dag.getParentSetTime0(var2)) allParentsDone = allParentsDone && bDone[parent.getVarID()]; if (allParentsDone){ order.add(var2); bDone[var2.getVarID()] = true; } } } } return order; }
public static List<Variable> getCausalOrderTimeT(DynamicDAG dag){ DynamicVariables variables = dag.getDynamicVariables(); int nNrOfAtts = variables.getNumberOfVars(); List<Variable> order = new ArrayList(); boolean[] bDone = new boolean[variables.getNumberOfVars()]; for (Variable var: variables){ bDone[var.getVarID()] = false; } for (int iAtt = 0; iAtt < nNrOfAtts; iAtt++) { boolean allParentsDone = false; for (Variable var2 : variables){ if (!bDone[var2.getVarID()]) { allParentsDone = true; for (Variable parent: dag.getParentSetTimeT(var2)) { if (parent.isInterfaceVariable()) continue; allParentsDone = allParentsDone && bDone[parent.getVarID()]; } if (allParentsDone){ order.add(var2); bDone[var2.getVarID()] = true; } } } } return order; }
/** * Initializes the distributions of this DynamicBayesianNetwork. * The initialization is performed for each variable at time ) and T depending on its distribution type * as well as the distribution type of its parent set (if that variable has parents). */ private void initializeDistributions() { //Parents should have been assigned before calling this method (from dynamicmodelling.models) this.distributionsTime0 = new ArrayList(this.getDynamicVariables().getNumberOfVars()); this.distributionsTimeT = new ArrayList(this.getDynamicVariables().getNumberOfVars()); for (Variable var : this.getDynamicVariables()) { int varID = var.getVarID(); /* Distributions at time t */ this.distributionsTimeT.add(varID, var.newConditionalDistribution(this.dynamicDAG.getParentSetTimeT(var).getParents())); this.dynamicDAG.getParentSetTimeT(var).blockParents(); /* Distributions at time 0 */ this.distributionsTime0.add(varID, var.newConditionalDistribution(this.dynamicDAG.getParentSetTime0(var).getParents())); this.dynamicDAG.getParentSetTime0(var).blockParents(); } //distributionsTimeT = Collections.unmodifiableList(this.distributionsTimeT); //distributionsTime0 = Collections.unmodifiableList(this.distributionsTime0); }
int dagLinks = variables.getNumberOfVars()-1; while (dagLinks< numberOfLinks){ Variable var1 = variables.getVariableById(random.nextInt(variables.getNumberOfVars())); int max = variables.getNumberOfVars() - var1.getVarID() - 1; if (max == 0) continue; dagLinks = variables.getNumberOfVars()-1; while (dagLinks< numberOfLinks){ Variable var1 = variables.getVariableById(random.nextInt(variables.getNumberOfVars())); int max = variables.getNumberOfVars() - var1.getVarID() - 1; if (max == 0) continue;
int dagLinks = variables.getNumberOfVars()-1; int iter = 0; while (dagLinks< numberOfLinks && iter<1000){ Variable var1 = variables.getVariableById(random.nextInt(variables.getNumberOfVars())); int max = variables.getNumberOfVars() - var1.getVarID() - 1; if (max == 0) continue; dagLinks = variables.getNumberOfVars()-1; iter = 0; while (dagLinks< numberOfLinks && iter<1000){ Variable var1 = variables.getVariableById(random.nextInt(variables.getNumberOfVars())); int max = variables.getNumberOfVars() - var1.getVarID() - 1; if (max == 0) continue;
DynamicDAG dynamicDAG = Serialization.deepCopy(dynamicNB.getDynamicDAG()); int numberOfVariables = variables.getNumberOfVars();
for (int j = 0; j < dynamicVariables.getNumberOfVars(); j++) { for (int j = 0; j < dynamicVariables.getNumberOfVars(); j++) {
DynamicDAG dynamicDAG = Serialization.deepCopy(dynamicNB.getDynamicDAG()); int numberOfVariables = variables.getNumberOfVars();
/** * Sets the nodes and temporal clones (if exist) in the Hugin model from the AMIDST model. * @param amidstDBN the Dynamic Bayesian network model in AMIDST format. * @throws ExceptionHugin */ private void setNodesAndTemporalClones(DynamicBayesianNetwork amidstDBN) throws ExceptionHugin { DynamicVariables dynamicVars = amidstDBN.getDynamicVariables(); int size = dynamicVars.getNumberOfVars(); //Hugin always inserts variables in position 0, i.e, for an order A,B,C, it stores C,B,A //A reverse order of the variables is used instead. for(int i=1;i<=size;i++){ Variable amidstVar = dynamicVars.getVariableById(size-i); LabelledDCNode n = new LabelledDCNode(huginDBN); n.setName(amidstVar.getName()); n.setNumberOfStates(amidstVar.getNumberOfStates()); n.setLabel(amidstVar.getName()); for (int j=0;j<n.getNumberOfStates();j++){ String stateName = ((FiniteStateSpace)amidstVar.getStateSpaceType()).getStatesName(j); n.setStateLabel(j, stateName); } Node huginVar = this.huginDBN.getNodeByName(amidstVar.getName()); Node clone = huginVar.createTemporalClone(); clone.setName("T_"+huginVar.getName()); clone.setLabel("T_"+huginVar.getLabel()); } }