Search in sources :

Example 46 with CommonTheory

use of com.sri.ai.grinder.application.CommonTheory in project aic-expresso by aic-sri-international.

the class IfThenElseStepSolverTest method test04.

@Test
public void test04() {
    Expression expression = parse("if X=2 then 2 else 3");
    String[] symbolsAndTypes = { "X", "1..1" };
    Context context = new TrueContext(new CommonTheory()).extendWithSymbolsAndTypes(symbolsAndTypes);
    Expression expectedResult = parse("3");
    // get method name as string
    String testName = new Object() {
    }.getClass().getEnclosingMethod().getName();
    runIfThenElseStepSolverTest(expression, context, expectedResult, testName);
}
Also used : TrueContext(com.sri.ai.grinder.core.TrueContext) Context(com.sri.ai.grinder.api.Context) CommonTheory(com.sri.ai.grinder.application.CommonTheory) Expression(com.sri.ai.expresso.api.Expression) TrueContext(com.sri.ai.grinder.core.TrueContext) Test(org.junit.Test)

Example 47 with CommonTheory

use of com.sri.ai.grinder.application.CommonTheory in project aic-expresso by aic-sri-international.

the class IfThenElseStepSolverTest method test11.

@Test
public void test11() {
    Expression expression = parse("if (X=1) or (Y=1) then 2 + 2 else 3 + 3");
    String[] symbolsAndTypes = { "X", "0..1", "Y", "0..1" };
    Context context = new TrueContext(new CommonTheory()).extendWithSymbolsAndTypes(symbolsAndTypes);
    Expression expectedResult = parse("if X = 1 then 4 else if Y = 1 then 4 else 6");
    // get method name as string
    String testName = new Object() {
    }.getClass().getEnclosingMethod().getName();
    runIfThenElseStepSolverTest(expression, context, expectedResult, testName);
}
Also used : TrueContext(com.sri.ai.grinder.core.TrueContext) Context(com.sri.ai.grinder.api.Context) CommonTheory(com.sri.ai.grinder.application.CommonTheory) Expression(com.sri.ai.expresso.api.Expression) TrueContext(com.sri.ai.grinder.core.TrueContext) Test(org.junit.Test)

Example 48 with CommonTheory

use of com.sri.ai.grinder.application.CommonTheory in project aic-expresso by aic-sri-international.

the class OptimizationWithNelderMead method numberOfVariablesInExpression.

public int numberOfVariablesInExpression() {
    Theory theory = new CommonTheory();
    Context context = new TrueContext(theory);
    Set<Expression> variablesInExpression = Expressions.freeVariables(expressionToOptimize, context);
    return variablesInExpression.size();
}
Also used : CommonTheory(com.sri.ai.grinder.application.CommonTheory) TrueContext(com.sri.ai.grinder.core.TrueContext) Context(com.sri.ai.grinder.api.Context) CommonTheory(com.sri.ai.grinder.application.CommonTheory) Theory(com.sri.ai.grinder.api.Theory) Expression(com.sri.ai.expresso.api.Expression) TrueContext(com.sri.ai.grinder.core.TrueContext)

Example 49 with CommonTheory

use of com.sri.ai.grinder.application.CommonTheory in project aic-praise by aic-sri-international.

the class AnytimeExactBPTest method runGabriels.

