Search in sources :

Example 1 with Factor

use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.

the class Polytopes method makeProductOfFactors.

private static Factor makeProductOfFactors(List<? extends AtomicPolytope> convexHulls) {
    List<Factor> factors = collectFactorsFromIntensionalPolytopes(convexHulls);
    Factor productOfFactors = Factor.multiply(factors);
    return productOfFactors;
}
Also used : Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor) TableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableFactor)

Example 2 with Factor

use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.

the class Polytopes method makeProjectedPolytopeOfIntensionalConvexHull.

private static Polytope makeProjectedPolytopeOfIntensionalConvexHull(List<? extends Variable> variablesToBeSummedOut, List<Polytope> dependentOfVariablesToBeSummedOut) {
    List<Variable> simplexVariables = collectSimplexVariables(dependentOfVariablesToBeSummedOut);
    List<Variable> indicesFromConvexHulls = collectIndicesFromIntensionalPolytopes(dependentOfVariablesToBeSummedOut);
    List<Factor> factors = collectFactorsFromIntensionalPolytopes(dependentOfVariablesToBeSummedOut);
    Factor productOfFactors = Factor.multiply(factors);
    List<? extends Variable> variablesToBeSummedOutOnceSimplexesAreDealtWith = subtract(variablesToBeSummedOut, simplexVariables);
    Factor projectedFactor = productOfFactors.sumOut(variablesToBeSummedOutOnceSimplexesAreDealtWith);
    List<Variable> finalIndices = union(indicesFromConvexHulls, simplexVariables);
    Polytope projectedPolytope = new IntensionalConvexHullOfFactors(finalIndices, projectedFactor);
    return projectedPolytope;
}
Also used : AtomicPolytope(com.sri.ai.praise.core.representation.interfacebased.polytope.api.AtomicPolytope) Polytope(com.sri.ai.praise.core.representation.interfacebased.polytope.api.Polytope) Variable(com.sri.ai.praise.core.representation.interfacebased.factor.api.Variable) TableVariable(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableVariable) TableBoxVariable(com.sri.ai.praise.core.representation.interfacebased.polytope.core.byexpressiveness.box.TableBoxVariable) Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor) TableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableFactor)

Example 3 with Factor

use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.

the class Polytopes method mergeIntensionalConvexHulls.

private static IntensionalConvexHullOfFactors mergeIntensionalConvexHulls(List<? extends AtomicPolytope> convexHulls) {
    List<Variable> indicesFromConvexHulls = collectIndicesFromIntensionalPolytopes(convexHulls);
    Factor productOfFactors = makeProductOfFactors(convexHulls);
    IntensionalConvexHullOfFactors result = new IntensionalConvexHullOfFactors(indicesFromConvexHulls, productOfFactors);
    return result;
}
Also used : Variable(com.sri.ai.praise.core.representation.interfacebased.factor.api.Variable) TableVariable(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableVariable) TableBoxVariable(com.sri.ai.praise.core.representation.interfacebased.polytope.core.byexpressiveness.box.TableBoxVariable) Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor) TableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableFactor)

Example 4 with Factor

use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.

the class ConstantFactor method evaluateAsFactor.

private Factor evaluateAsFactor(Expression expression, Context context) {
    Expression resultFactorExpression = evaluate(expression, context);
    Factor result = makeFactor(resultFactorExpression, context);
    return result;
}
Also used : Expression(com.sri.ai.expresso.api.Expression) ExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.api.ExpressionFactor) TableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableFactor) Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor) DefaultExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.core.DefaultExpressionFactor)

Example 5 with Factor

use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.

the class ConstantFactor method multiply.

@Override
public Factor multiply(Factor another) {
    Factor result = null;
    if (another instanceof ConstantFactor) {
        ConstantFactor anotherConstant = (ConstantFactor) another;
        result = multiplyTwoConstantFactors(anotherConstant);
    } else if (another instanceof ExpressionFactor) {
        ExpressionFactor anotherExpression = (ExpressionFactor) another;
        result = evaluateAsFactor(Times.make(makeSymbol(getConstant()), (Expression) another), anotherExpression.getContext());
    } else if (another instanceof TableFactor) {
        TableFactor anotherTable = (TableFactor) another;
        result = multiplyWithTableFactor(anotherTable);
    } else {
        throw new Error("Unknown class for another : class was " + another.getClass());
    }
    return result;
}
Also used : 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) TableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableFactor) Expression(com.sri.ai.expresso.api.Expression) ExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.api.ExpressionFactor) TableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableFactor) Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor) DefaultExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.core.DefaultExpressionFactor)

Aggregations

Factor (com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor)61 ExpressionFactor (com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.api.ExpressionFactor)34 ConstantFactor (com.sri.ai.praise.core.representation.interfacebased.factor.core.ConstantFactor)26 TableFactor (com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableFactor)21 Expression (com.sri.ai.expresso.api.Expression)20 DefaultExpressionFactor (com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.core.DefaultExpressionFactor)18 Context (com.sri.ai.grinder.api.Context)16 CommonTheory (com.sri.ai.grinder.application.CommonTheory)16 TrueContext (com.sri.ai.grinder.core.TrueContext)16 Test (org.junit.Test)14 Theory (com.sri.ai.grinder.api.Theory)13 DifferenceArithmeticTheory (com.sri.ai.grinder.theory.differencearithmetic.DifferenceArithmeticTheory)11 Variable (com.sri.ai.praise.core.representation.interfacebased.factor.api.Variable)10 RandomTableFactorMaker.makeRandomTableFactor (com.sri.ai.praise.core.representation.interfacebased.factor.core.table.helper.RandomTableFactorMaker.makeRandomTableFactor)10 ArrayList (java.util.ArrayList)10 CompoundTheory (com.sri.ai.grinder.theory.compound.CompoundTheory)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