protected void beforeFactorAdd (Factor factor) { super.beforeFactorAdd (factor); if (!(factor instanceof CPT)) { throw new IllegalArgumentException ("Factors of a directed model must be an instance of CPT, was "+factor); } CPT cpt = (CPT) factor; Variable child = cpt.getChild (); VarSet parents = cpt.getParents (); if (graph.containsVertex (child)) { checkForNoCycle (parents, child, cpt); } }
public String prettyOutputString() { return toString(); }
public void testFactorReplace () { DirectedModel dm = new DirectedModel (vars); dm.addFactor (pA); dm.addFactor (pB); dm.addFactor (pC); assertEquals (3, dm.factors ().size ()); TableFactor f1 = new TableFactor (new Variable[] { B, C }); CPT p1 = new CPT (f1, C); try { dm.addFactor (p1); } catch (IllegalArgumentException e) { // expected } }
public void testFactorReplace () { DirectedModel dm = new DirectedModel (vars); dm.addFactor (pA); dm.addFactor (pB); dm.addFactor (pC); assertEquals (3, dm.factors ().size ()); TableFactor f1 = new TableFactor (new Variable[] { B, C }); CPT p1 = new CPT (f1, C); try { dm.addFactor (p1); } catch (IllegalArgumentException e) { // expected } }
protected void beforeFactorAdd (Factor factor) { super.beforeFactorAdd (factor); if (!(factor instanceof CPT)) { throw new IllegalArgumentException ("Factors of a directed model must be an instance of CPT, was "+factor); } CPT cpt = (CPT) factor; Variable child = cpt.getChild (); VarSet parents = cpt.getParents (); if (graph.containsVertex (child)) { checkForNoCycle (parents, child, cpt); } }
public void testCycleChecking () { DirectedModel dm = new DirectedModel (vars); dm.addFactor (pA); dm.addFactor (pB); dm.addFactor (pC); try { TableFactor f1 = new TableFactor (new Variable[] { B, C }); dm.addFactor (new CPT (f1, B)); assertTrue ("Test failed: No exception thrown.", false); } catch (IllegalArgumentException e) { // Exception is expected } try { TableFactor f1 = new TableFactor (new Variable[] { A, C }); dm.addFactor (new CPT (f1, A)); assertTrue ("Test failed: No exception thrown.", false); } catch (IllegalArgumentException e) { // Exception is expected } }
public String prettyOutputString() { return toString(); }
protected void beforeFactorAdd (Factor factor) { super.beforeFactorAdd (factor); if (!(factor instanceof CPT)) { throw new IllegalArgumentException ("Factors of a directed model must be an instance of CPT, was "+factor); } CPT cpt = (CPT) factor; Variable child = cpt.getChild (); VarSet parents = cpt.getParents (); if (graph.containsVertex (child)) { checkForNoCycle (parents, child, cpt); } }
public void testCycleChecking () { DirectedModel dm = new DirectedModel (vars); dm.addFactor (pA); dm.addFactor (pB); dm.addFactor (pC); try { TableFactor f1 = new TableFactor (new Variable[] { B, C }); dm.addFactor (new CPT (f1, B)); assertTrue ("Test failed: No exception thrown.", false); } catch (IllegalArgumentException e) { // Exception is expected } try { TableFactor f1 = new TableFactor (new Variable[] { A, C }); dm.addFactor (new CPT (f1, A)); assertTrue ("Test failed: No exception thrown.", false); } catch (IllegalArgumentException e) { // Exception is expected } }
public String prettyOutputString() { return toString(); }
protected void afterFactorAdd (Factor factor) { super.afterFactorAdd (factor); CPT cpt = (CPT) factor; Variable child = cpt.getChild (); VarSet parents = cpt.getParents (); allCpts.put (child, cpt); graph.addVertex (child); graph.addAllVertices (parents); for (Iterator it = parents.iterator (); it.hasNext ();) { Variable rent = (Variable) it.next (); graph.addEdge (rent, child); } }
private DirectedModel createDirectedModel () { int NUM_OUTCOMES = 2; cc.mallet.util.Randoms random = new cc.mallet.util.Randoms (13413); Dirichlet dirichlet = new Dirichlet (NUM_OUTCOMES, 1.0); double[] pA = dirichlet.randomVector (random); double[] pB = dirichlet.randomVector (random); TDoubleArrayList pC = new TDoubleArrayList (NUM_OUTCOMES * NUM_OUTCOMES * NUM_OUTCOMES); for (int i = 0; i < (NUM_OUTCOMES * NUM_OUTCOMES); i++) { pC.add (dirichlet.randomVector (random)); } Variable[] vars = new Variable[] { new Variable (NUM_OUTCOMES), new Variable (NUM_OUTCOMES), new Variable (NUM_OUTCOMES) }; DirectedModel mdl = new DirectedModel (); mdl.addFactor (new CPT (new TableFactor (vars[0], pA), vars[0])); mdl.addFactor (new CPT (new TableFactor (vars[1], pB), vars[1])); mdl.addFactor (new CPT (new TableFactor (vars, pC.toNativeArray ()), vars[2])); return mdl; }
protected void afterFactorAdd (Factor factor) { super.afterFactorAdd (factor); CPT cpt = (CPT) factor; Variable child = cpt.getChild (); VarSet parents = cpt.getParents (); allCpts.put (child, cpt); graph.addVertex (child); graph.addAllVertices (parents); for (Iterator it = parents.iterator (); it.hasNext ();) { Variable rent = (Variable) it.next (); graph.addEdge (rent, child); } }
private DirectedModel createDirectedModel () { int NUM_OUTCOMES = 2; cc.mallet.util.Randoms random = new cc.mallet.util.Randoms (13413); Dirichlet dirichlet = new Dirichlet (NUM_OUTCOMES, 1.0); double[] pA = dirichlet.randomVector (random); double[] pB = dirichlet.randomVector (random); TDoubleArrayList pC = new TDoubleArrayList (NUM_OUTCOMES * NUM_OUTCOMES * NUM_OUTCOMES); for (int i = 0; i < (NUM_OUTCOMES * NUM_OUTCOMES); i++) { pC.add (dirichlet.randomVector (random)); } Variable[] vars = new Variable[] { new Variable (NUM_OUTCOMES), new Variable (NUM_OUTCOMES), new Variable (NUM_OUTCOMES) }; DirectedModel mdl = new DirectedModel (); mdl.addFactor (new CPT (new TableFactor (vars[0], pA), vars[0])); mdl.addFactor (new CPT (new TableFactor (vars[1], pB), vars[1])); mdl.addFactor (new CPT (new TableFactor (vars, pC.toNativeArray ()), vars[2])); return mdl; }
protected void afterFactorAdd (Factor factor) { super.afterFactorAdd (factor); CPT cpt = (CPT) factor; Variable child = cpt.getChild (); VarSet parents = cpt.getParents (); allCpts.put (child, cpt); graph.addVertex (child); graph.addAllVertices (parents); for (Iterator it = parents.iterator (); it.hasNext ();) { Variable rent = (Variable) it.next (); graph.addEdge (rent, child); } }
return new CPT (ptl, var);
return new CPT (ptl, var);
return new CPT (ptl, var);