public static int[] computeSizes (Factor result) { int nv = result.varSet ().size(); int[] szs = new int [nv]; for (int i = 0; i < nv; i++) { Variable var = result.getVariable (i); szs[i] = var.getNumOutcomes (); } return szs; }
protected Factor marginalizeInternal (VarSet varsToKeep) { if (varsToKeep.contains (var)) { return duplicate (); } else { return new ConstantFactor (1.0); } }
protected Factor marginalizeInternal (VarSet varsToKeep) { if (varsToKeep.contains (var)) { return duplicate (); } else { return new ConstantFactor (val * (max - min)); } }
public Assignment sample (Randoms r) { Variable[] contVars = Factors.continuousVarsOf (this); if ((contVars.length == 0) || (contVars.length == numVariables ())) { return sampleInternal (r); } else { Assignment paramAssn = sampleContinuousVars (contVars, r); FactorGraph discreteSliceFg = (FactorGraph) this.slice (paramAssn); Assignment discreteAssn = discreteSliceFg.sampleInternal (r); return Assignment.union (paramAssn, discreteAssn); } }
protected Factor slice_onevar (Variable var, Assignment observed) { Assignment assn = (Assignment) observed.duplicate (); double[] vals = new double [var.getNumOutcomes ()]; for (int i = 0; i < var.getNumOutcomes (); i++) { assn.setValue (var, i); vals[i] = logValue (assn); } return LogTableFactor.makeFromLogValues (var, vals); }
private void addVarsIfNecessary (VarSet varSet) { for (int i = 0; i < varSet.size(); i++) { Variable var = varSet.get (i); if (universe == null) { universe = var.getUniverse (); } if (getIndex (var) < 0) { cacheVariable (var); } } }
public Factor slice (Assignment assn) { if (assn.containsVar (var)) { return new ConstantFactor (value (assn)); } else return duplicate (); }
public Factor slice (Assignment assn) { if (assn.containsVar (var)) { return new ConstantFactor (value (assn)); } else return duplicate (); }
public double value (AssignmentIterator it) { Assignment assn = it.assignment(); Factor tbl = sliceForAlpha (assn); return tbl.value (assn); }
protected Factor marginalizeInternal (VarSet varsToKeep) { if (varsToKeep.contains (var)) { return duplicate (); } else { return new ConstantFactor (1.0); } }
public Factor lookupMarginal (VarSet varSet) { Factor mrgl = samples.marginalize (varSet); AbstractTableFactor tbl = mrgl.asTable (); tbl.normalize (); return tbl; }
public double value (AssignmentIterator it) { Assignment assn = it.assignment(); Factor tbl = sliceForAlpha (assn); return tbl.value (assn); }
public Assignment sample (Randoms r) { Variable[] contVars = Factors.continuousVarsOf (this); if ((contVars.length == 0) || (contVars.length == numVariables ())) { return sampleInternal (r); } else { Assignment paramAssn = sampleContinuousVars (contVars, r); FactorGraph discreteSliceFg = (FactorGraph) this.slice (paramAssn); Assignment discreteAssn = discreteSliceFg.sampleInternal (r); return Assignment.union (paramAssn, discreteAssn); } }
protected Factor slice_onevar (Variable var, Assignment observed) { Assignment assn = (Assignment) observed.duplicate (); double[] vals = new double [var.getNumOutcomes ()]; for (int i = 0; i < var.getNumOutcomes (); i++) { assn.setValue (var, i); vals[i] = logValue (assn); } return LogTableFactor.makeFromLogValues (var, vals); }
public Factor slice (Assignment assn) { if (assn.containsVar (var)) { return new ConstantFactor (value (assn)); } else return duplicate (); }
public double value (AssignmentIterator it) { Assignment assn = it.assignment(); Factor tbl = sliceForAlpha (assn); return tbl.value (assn); }
protected Factor marginalizeInternal (VarSet varsToKeep) { if (varsToKeep.contains (var)) { return duplicate (); } else { return new ConstantFactor (1.0); } }
protected Factor marginalizeInternal (VarSet varsToKeep) { if (varsToKeep.contains (var)) { return duplicate (); } else { return new ConstantFactor (1.0); } }
public Factor lookupMarginal (VarSet varSet) { Factor mrgl = samples.marginalize (varSet); AbstractTableFactor tbl = mrgl.asTable (); tbl.normalize (); return tbl; }
public double value (AssignmentIterator it) { Assignment assn = it.assignment(); Factor tbl = sliceForAlpha (assn); return tbl.value (assn); }