diff --git a/tracking/factorOperations.py b/tracking/factorOperations.py index e989bf9..e5a44ff 100644 --- a/tracking/factorOperations.py +++ b/tracking/factorOperations.py @@ -173,7 +173,23 @@ def eliminateWithCallTracking(callTrackingList=None): "unconditionedVariables: " + str(factor.unconditionedVariables())) "*** YOUR CODE HERE ***" - raiseNotDefined() + # print("factor= ", factor) + # print("eliminationVariable= ", eliminationVariable) + variableDomainsDict=factor.variableDomainsDict() + unconditional_variables = [var for var in factor.unconditionedVariables() if var != eliminationVariable] + conditioned_variables = factor.conditionedVariables() + new_factor = Factor(unconditional_variables, conditioned_variables, variableDomainsDict) + cases = new_factor.getAllPossibleAssignmentDicts() + for case_ in cases: + prob = 0 + # print("initially, case_= ", case_) + for value in variableDomainsDict[eliminationVariable]: + case_[eliminationVariable] = value + # print("case_= ", case_) + prob += factor.getProbability(case_) + new_factor.setProbability(case_, prob) + # print("new_factor= ", new_factor, " and its cases= ", new_factor.getAllPossibleAssignmentDicts()) + return new_factor "*** END YOUR CODE HERE ***" return eliminate