def test_factor(self): fn = lambda c: ord(c) - ord('a') dist = Distribution({'a': 1, 'b': 2}) dist.factor('a', 0.5) self.almostEqual(list(dist.as_numpy_array(fn)), [0.2, 0.8]) dist = Distribution({'a': 1, 'b': 2, 'c': 3}) dist.factor('b', 3) self.almostEqual(list(dist.as_numpy_array(fn)), [0.1, 0.6, 0.3])
def get_transition_mus_and_probs(self, mu, a): """Gets information about possible transitions for the action. This is the equivalent of self.mdp.get_transition_states_and_probs() for generalized states. So, it returns a list of (next_mu, prob) pairs, where next_mu must be a generalized state. """ s = self.extract_state_from_mu(mu) base_result = self.mdp.get_transition_states_and_probs(s, a) most_likely_state, _ = max(base_result, key=lambda tup: tup[1]) dist = Distribution(dict(base_result)) dist.factor(most_likely_state, self.calibration_factor) return list(dist.get_dict().items())