Added max_window_size to init_request_windows

This commit is contained in:
Anton Beloglazov 2012-10-20 17:10:20 +11:00
parent b1e58b842e
commit 21e60d6299
3 changed files with 23 additions and 11 deletions

View File

@ -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(

View File

@ -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

View File

@ -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,