use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.
the class ExpressionFactorTest method testAdd3.
@Test
public void testAdd3() {
Theory theory = new CommonTheory();
Context context = new TrueContext(theory);
Expression a = DefaultSymbol.createSymbol("a");
ExpressionFactor aFactor = new DefaultExpressionFactor(a, context);
Factor result = aFactor.add(ZERO_FACTOR);
assertEquals(aFactor, result);
}
use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.
the class BenchmarkingIsingModel method testEBPP.
private static void testEBPP(AEBPTestingDataFrame df, int nRepetitions, List<TableFactor> network, TableVariable query, String netName) {
TableFactorNetwork factorNetwork = new TableFactorNetwork(network);
ExactBPNode<Variable, Factor> exactBP = new ExactBP(query, factorNetwork);
for (int i = 0; i < nRepetitions; i++) {
println("solveWithExactBP : " + netName);
Pair<Double, Factor> p = solveAndPrint(exactBP);
df.addRow(// run number
i, // iteration
-1, // minPTrue
((TableFactor) p.second).getEntries().get(0), // MaxPTrue
((TableFactor) p.second).getEntries().get(0), // iteration time
p.first, // total time
p.first, // InferenceMethodUsed
"ExactBP", // GraphicalModelName
netName + "; query: " + query.toString());
}
}
use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.
the class IntensionalConvexHullOfFactors method multiplyByConvexHull.
private AtomicPolytope multiplyByConvexHull(AtomicPolytope another) {
AtomicPolytope result;
IntensionalConvexHullOfFactors anotherConvexHull = (IntensionalConvexHullOfFactors) another;
if (indices.equals(anotherConvexHull.getIndices())) {
Factor productFactor = factor.multiply(anotherConvexHull.getFactor());
result = new IntensionalConvexHullOfFactors(indices, productFactor);
} else {
result = null;
}
return result;
}
use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.
the class UAIModelToExpressionFactorNetwork method main.
public static void main(String[] args) {
try {
// Importing the file and reading it
FileReader modelFile = new FileReader(new File("").getAbsolutePath() + "/UAITests/BN_0.uai");
UAIModel model = UAIModelReader.read(modelFile);
// Converting the network
ExpressionFactorNetwork network = convert(model, null);
// Printing the factors
for (IdentityWrapper<Factor> fwrapped : network.getAs()) {
ExpressionFactor f = (ExpressionFactor) fwrapped.getObject();
println(f);
}
/*// This seems to be OK! But when we analyze the connections between the factors:
IdentityWrapper<Factor> f = network.getAs().iterator().next();
println("Printing one of the factors of the network:\n\t "+f);
println("Printing this factor's connections:\n\t" + network.getBsOfA(f));
println("This shows that there is something wrong\n"
+ "In fact the connections in the graph are made based on the 'freeVariables' of a factor");
println("freeVariables of f: "+Expressions.freeVariables((ExpressionFactor)f.getObject(),((ExpressionFactor)f.getObject()).getContext()));
println("\nWe can check that those 'abnomalies' are indeed variables on the network:");
for(Variable v:network.getBs()) {
System.out.print(v + ", ");
}*/
} catch (IOException e) {
e.printStackTrace();
}
}
use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.
the class Polytopes method IntensionalConvexHullToListOfFactors.
public static List<TableFactor> IntensionalConvexHullToListOfFactors(IntensionalConvexHullOfFactors polytope) {
TableFactor factor = (TableFactor) polytope.getFactor();
List<TableVariable> indexes = mapIntoArrayList(polytope.getIndices(), v -> (TableVariable) v);
List<List<Integer>> listOfListOfValues = mapIntoList(indexes, v -> mapIntoList(v.getValues(), o -> (Integer) o));
List<NullaryFunction<Iterator<Integer>>> iteratorForListOfVariableValues = mapIntoList(listOfListOfValues, element -> () -> element.iterator());
Iterator<ArrayList<Integer>> cartesianProduct = new CartesianProductIterator<Integer>(iteratorForListOfVariableValues);
List<TableFactor> result = new LinkedList<>();
for (List<Integer> instantiations : in(cartesianProduct)) {
result.add(TableFactor.copyToSubTableFactor(factor, indexes, instantiations));
}
return result;
}
Aggregations