Search in sources :

Example 26 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 function.

@Override
public Factor function(List<Factor> incomingMessages) {
    Factor product = computeProductOfFactorsAtRootAndIncomingMessages(incomingMessages);
    List<? extends Variable> variablesToBeSummedOut = determineVariablesToBeSummedOut.apply(product.getVariables());
    Factor result = sumOutWithBookkeeping.apply(variablesToBeSummedOut, product);
    result.setExplanation(makeExplanation(result, incomingMessages));
    return result;
}
Also used : Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor)

Example 27 with Factor

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

the class PerformanceTest method singleRunForUnaryFactorOperation.

private void singleRunForUnaryFactorOperation() {
    println("\n");
    println("==================================================================================================");
    println("||                                  Testing UNARY OPERATION                                     ||");
    println("==================================================================================================");
    println("  Test Parameters:");
    println("      number of variables = " + numberOfVariablesPerFactor);
    println("      variable cardinality = " + cardinalityOfVariables);
    println("==================================================================================================");
    SpecsForRandomTableFactorGeneration factorGenerationSpecs = new SpecsForRandomTableFactorGeneration(GLOBAL_TABLE_FACTOR_SPECS);
    List<Factor> factors = constructEquivalentRandomFactorsRepresentedInDifferentWays(factorGenerationSpecs);
    ArrayList<FactorOperationResultAndTimes> operationResultsAndTimes = recordTimesForFactorOperation(unaryFactorOperation, factors);
    printOperationResults(factors, operationResultsAndTimes);
    compareWithSimulatedContextSplittingTimesIfNeeded(operationResultsAndTimes);
    println("==================================================================================================");
    println();
}
Also used : SpecsForRandomTableFactorGeneration(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.helper.SpecsForRandomTableFactorGeneration) ExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.api.ExpressionFactor) Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor) TableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableFactor) RandomTableFactorMaker.makeRandomTableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.helper.RandomTableFactorMaker.makeRandomTableFactor)

Example 28 with Factor

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

the class PerformanceTest method sumOutLastVariable.

private static Factor sumOutLastVariable(Factor factor) {
    List<? extends Variable> factorVariables = factor.getVariables();
    int indexOfLastVariable = factorVariables.size() - 1;
    List<Variable> variablesToSumOut = new ArrayList<>();
    if (factorVariables.size() > 0) {
        variablesToSumOut.add(factorVariables.get(indexOfLastVariable));
    }
    Factor result = factor.sumOut(variablesToSumOut);
    return result;
}
Also used : Variable(com.sri.ai.praise.core.representation.interfacebased.factor.api.Variable) ExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.api.ExpressionFactor) Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor) TableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableFactor) RandomTableFactorMaker.makeRandomTableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.helper.RandomTableFactorMaker.makeRandomTableFactor) ArrayList(java.util.ArrayList) Util.print(com.sri.ai.util.Util.print)

Example 29 with Factor

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

the class PerformanceTest method constructEquivalentRandomFactorsRepresentedInDifferentWays.

// / FACTOR CONSTRUCTION METHODS ////////////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////////////////////////////////////////
private List<Factor> constructEquivalentRandomFactorsRepresentedInDifferentWays(SpecsForRandomTableFactorGeneration factorSpecs) {
    TableFactor tableFactor = makeRandomTableFactor(factorSpecs, FROM_VARIABLE_INDEX_TO_NAME, RANDOM);
    ArrayList<Factor> factors = new ArrayList<>(NUMBER_OF_TESTED_FACTORS);
    if (includeTableFactor) {
        addTableFactorToListOfFactors(tableFactor, factors);
    }
    if (includeTreeBasedExpressionFactors) {
        addTreeBasedExpressionFactorsToListOfFactors(tableFactor, factors);
    }
    if (includeLinearTableExpressionFactors) {
        addLinearTableExpressionFactorsToListOfFactors(tableFactor, factors);
    }
    return factors;
}
Also used : TableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableFactor) RandomTableFactorMaker.makeRandomTableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.helper.RandomTableFactorMaker.makeRandomTableFactor) ExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.api.ExpressionFactor) Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor) TableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableFactor) RandomTableFactorMaker.makeRandomTableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.helper.RandomTableFactorMaker.makeRandomTableFactor) ArrayList(java.util.ArrayList)

Example 30 with Factor

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

the class PerformanceTest method sumOutLastHalfOfVariables.

private static Factor sumOutLastHalfOfVariables(Factor factor) {
    List<? extends Variable> variablesToSumOut = getLastHalfSubList(factor.getVariables());
    Factor result = factor.sumOut(variablesToSumOut);
    return result;
}
Also used : ExpressionFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.expression.api.ExpressionFactor) Factor(com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor) TableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.TableFactor) RandomTableFactorMaker.makeRandomTableFactor(com.sri.ai.praise.core.representation.interfacebased.factor.core.table.helper.RandomTableFactorMaker.makeRandomTableFactor)

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