public FactorizedRegion (List factors) { super (varsForFactors (factors), factors); subMdl = new FactorGraph ((Variable[]) vars.toArray (new Variable[0])); for (Iterator it = factors.iterator (); it.hasNext ();) { Factor factor = (Factor) it.next (); subMdl.addFactor (factor); } }
public FactorizedRegion (List factors) { super (varsForFactors (factors), factors); subMdl = new FactorGraph ((Variable[]) vars.toArray (new Variable[0])); for (Iterator it = factors.iterator (); it.hasNext ();) { Factor factor = (Factor) it.next (); subMdl.addFactor (factor); } }
public FactorizedRegion (List factors) { super (varsForFactors (factors), factors); subMdl = new FactorGraph ((Variable[]) vars.toArray (new Variable[0])); for (Iterator it = factors.iterator (); it.hasNext ();) { Factor factor = (Factor) it.next (); subMdl.addFactor (factor); } }
private Assignment sampleContinuousVars (Variable[] contVars, Randoms r) { Collection contFactors = allFactorsContaining (Arrays.asList (contVars)); FactorGraph contFg = new FactorGraph (contVars); for (Iterator it = contFactors.iterator (); it.hasNext ();) { Factor factor = (Factor) it.next (); contFg.multiplyBy (factor); } return contFg.sampleInternal (r); }
public static FactorGraph addEvidence (FactorGraph mdl, Assignment assn, Map toSlicedMap) { FactorGraph newMdl = new FactorGraph (mdl.numVariables ()); addSlicedPotentials (mdl, newMdl, assn, toSlicedMap); return newMdl; }
public static FactorGraph addEvidence (FactorGraph mdl, Assignment assn, Map toSlicedMap) { FactorGraph newMdl = new FactorGraph (mdl.numVariables ()); addSlicedPotentials (mdl, newMdl, assn, toSlicedMap); return newMdl; }
public static FactorGraph addEvidence (FactorGraph mdl, Assignment assn, Map toSlicedMap) { FactorGraph newMdl = new FactorGraph (mdl.numVariables ()); addSlicedPotentials (mdl, newMdl, assn, toSlicedMap); return newMdl; }
public void testAsTable2 () { Factor f1 = new TableFactor (vars[0], new double[] { 0.6, 0.4 }); Factor f2 = new ConstantFactor (2.0); FactorGraph fg = new FactorGraph (new Factor[] { f1, f2 }); AbstractTableFactor tbl = fg.asTable (); assertTrue (Arrays.equals(new double[] { 0.6 * 2.0, 0.4 * 2.0 }, tbl.toValueArray ())); }
public void testAsTable2 () { Factor f1 = new TableFactor (vars[0], new double[] { 0.6, 0.4 }); Factor f2 = new ConstantFactor (2.0); FactorGraph fg = new FactorGraph (new Factor[] { f1, f2 }); AbstractTableFactor tbl = fg.asTable (); assertTrue (Arrays.equals(new double[] { 0.6 * 2.0, 0.4 * 2.0 }, tbl.toValueArray ())); }
public void testNumVariables () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (tbl1); fg.multiplyBy (tbl2); assertEquals (3, fg.numVariables ()); }
public void testSum () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (tbl1); fg.multiplyBy (tbl2); assertEquals (1.71, fg.sum (), 1e-5); }
public void testMultiply () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (tbl1); fg.multiplyBy (tbl2); FactorGraph fg2 = (FactorGraph) fg.multiply (tbl3); assertEquals (2, fg.factors ().size()); assertEquals (3, fg2.factors ().size()); assertTrue (!fg.factors ().contains (tbl3)); assertTrue (fg2.factors ().contains (tbl3)); }
public void testMultiply () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (tbl1); fg.multiplyBy (tbl2); FactorGraph fg2 = (FactorGraph) fg.multiply (tbl3); assertEquals (2, fg.factors ().size()); assertEquals (3, fg2.factors ().size()); assertTrue (!fg.factors ().contains (tbl3)); assertTrue (fg2.factors ().contains (tbl3)); }
public void testNormalize () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (tbl1); fg.multiplyBy (tbl2); fg.normalize (); assertEquals (1.0, fg.sum(), 1e-5); }
public void testLogNormalize () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (ltbl1); fg.multiplyBy (ltbl2); fg.normalize (); assertEquals (1.0, fg.sum(), 1e-5); }
public void testLogNormalize () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (ltbl1); fg.multiplyBy (ltbl2); fg.normalize (); assertEquals (1.0, fg.sum(), 1e-5); }
public void testMarginalize () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (tbl1); fg.multiplyBy (tbl2); Factor marg = fg.marginalize (vars[1]); Factor expected = new TableFactor (vars[1], new double[] { 0.81, 0.9 }); assertTrue (expected.almostEquals (marg)); }
public void testAsTable () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (tbl1); fg.multiplyBy (tbl2); AbstractTableFactor actual = fg.asTable (); AbstractTableFactor expected = (AbstractTableFactor) tbl1.multiply (tbl2); assertTrue (expected.almostEquals (actual)); }
public void testRedundantDomains () { FactorGraph fg = new FactorGraph (); fg.multiplyBy (tbl1); fg.multiplyBy (tbl2); fg.multiplyBy (ltbl1); assertEquals (3, fg.varSet ().size ()); assertEquals ("Wrong factors in FG, was "+fg.dumpToString (), 3, fg.factors ().size ()); Assignment assn = new Assignment (fg.varSet ().toVariableArray (), new int [3]); assertEquals (0.128, fg.value (assn), 1e-5); }
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); }