From 6de3e08829ce1fcbe7c6aeefd82129c908458599 Mon Sep 17 00:00:00 2001 From: snsd0805 Date: Tue, 7 May 2024 18:55:41 +0800 Subject: [PATCH] feat: complete q4 --- inference.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/inference.py b/inference.py index ce48751..b4f5323 100644 --- a/inference.py +++ b/inference.py @@ -201,7 +201,22 @@ def inferenceByVariableEliminationWithCallTracking(callTrackingList=None): eliminationOrder = sorted(list(eliminationVariables)) "*** YOUR CODE HERE ***" - raiseNotDefined() + current_factors = bayesNet.getAllCPTsWithEvidence(evidenceDict) + print(joinFactorsByVariable) + + for eliminate_var in eliminationOrder: + unjoined_factors, joined_factor = joinFactorsByVariable(current_factors, eliminate_var) + current_factors = unjoined_factors + + # if the joined_factor's unconditioned variables not only have the eliminate_variable. + # we can eliminate this. + if len(joined_factor.unconditionedVariables()) > 1: + current_factors.append(eliminate(joined_factor, eliminate_var)) + + new_factor = joinFactors(current_factors) + new_factor = normalize(new_factor) + return new_factor + "*** END YOUR CODE HERE ***"