/** * Creates an assignment over all Variables in a model. * The assignment will assign outcomes[i] to the variable * <tt>mdl.get(i)</tt> */ public Assignment (FactorGraph mdl, int[] outcomes) { var2idx = new TObjectIntHashMap (mdl.numVariables ()); values = new ArrayList (); Variable[] vars = new Variable [mdl.numVariables ()]; for (int i = 0; i < vars.length; i++) vars[i] = mdl.get (i); addRow (vars, outcomes); }
public Factor extractMax (Collection vars) { if (numVariables () < 5) { return asTable ().extractMax (vars); } else { throw new UnsupportedOperationException ("not yet implemented"); } }
public Factor extractMax (Variable var) { if (numVariables () < 5) { return asTable ().extractMax (var); } else { throw new UnsupportedOperationException ("not yet implemented"); } }
public Factor extractMax (Variable[] vars) { if (numVariables () < 5) { return asTable ().extractMax (vars); } else { throw new UnsupportedOperationException ("not yet implemented"); } }
public Factor extractMax (Variable[] vars) { if (numVariables () < 5) { return asTable ().extractMax (vars); } else { throw new UnsupportedOperationException ("not yet implemented"); } }
public Factor extractMax (Variable[] vars) { if (numVariables () < 5) { return asTable ().extractMax (vars); } else { throw new UnsupportedOperationException ("not yet implemented"); } }
private void dumpBeliefs (PrintWriter writer) { for (int vi = 0; vi < mdlCurrent.numVariables (); vi++) { Variable var = mdlCurrent.get (vi); Factor mrg = lookupMarginal (var); writer.println (mrg.dumpToString ()); writer.println (); } }
private void dumpBeliefs (PrintWriter writer) { for (int vi = 0; vi < mdlCurrent.numVariables (); vi++) { Variable var = mdlCurrent.get (vi); Factor mrg = lookupMarginal (var); writer.println (mrg.dumpToString ()); writer.println (); } }
private static void writeVariables (FactorGraph fg, Writer w) throws IOException { for (int vi = 0; vi < fg.numVariables(); vi++) { Variable var = fg.getVariable (vi); int nOuts = var.getNumOutcomes (); String outStr = nOuts == Variable.CONTINUOUS ? "continuous" : Integer.toString(nOuts); w.write("VAR " + var.getLabel() + " : " + outStr + "\n"); } }
public static FactorGraph addEvidence (FactorGraph mdl, Assignment assn, Map toSlicedMap) { FactorGraph newMdl = new FactorGraph (mdl.numVariables ()); addSlicedPotentials (mdl, newMdl, assn, toSlicedMap); return newMdl; }
private static void writeVariables (FactorGraph fg, Writer w) throws IOException { for (int vi = 0; vi < fg.numVariables(); vi++) { Variable var = fg.getVariable (vi); int nOuts = var.getNumOutcomes (); String outStr = nOuts == Variable.CONTINUOUS ? "continuous" : Integer.toString(nOuts); w.write("VAR " + var.getLabel() + " : " + outStr + "\n"); } }
public MessageArray (FactorGraph fg) { this.fg = fg; numV = fg.numVariables (); numF = fg.factors ().size(); messages = new MIntInt2ObjectMap (numV + numV); inLogSpace = (fg.getFactor (0) instanceof LogTableFactor); }
public static double[] allL1MarginalDistance (FactorGraph mdl, Inferencer inf1, Inferencer inf2) { double[] dist = new double [mdl.numVariables ()]; int i = 0; for (Iterator it = mdl.variablesIterator (); it.hasNext();) { Variable var = (Variable) it.next (); Factor bel1 = inf1.lookupMarginal (var); Factor bel2 = inf2.lookupMarginal (var); dist[i++] = Factors.oneDistance (bel1, bel2); } return dist; }
public static void addRandomNodePotentials (Random r, FactorGraph mdl) { int size = mdl.numVariables (); for (int i = 0; i < size; i++) { Variable var = mdl.get (i); TableFactor ptl = randomNodePotential (r, var); mdl.addFactor (ptl); } }
public void testNumVariables () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (tbl1); fg.multiplyBy (tbl2); assertEquals (3, fg.numVariables ()); }
public void testNumVariables () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (tbl1); fg.multiplyBy (tbl2); assertEquals (3, fg.numVariables ()); }
public Assignment bestAssignment () { int[] outcomes = new int [mdlCurrent.numVariables ()]; for (int i = 0; i < outcomes.length; i++) { Variable var = mdlCurrent.get (i); TableFactor ptl = (TableFactor) lookupMarginal (var); outcomes[i] = ptl.argmax (); } return new Assignment (mdlCurrent, outcomes); }
public void testMultiplyBy () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (tbl1); fg.multiplyBy (tbl2); assertEquals (2, fg.factors ().size()); assertTrue (fg.factors ().contains (tbl1)); assertTrue (fg.factors ().contains (tbl2)); assertEquals (3, fg.numVariables ()); assertTrue (fg.variablesSet ().contains (vars[0])); assertTrue (fg.variablesSet ().contains (vars[1])); assertTrue (fg.variablesSet ().contains (vars[2])); }
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); } }
private void compareMarginals (String msg, FactorGraph fg, Inferencer inf1, Inferencer inf2) { for (int i = 0; i < fg.numVariables (); i++) { Variable var = fg.get (i); Factor ptl1 = inf1.lookupMarginal (var); Factor ptl2 = inf2.lookupMarginal (var); assertTrue (msg + "\n" + ptl1.dumpToString () + "\n" + ptl2.dumpToString (), ptl1.almostEquals (ptl2, 1e-5)); } }