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;
}
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();
}
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;
}
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;
}
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;
}
Aggregations