private void runGabriels(String[] variableAndTypes, String factorNetworkString, String queryVariableString, Expression expected) {
    Theory theory = new CompoundTheory(new EqualityTheory(false, true), new DifferenceArithmeticTheory(false, false), new LinearRealArithmeticTheory(false, false), new TupleTheory(), new PropositionalTheory());
    Context context = new TrueContext(new CommonTheory()).extendWithSymbolsAndTypes(variableAndTypes);
    ExpressionFactorNetwork factorNetwork = expressionFactorNetwork(factorNetworkString, context);
    Expression query = Expressions.parse(queryVariableString);
    // not sure it will work
    Set<Expression> setOfFactors = new HashSet<>();
    for (IdentityWrapper iw : factorNetwork.getAs()) {
        ExpressionFactor f = (ExpressionFactor) iw.getObject();
        Expression expressionFactor = f;
        boolean successfullyAdded = setOfFactors.add(expressionFactor);
        if (!successfullyAdded) {
            setOfFactors.remove(expressionFactor);
            Expression squareFactor = apply("*", expressionFactor, expressionFactor);
            squareFactor = theory.evaluate(squareFactor, context);
            setOfFactors.add(squareFactor);
        }
    }
    // create model
    Model m = new Model(setOfFactors, theory, context, false, query);
    // do all iterations until the end, storing time
    Iterator<PartitionTree> bfsExpander = new BFS(m);
    IncrementalAnytimeBeliefPropagationWithSeparatorConditioning sbp = new IncrementalAnytimeBeliefPropagationWithSeparatorConditioning(m, bfsExpander);
    long initialTime = System.currentTimeMillis();
    Bound inferenceResult = null;
    println("----------------solving with Gabriels----------------");
    while (bfsExpander.hasNext()) {
        inferenceResult = sbp.expandAndComputeInference();
        // .normalize(theory, context));
        println("Current bound on " + query + ": " + inferenceResult);
    }
    long finalTime = System.currentTimeMillis();
    Expression normalizedResult = inferenceResult.normalize(theory, context);
    normalizedResult = ((IntensionalSet) normalizedResult).getHead();
    Expression normalizedexpected = PRAiSEUtil.normalize(query, expected, context);
    println("Result factor: " + ((IntensionalSet) inferenceResult).getHead());
    println("Normalized   : " + normalizedResult);
    // print the way it is done above
    println("Time: " + (finalTime - initialTime) + " ms.");
    println(normalizedexpected.equals(normalizedResult) ? "Correct!" : "Error!");
    Expression test = parse("(" + normalizedResult + ") = (" + normalizedexpected + ")");
    Expression testResult = context.evaluate(test);
    assertEquals(TRUE, testResult);
}
Also used : PartitionTree(IncrementalAnytimeExactBeliefPropagation.PartitionTree) ExpressionFactorNetwork(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.core.ExpressionFactorNetwork) EqualityTheory(com.sri.ai.grinder.theory.equality.EqualityTheory) PropositionalTheory(com.sri.ai.grinder.theory.propositional.PropositionalTheory) EqualityTheory(com.sri.ai.grinder.theory.equality.EqualityTheory) CommonTheory(com.sri.ai.grinder.application.CommonTheory) LinearRealArithmeticTheory(com.sri.ai.grinder.theory.linearrealarithmetic.LinearRealArithmeticTheory) Theory(com.sri.ai.grinder.api.Theory) DifferenceArithmeticTheory(com.sri.ai.grinder.theory.differencearithmetic.DifferenceArithmeticTheory) CompoundTheory(com.sri.ai.grinder.theory.compound.CompoundTheory) TupleTheory(com.sri.ai.grinder.theory.tuple.TupleTheory) LinearRealArithmeticTheory(com.sri.ai.grinder.theory.linearrealarithmetic.LinearRealArithmeticTheory) Bound(com.sri.ai.grinder.library.bounds.Bound) PropositionalTheory(com.sri.ai.grinder.theory.propositional.PropositionalTheory) CompoundTheory(com.sri.ai.grinder.theory.compound.CompoundTheory) IncrementalAnytimeBeliefPropagationWithSeparatorConditioning(IncrementalAnytimeExactBeliefPropagation.IncrementalAnytimeBeliefPropagationWithSeparatorConditioning) TupleTheory(com.sri.ai.grinder.theory.tuple.TupleTheory) BFS(IncrementalAnytimeExactBeliefPropagation.Model.BFS) ExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.api.ExpressionFactor) IntensionalSet(com.sri.ai.expresso.api.IntensionalSet) HashSet(java.util.HashSet) TrueContext(com.sri.ai.grinder.core.TrueContext) Context(com.sri.ai.grinder.api.Context) DifferenceArithmeticTheory(com.sri.ai.grinder.theory.differencearithmetic.DifferenceArithmeticTheory) IdentityWrapper(com.sri.ai.util.base.IdentityWrapper) TrueContext(com.sri.ai.grinder.core.TrueContext) CommonTheory(com.sri.ai.grinder.application.CommonTheory) Expression(com.sri.ai.expresso.api.Expression) Model(IncrementalAnytimeExactBeliefPropagation.Model.Model)

Example 50 with CommonTheory

use of com.sri.ai.grinder.application.CommonTheory in project aic-praise by aic-sri-international.

the class ExpressionFactorTest method testInvert.

@Test
public void testInvert() {
    Context context = new TrueContext(new CommonTheory()).extendWithSymbolsAndTypes("U", "Boolean", "V", "Boolean");
    ExpressionFactor factorUV = new DefaultExpressionFactor(parse("if U and V then 2 else 3"), context);
    Factor invertedFactor = factorUV.invert();
    assertEquals("if U then if V then 0.5 else 1/3 else 1/3", invertedFactor.toString());
}
Also used : TrueContext(com.sri.ai.grinder.core.TrueContext) Context(com.sri.ai.grinder.api.Context) CommonTheory(com.sri.ai.grinder.application.CommonTheory) ExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.api.ExpressionFactor) DefaultExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.core.DefaultExpressionFactor) DefaultExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.core.DefaultExpressionFactor) ConstantFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.ConstantFactor) ExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.api.ExpressionFactor) Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor) DefaultExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.core.DefaultExpressionFactor) TrueContext(com.sri.ai.grinder.core.TrueContext) Test(org.junit.Test)

Aggregations

Context (com.sri.ai.grinder.api.Context)58 CommonTheory (com.sri.ai.grinder.application.CommonTheory)58 TrueContext (com.sri.ai.grinder.core.TrueContext)58 Expression (com.sri.ai.expresso.api.Expression)55 Test (org.junit.Test)47 Theory (com.sri.ai.grinder.api.Theory)36 Factor (com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor)13 ExpressionFactor (com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.api.ExpressionFactor)13 DefaultExpressionFactor (com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.core.DefaultExpressionFactor)12 ConstantFactor (com.sri.ai.praise.core.representation.interfacebased.factor.core.ConstantFactor)11 CompoundTheory (com.sri.ai.grinder.theory.compound.CompoundTheory)9 DifferenceArithmeticTheory (com.sri.ai.grinder.theory.differencearithmetic.DifferenceArithmeticTheory)9 EqualityTheory (com.sri.ai.grinder.theory.equality.EqualityTheory)9 LinearRealArithmeticTheory (com.sri.ai.grinder.theory.linearrealarithmetic.LinearRealArithmeticTheory)9 PropositionalTheory (com.sri.ai.grinder.theory.propositional.PropositionalTheory)9 TupleTheory (com.sri.ai.grinder.theory.tuple.TupleTheory)9 DefaultExpressionVariable (com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.core.DefaultExpressionVariable)7 ExpressionVariable (com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.api.ExpressionVariable)5 ExpressionFactorNetwork (com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.core.ExpressionFactorNetwork)4 ArrayList (java.util.ArrayList)3