diff --git a/neat/locals/overload/mhod/core.py b/neat/locals/overload/mhod/core.py index be0e2c7..734f7be 100644 --- a/neat/locals/overload/mhod/core.py +++ b/neat/locals/overload/mhod/core.py @@ -74,7 +74,7 @@ def init_state(window_sizes, number_of_states): return { 'previous_state': 0, 'request_windows': estimation.init_request_windows( - number_of_states), + number_of_states, max(window_sizes)), 'estimate_windows': estimation.init_deque_structure( window_sizes, number_of_states), 'variances': estimation.init_variances( @@ -116,7 +116,6 @@ def mhod(state_config, otf, window_sizes, bruteforce_step, learning_steps, :rtype: tuple(dict, bool) """ total_time = len(utilization) - max_window_size = max(window_sizes) state_vector = build_state_vector(state_config, utilization) current_state = get_current_state(state_vector) selected_windows = estimation.select_window( @@ -129,7 +128,6 @@ def mhod(state_config, otf, window_sizes, bruteforce_step, learning_steps, state['request_windows'] = estimation.update_request_windows( state['request_windows'], - max_window_size, state['previous_state'], state) state['estimate_windows'] = estimation.update_estimate_windows( diff --git a/neat/locals/overload/mhod/multisize_estimation.py b/neat/locals/overload/mhod/multisize_estimation.py index ef17155..57b7887 100644 --- a/neat/locals/overload/mhod/multisize_estimation.py +++ b/neat/locals/overload/mhod/multisize_estimation.py @@ -256,16 +256,19 @@ def select_best_estimates(estimate_windows, selected_windows): @contract -def init_request_windows(number_of_states): +def init_request_windows(number_of_states, max_window_size): """ Initialize a request window data structure. :param number_of_states: The number of states. :type number_of_states: int,>0 + :param max_window_size: The max size of the request windows. + :type max_window_size: int,>0 + :return: The initialized request windows data structure. :rtype: list(deque) """ - return number_of_states * [deque()] + return number_of_states * [deque([], max_window_size)] @contract diff --git a/tests/locals/overload/mhod/test_multisize_estimation.py b/tests/locals/overload/mhod/test_multisize_estimation.py index 0a10231..6808308 100644 --- a/tests/locals/overload/mhod/test_multisize_estimation.py +++ b/tests/locals/overload/mhod/test_multisize_estimation.py @@ -740,12 +740,23 @@ class Multisize(TestCase): [0.0, 0.0]]) def test_init_request_windows(self): - self.assertEqual(m.init_request_windows(1), [deque()]) - self.assertEqual(m.init_request_windows(2), [deque(), - deque()]) - self.assertEqual(m.init_request_windows(3), [deque(), - deque(), - deque()]) + structure = m.init_request_windows(1, 4) + self.assertEqual(structure, [deque()]) + self.assertEqual(deque_maxlen(structure[0]), 4) + + structure = m.init_request_windows(2, 4) + self.assertEqual(structure, [deque(), + deque()]) + self.assertEqual(deque_maxlen(structure[0]), 4) + self.assertEqual(deque_maxlen(structure[1]), 4) + + structure = m.init_request_windows(3, 4) + self.assertEqual(structure, [deque(), + deque(), + deque()]) + self.assertEqual(deque_maxlen(structure[0]), 4) + self.assertEqual(deque_maxlen(structure[1]), 4) + self.assertEqual(deque_maxlen(structure[2]), 4) def test_init_variances(self): self.assertEqual(m.init_variances([2, 4], 1), [[{2: 1.0,