/** * Moves the window ahead for a given number of time steps. * @param nsteps an {@link int} that represents a given number of time steps. */ private void moveWindow(int nsteps){ //The first step we need to manually move the evidence from master to clone variables. HashMapDynamicAssignment newassignment =null; if (this.assignment!=null) { newassignment=new HashMapDynamicAssignment(this.model.getNumberOfDynamicVars()); for (Variable var : this.model.getDynamicVariables()) { newassignment.setValue(this.model.getDynamicVariables().getInterfaceVariable(var), this.assignment.getValue(var)); newassignment.setValue(var, Utils.missingValue()); } } for (int i = 0; i < nsteps; i++) { this.infAlgTimeT.setModel(this.bnTimeT); this.infAlgTimeT.setEvidence(updateDynamicAssignmentTimeT(newassignment)); this.infAlgTimeT.runInference(); this.getTargetVarsTimeT().stream() .forEach(var -> moveNodeQDist(this.infAlgTimeT, this.bnTimeT, var)); } }
/** * Moves the window ahead for a given number of time steps. * @param nsteps an {@link int} that represents a given number of time steps. */ private void moveWindow(int nsteps){ //The first step we need to manually move the evidence from master to clone variables. HashMapDynamicAssignment newassignment = null; if (this.assignment!=null) { newassignment=new HashMapDynamicAssignment(this.model.getNumberOfDynamicVars()); for (Variable var : this.model.getDynamicVariables()) { newassignment.setValue(this.model.getDynamicVariables().getInterfaceVariable(var), this.assignment.getValue(var)); newassignment.setValue(var, Utils.missingValue()); } } for (int i = 0; i < nsteps; i++) { this.vmpTimeT.setEvidence(newassignment); this.vmpTimeT.runInference(); this.vmpTimeT.getNodes().stream() .filter(node -> !node.getMainVariable().isInterfaceVariable()) .filter(node -> !node.isObserved()) .forEach(node -> { Variable temporalClone = this.model.getDynamicVariables().getInterfaceVariable(node.getMainVariable()); moveNodeQDist(this.vmpTimeT.getNodeOfVar(temporalClone), node); }); newassignment=null; } }