private static Collection varsForFactors (List factors) { Set vars = new THashSet (); for (Iterator it = factors.iterator (); it.hasNext ();) { Factor ptl = (Factor) it.next (); vars.addAll (ptl.varSet ()); } return vars; }
private static Collection varsForFactors (List factors) { Set vars = new THashSet (); for (Iterator it = factors.iterator (); it.hasNext ();) { Factor ptl = (Factor) it.next (); vars.addAll (ptl.varSet ()); } return vars; }
public static void addAllFactors (FactorGraph mdl, List regions) { for (Iterator it = regions.iterator (); it.hasNext ();) { Region region = (Region) it.next (); for (Iterator pIt = mdl.factorsIterator (); pIt.hasNext();) { Factor ptl = (Factor) pIt.next (); if (region.vars.containsAll (ptl.varSet ())) { region.factors.add (ptl); } } } }
Region (Factor ptl) { this (); factors = new THashSet (); factors.add (ptl); vars = new ArrayList (ptl.varSet ()); }
private void recacheFactors () { numNodes = 0; for (Iterator it = factors.iterator (); it.hasNext ();) { Factor ptl = (Factor) it.next (); VarSet vs = ptl.varSet (); addVarsIfNecessary (vs); cacheFactor (vs, ptl); } }
private Factor eliminate (Collection allPhi, Variable node) { HashSet phiSet = new HashSet(); /* collect the potentials that include this variable */ for (Iterator j = allPhi.iterator(); j.hasNext(); ) { Factor cpf = (Factor) j.next (); if (cpf.varSet().isEmpty() || cpf.containsVar (node)) { phiSet.add (cpf); j.remove (); } } return TableFactor.multiplyAll (phiSet); }
public static Variable[] continuousVarsOf (Factor fg) { List vars = new ArrayList (); VarSet vs = fg.varSet (); for (int vi = 0; vi < vs.size (); vi++) { Variable var = vs.get (vi); if (var.isContinuous ()) { vars.add (var); } } return (Variable[]) vars.toArray (new Variable [vars.size ()]); }
public static Variable[] continuousVarsOf (Factor fg) { List vars = new ArrayList (); VarSet vs = fg.varSet (); for (int vi = 0; vi < vs.size (); vi++) { Variable var = vs.get (vi); if (var.isContinuous ()) { vars.add (var); } } return (Variable[]) vars.toArray (new Variable [vars.size ()]); }
private void removeFactor (Factor factor) { factors.remove (factor); clique2ptl.remove (factor.varSet ()); regenerateCaches (); }
public static Variable[] discreteVarsOf (Factor fg) { List vars = new ArrayList (); VarSet vs = fg.varSet (); for (int vi = 0; vi < vs.size (); vi++) { Variable var = vs.get (vi); if (!var.isContinuous ()) { vars.add (var); } } return (Variable[]) vars.toArray (new Variable [vars.size ()]); }
public static Variable[] continuousVarsOf (Factor fg) { List vars = new ArrayList (); VarSet vs = fg.varSet (); for (int vi = 0; vi < vs.size (); vi++) { Variable var = vs.get (vi); if (var.isContinuous ()) { vars.add (var); } } return (Variable[]) vars.toArray (new Variable [vars.size ()]); }
public void unionAll (Factor factor) { VarSet varSet = factor.varSet (); for (int i = 0; i < varSet.size (); i++) { Variable var = varSet.get (i); union (var, factor); } }
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; }
public void sendMessage (FactorGraph mdl, Variable from, Factor to) { // System.err.println ("...max-prod message"); int fromIdx = messages.getIndex (from); int toIdx = messages.getIndex (to); Factor msg = msgProduct (null, fromIdx, toIdx); msg.normalize (); assert msg.varSet ().size () == 1; assert msg.varSet ().contains (from); messages.put (fromIdx, toIdx, msg); }
public void testTableTimesFg () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (tbl1); fg.multiplyBy (tbl2); Factor product = tbl3.multiply (fg); assertTrue (product instanceof AbstractTableFactor); assertEquals (4, product.varSet ().size ()); Assignment assn = new Assignment (product.varSet ().toVariableArray (), new int [4]); assertEquals (0.032, product.value (assn), 1e-5); }