From 28bbb5f22c1d9b6507ff16661e9f0fbc6b99d156 Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Wed, 3 Jul 2024 02:58:28 +0000 Subject: [PATCH] bayes q2 --- tracking/factorOperations.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/tracking/factorOperations.py b/tracking/factorOperations.py index e96250b..e989bf9 100644 --- a/tracking/factorOperations.py +++ b/tracking/factorOperations.py @@ -102,7 +102,27 @@ def joinFactors(factors: List[Factor]): "*** YOUR CODE HERE ***" - raiseNotDefined() + factor_list = [item for item in factors] + conditioned_variables = [] + unconditioned_variables = [] + variablesDomainDict = factor_list[0].variableDomainsDict() + for factor in factor_list: + for var in factor.unconditionedVariables(): + if var not in unconditioned_variables: + unconditioned_variables.append(var) + if var in conditioned_variables: + conditioned_variables.remove(var) + for var in factor.conditionedVariables(): + if var not in conditioned_variables and var not in unconditioned_variables: + conditioned_variables.append(var) + joint_factor = Factor(unconditioned_variables, conditioned_variables, variablesDomainDict) + cases=joint_factor.getAllPossibleAssignmentDicts() + for case_ in cases: + prob = 1 + for factor in factor_list: + prob *= factor.getProbability(case_) + joint_factor.setProbability(case_, prob) + return joint_factor "*** END YOUR CODE HERE ***" ########### ########### ###########