Search in sources :

Example 21 with Factor

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

the class GradientAnytimeExactBP method createNormalizedMaxFactor.

private Factor createNormalizedMaxFactor(Collection<? extends Variable> rootIndices) {
    Approximation<Factor> rootApproximation = getCurrentApproximation();
    IntensionalConvexHullOfFactors rootConvexHull = transformApproximationToConvexHullOrThrowsErrorIfNotPossible(rootApproximation);
    Factor rootFactor = rootConvexHull.getFactor();
    Factor maxFactor = rootFactor.max(rootIndices);
    Factor normalizedMaxFactor = maxFactor.normalize();
    return normalizedMaxFactor;
}
Also used : IntensionalConvexHullOfFactors(com.sri.ai.praise.core.representation.interfacebased.polytope.core.byexpressiveness.convexhull.IntensionalConvexHullOfFactors) ConstantFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.ConstantFactor) Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor)

Example 22 with Factor

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

the class GradientAnytimeExactBP method computeInvertedMaxMinusMinFactor.

private static Factor computeInvertedMaxMinusMinFactor(Factor factor, Collection<? extends Variable> variablesToMaximizeAndMinimizeOver) {
    Factor maxFactor = factor.max(variablesToMaximizeAndMinimizeOver);
    Factor minFactor = factor.min(variablesToMaximizeAndMinimizeOver);
    Factor normalizedMaxFactor = maxFactor.normalize();
    Factor normalizedMinFactor = minFactor.normalize();
    Factor minusMinFactor = normalizedMinFactor.multiply(new ConstantFactor(-1.));
    Factor maxMinusMinFactor = normalizedMaxFactor.add(minusMinFactor);
    Factor invertMaxMinusMinFactor = maxMinusMinFactor.invert();
    return invertMaxMinusMinFactor;
}
Also used : ConstantFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.ConstantFactor) Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor) ConstantFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.ConstantFactor)

Example 23 with Factor

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

the class GradientAnytimeExactBP method getFactorAtRootPolytope.

private IntensionalConvexHullOfFactors getFactorAtRootPolytope() {
    Factor factorAtRoot = Factor.multiply(getBase().getFactorsAtRoot());
    IntensionalConvexHullOfFactors singletonConvexHullOfFactorAtRoot = new IntensionalConvexHullOfFactors(list(), factorAtRoot);
    return singletonConvexHullOfFactorAtRoot;
}
Also used : IntensionalConvexHullOfFactors(com.sri.ai.praise.core.representation.interfacebased.polytope.core.byexpressiveness.convexhull.IntensionalConvexHullOfFactors) ConstantFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.ConstantFactor) Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor)

Example 24 with Factor

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

the class AEBPModel method ExpandModel.

// I think we'll not use it TODO : see and maybe remove it
public void ExpandModel(Iterator<Factor> it) {
    // BFS, DFS,...
    if (it.hasNext()) {
        Factor factor = it.next();
        ExpandModel(factor);
    }
}
Also used : Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor)

Example 25 with Factor

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

the class EagerExactBPNodeEvaluator method computeProductOfFactorsAtRootAndIncomingMessages.

/**
 * Returns the product of given incoming messages and the factor at root, if there is any.
 * @param incomingMessages
 * @return
 */
private Factor computeProductOfFactorsAtRootAndIncomingMessages(List<? extends Factor> incomingMessages) {
    Iterator<Factor> allFactors = nestedIterator(getFactorsAtRoot.apply(), incomingMessages);
    Factor result = multiply(allFactors);
    return result;
}
Also used : Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor)

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