use of com.sri.ai.praise.core.representation.classbased.expressionbased.api.ExpressionBasedProblem in project aic-praise by aic-sri-international.
the class ExpressionBasedProblemTest method runTest.
private void runTest(String modelString, String queryString, String expectedFactorExpressionsIncludingQueryDefinitionIfAnyString, String expectedQuerySymbolString, boolean expectedQueryIsCompound, String expectedSymbolsAndTypesString) {
HOGMExpressionBasedModel model = new HOGMExpressionBasedModel(modelString);
Expression queryExpression = parse(queryString);
ExpressionBasedProblem problem = new DefaultExpressionBasedProblem(queryExpression, model);
String actualFactorExpressionsIncludingQueryDefinitionIfAnyString = problem.getFactorExpressionsIncludingQueryDefinitionIfAny().toString();
println(expectedFactorExpressionsIncludingQueryDefinitionIfAnyString);
println(actualFactorExpressionsIncludingQueryDefinitionIfAnyString);
assertEquals(expectedFactorExpressionsIncludingQueryDefinitionIfAnyString, actualFactorExpressionsIncludingQueryDefinitionIfAnyString);
String actualQuerySymbol = problem.getQuerySymbol().toString();
println("expected querySymbol: " + expectedQuerySymbolString);
println("actual querySymbol: " + actualQuerySymbol);
assertEquals(expectedQuerySymbolString, actualQuerySymbol);
boolean actualQueryIsCompound = problem.getQueryIsCompound();
println("expected queryIsCompound: " + expectedQueryIsCompound);
println("actual queryIsCompound: " + actualQueryIsCompound);
assertEquals(expectedQueryIsCompound, actualQueryIsCompound);
String actualSymbolsAndTypesString = problem.getContext().getSymbolsAndTypes().toString();
println("expected context string: " + expectedSymbolsAndTypesString);
println("actual context string: " + actualSymbolsAndTypesString);
assertEquals(expectedSymbolsAndTypesString, actualSymbolsAndTypesString);
}
use of com.sri.ai.praise.core.representation.classbased.expressionbased.api.ExpressionBasedProblem in project aic-praise by aic-sri-international.
the class ExpressionBasedProblemToInterfaceBasedProblemConversion method translate.
public static Problem translate(ExpressionBasedProblem expressionBasedProblem) {
ExpressionVariable queryVariable = new DefaultExpressionVariable(expressionBasedProblem.getQuerySymbol());
ExpressionFactorNetwork factorNetwork = makeFactorNetwork(expressionBasedProblem);
Predicate<Expression> isExpressionParameterPredicate = expressionBasedProblem.getIsParameterPredicate();
Predicate<Variable> isParameterPredicate = makeIsParameterPredicate(isExpressionParameterPredicate);
Problem problem = new DefaultVariableMarginalQuery(queryVariable, factorNetwork, isParameterPredicate);
return problem;
}
use of com.sri.ai.praise.core.representation.classbased.expressionbased.api.ExpressionBasedProblem in project aic-praise by aic-sri-international.
the class ExpressionBasedSolver method solve.
default Expression solve(Expression queryExpression, ExpressionBasedModel expressionBasedModel) {
ExpressionBasedProblem problem = new DefaultExpressionBasedProblem(queryExpression, expressionBasedModel);
Expression result = solve(problem);
return result;
}
use of com.sri.ai.praise.core.representation.classbased.expressionbased.api.ExpressionBasedProblem in project aic-praise by aic-sri-international.
the class ExpressionBasedSolverTest method runTest.
private void runTest(Expression queryExpression, ExpressionBasedModel model, Expression expected, boolean useFactorization) throws AssertionError {
ExpressionBasedProblem problem = new DefaultExpressionBasedProblem(queryExpression, model);
ExpressionBasedSolver[] solvers = new ExpressionBasedSolver[] { // new EvaluationExpressionBasedSolver(useFactorization),
new ExactBPExpressionBasedSolver() };
for (ExpressionBasedSolver solver : solvers) {
Expression marginal = solver.solve(problem);
checkResult(problem, expected, marginal, solver);
}
}
use of com.sri.ai.praise.core.representation.classbased.expressionbased.api.ExpressionBasedProblem in project aic-praise by aic-sri-international.
the class SolverToExpressionBasedSolverAdapter method solveForQuerySymbolDefinedByExpressionBasedProblem.
@Override
protected Expression solveForQuerySymbolDefinedByExpressionBasedProblem(ExpressionBasedProblem expressionBasedProblem) {
Problem problem = ExpressionBasedProblemToInterfaceBasedProblemConversion.translate(expressionBasedProblem);
Expression result = getSolver().solve(problem);
return result;
}
Aggregations