use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.
the class AbstractExactBPNode method sumOutWithBookkeeping.
/**
* Returns the result of eliminating given indices from given factor, plus whatever bookkeeping such as printing information or recording size of computation
* (since this is one of the most expensive steps).
* @param variablesToBeSummedOut
* @param factor
* @return
*/
@Override
public Factor sumOutWithBookkeeping(List<? extends Variable> variablesToBeSummedOut, Factor factor) {
Factor result = factor.sumOut(variablesToBeSummedOut);
printTracingInformation(factor, variablesToBeSummedOut, result);
return result;
}
use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.
the class GradientAnytimeExactBP method createNormalizedMinFactorWithoutOneSub.
private Factor createNormalizedMinFactorWithoutOneSub(Anytime<Factor> sub, Collection<? extends Variable> rootIndices) {
Polytope rootPolytopeWithoutOneSub = productWithoutOneSub(sub);
IntensionalConvexHullOfFactors rootConvexHullWithoutOneSub = (IntensionalConvexHullOfFactors) rootPolytopeWithoutOneSub;
Factor rootFactorWithoutOneSub = rootConvexHullWithoutOneSub.getFactor();
Factor minRootFactorWithoutOneSub = rootFactorWithoutOneSub.min(rootIndices);
Factor normalizedMinFactorWithoutOneSub = minRootFactorWithoutOneSub.normalize();
return normalizedMinFactorWithoutOneSub;
}
use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.
the class GradientAnytimeExactBP method createNormalizedMaxFactorWithoutOneSub.
private Factor createNormalizedMaxFactorWithoutOneSub(Anytime<Factor> sub, Collection<? extends Variable> rootIndices) {
Polytope rootPolytopeWithoutOneSub = productWithoutOneSub(sub);
IntensionalConvexHullOfFactors rootConvexHullWithoutOneSub = (IntensionalConvexHullOfFactors) rootPolytopeWithoutOneSub;
Factor rootFactorWithoutOneSub = rootConvexHullWithoutOneSub.getFactor();
Factor maxRootFactorWithoutOneSub = rootFactorWithoutOneSub.max(rootIndices);
Factor normalizedMaxFactorWithoutOneSub = maxRootFactorWithoutOneSub.normalize();
return normalizedMaxFactorWithoutOneSub;
}
use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.
the class GradientAnytimeExactBP method createNormalizedMinFactor.
private Factor createNormalizedMinFactor(Collection<? extends Variable> rootIndices) {
Approximation<Factor> rootApproximation = getCurrentApproximation();
IntensionalConvexHullOfFactors rootConvexHull = transformApproximationToConvexHullOrThrowsErrorIfNotPossible(rootApproximation);
Factor rootFactor = rootConvexHull.getFactor();
Factor minFactor = rootFactor.min(rootIndices);
Factor normalizedMinFactor = minFactor.normalize();
return normalizedMinFactor;
}
use of com.sri.ai.praise.core.representation.interfacebased.factor.api.Factor in project aic-praise by aic-sri-international.
the class GradientAnytimeExactBP method getAbsoluteVolumeVariationWithRespectTo.
@Override
public Double getAbsoluteVolumeVariationWithRespectTo(Anytime<Factor> sub) {
if (sub.equals(null)) {
throw new Error("Sub does not exist, can't compute volume variation");
}
Approximation<Factor> subApproximation = sub.getCurrentApproximation();
AtomicPolytope subAtomicPolytope = transformApproximationToAtomicPolytopeOrThrowsErrorIfNotPossible(subApproximation);
Set<? extends Variable> subAtomicPolytopeIndices = getIndices(subAtomicPolytope);
if (evenOneSubWithTotalIgnoranceRendersApproximationEqualToTotalIgnorance()) {
// root is a variable
return getAbsoluteVolumeVariationFromFactorToVariableWithRespectTo(sub, subAtomicPolytopeIndices);
}
return getAbsoluteVolumeVariationFromVariableToFactorWithRespectTo(sub, subAtomicPolytopeIndices);
}
Aggregations