public MessageArray averageMessages (RegionGraph rg, MessageArray a1, MessageArray a2, double inertiaWeight) { MessageArray arr = new MessageArray (rg); for (Iterator it = rg.edgeIterator (); it.hasNext ();) { RegionEdge edge = (RegionEdge) it.next (); DiscreteFactor msg1 = a1.getMessage (edge.from, edge.to); DiscreteFactor msg2 = a2.getMessage (edge.from, edge.to); if (msg1 != null) { TableFactor averaged = (TableFactor) Factors.average (msg1, msg2, inertiaWeight); arr.setMessage (edge.from, edge.to, averaged); } } return arr; }
public MessageArray averageMessages (RegionGraph rg, MessageArray a1, MessageArray a2, double inertiaWeight) { MessageArray arr = new MessageArray (rg); for (Iterator it = rg.edgeIterator (); it.hasNext ();) { RegionEdge edge = (RegionEdge) it.next (); DiscreteFactor msg1 = a1.getMessage (edge.from, edge.to); DiscreteFactor msg2 = a2.getMessage (edge.from, edge.to); if (msg1 != null) { TableFactor averaged = (TableFactor) Factors.average (msg1, msg2, inertiaWeight); arr.setMessage (edge.from, edge.to, averaged); } } return arr; }
public MessageArray averageMessages (RegionGraph rg, MessageArray a1, MessageArray a2, double inertiaWeight) { MessageArray arr = new MessageArray (rg); for (Iterator it = rg.edgeIterator (); it.hasNext ();) { RegionEdge edge = (RegionEdge) it.next (); DiscreteFactor msg1 = a1.getMessage (edge.from, edge.to); DiscreteFactor msg2 = a2.getMessage (edge.from, edge.to); if (msg1 != null) { TableFactor averaged = (TableFactor) Factors.average (msg1, msg2, inertiaWeight); arr.setMessage (edge.from, edge.to, averaged); } } return arr; }
public MessageArray averageMessages (RegionGraph rg, MessageArray a1, MessageArray a2, double inertiaWeight) { MessageArray arr = new MessageArray (rg); for (Iterator it = rg.edgeIterator (); it.hasNext ();) { RegionEdge edge = (RegionEdge) it.next (); Factor msg1 = a1.getMessage (edge.from, edge.to); Factor msg2 = a2.getMessage (edge.from, edge.to); if (msg1 != null) { TableFactor averaged = (TableFactor) Factors.average (msg1, msg2, inertiaWeight); TableFactor pruned; if (shouldPruneMessage (edge, averaged)) { pruned = Factors.retainMass (averaged, epsilon); } else { pruned = averaged; } arr.setMessage (edge.from, edge.to, pruned); } } // compute amount of sparsity int locs = 0; int idxs = 0; for (Iterator it = rg.edgeIterator (); it.hasNext ();) { RegionEdge edge = (RegionEdge) it.next (); DiscreteFactor msg = arr.getMessage (edge.from, edge.to); locs += msg.numLocations (); idxs += new HashVarSet (msg.varSet ()).weight (); } System.out.println ("Sparsity quotient = "+locs+" of "+idxs); return arr; }
public MessageArray averageMessages (RegionGraph rg, MessageArray a1, MessageArray a2, double inertiaWeight) { MessageArray arr = new MessageArray (rg); for (Iterator it = rg.edgeIterator (); it.hasNext ();) { RegionEdge edge = (RegionEdge) it.next (); Factor msg1 = a1.getMessage (edge.from, edge.to); Factor msg2 = a2.getMessage (edge.from, edge.to); if (msg1 != null) { TableFactor averaged = (TableFactor) Factors.average (msg1, msg2, inertiaWeight); TableFactor pruned; if (shouldPruneMessage (edge, averaged)) { pruned = Factors.retainMass (averaged, epsilon); } else { pruned = averaged; } arr.setMessage (edge.from, edge.to, pruned); } } // compute amount of sparsity int locs = 0; int idxs = 0; for (Iterator it = rg.edgeIterator (); it.hasNext ();) { RegionEdge edge = (RegionEdge) it.next (); DiscreteFactor msg = arr.getMessage (edge.from, edge.to); locs += msg.numLocations (); idxs += new HashVarSet (msg.varSet ()).weight (); } System.out.println ("Sparsity quotient = "+locs+" of "+idxs); return arr; }
public MessageArray averageMessages (RegionGraph rg, MessageArray a1, MessageArray a2, double inertiaWeight) { MessageArray arr = new MessageArray (rg); for (Iterator it = rg.edgeIterator (); it.hasNext ();) { RegionEdge edge = (RegionEdge) it.next (); Factor msg1 = a1.getMessage (edge.from, edge.to); Factor msg2 = a2.getMessage (edge.from, edge.to); if (msg1 != null) { TableFactor averaged = (TableFactor) Factors.average (msg1, msg2, inertiaWeight); TableFactor pruned; if (shouldPruneMessage (edge, averaged)) { pruned = Factors.retainMass (averaged, epsilon); } else { pruned = averaged; } arr.setMessage (edge.from, edge.to, pruned); } } // compute amount of sparsity int locs = 0; int idxs = 0; for (Iterator it = rg.edgeIterator (); it.hasNext ();) { RegionEdge edge = (RegionEdge) it.next (); DiscreteFactor msg = arr.getMessage (edge.from, edge.to); locs += msg.numLocations (); idxs += new HashVarSet (msg.varSet ()).weight (); } System.out.println ("Sparsity quotient = "+locs+" of "+idxs); return arr; }