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