diff --git a/abducer/abducer_base.py b/abducer/abducer_base.py index d0baf1f..e2072ec 100644 --- a/abducer/abducer_base.py +++ b/abducer/abducer_base.py @@ -106,21 +106,26 @@ class AbducerBase(abc.ABC): address_num = min(max_address_num, self.cache_min_address_num[(tuple(pred_res), key)] + require_more_address) if (tuple(pred_res), key, address_num) in self.cache_candidates: candidates = self.cache_candidates[(tuple(pred_res), key, address_num)] - return self.get_min_cost_candidate(pred_res, pred_res_prob, candidates) + if self.zoopt: + return candidates[0] + else: + return self.get_min_cost_candidate(pred_res, pred_res_prob, candidates) if self.zoopt: address_idx, address_num = self.zoopt_get_address_idx(pred_res, key, max_address_num) candidates = self.kb.address_by_idx(pred_res, key, address_idx) min_address_num = address_num + candidate = candidates[0] else: candidates, min_address_num, address_num = self.kb.abduce_candidates(pred_res, key, max_address_num, require_more_address) + candidate = self.get_min_cost_candidate(pred_res, pred_res_prob, candidates) if self.cache: self.cache_min_address_num[(tuple(pred_res), key)] = min_address_num self.cache_candidates[(tuple(pred_res), key, address_num)] = candidates - candidate = self.get_min_cost_candidate(pred_res, pred_res_prob, candidates) + return candidate @@ -138,7 +143,7 @@ if __name__ == '__main__': prob1 = [[0, 0.99, 0.01, 0, 0, 0, 0, 0, 0, 0], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]] prob2 = [[0, 0, 0.01, 0, 0, 0, 0, 0.99, 0, 0], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]] - kb = add_KB(GKB_flag = True) + kb = add_KB() abd = AbducerBase(kb, 'confidence') res = abd.abduce(([1, 1], prob1, 8), max_address_num = 2, require_more_address = 0) print(res) @@ -192,4 +197,3 @@ if __name__ == '__main__': print(res) print() -