def test_convergence_and_exploitation_intersection(self): # y = y <=> -5f + 1.5 = 10f - 2 <=> 15f = 3.5 <=> f = 3.5/15 = 0.7/3 evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=0.7 / 3) self.assertTrue( evolutionary_state == EvolutionaryStates.CONVERGENCE or evolutionary_state == EvolutionaryStates.EXPLOITATION)
def test_exploitation_and_exploration_intersection(self): # y = y <=> -5f - 2 = -5f + 3 <=> 10f = 5 <=> f = 1/2 = 0.5 evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=0.5) self.assertTrue( evolutionary_state == EvolutionaryStates.EXPLOITATION or evolutionary_state == EvolutionaryStates.EXPLORATION)
def update_pso_inertia_weight_and_coefficients(): if self.__adaptivePSO: f_evol = self.__estimate_evolutionary_state() evolutionary_state = classify_evolutionary_state(f_evol) self.__determine_accelaration_coefficients(evolutionary_state) self.__apply_eliticism_learning_strategy(evolutionary_state) self.__adapt_inertia_factor(f_evol) else: # Follow classic PSO learning strategy: decrease inertia weight linearly. self.w = w_max - ( (w_max - w_min) / self.__max_iterations) * self.current_iteration
def test_exploitation_and_exploration_common_area_exploitation_wins(self): evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=0.45) self.assertEqual(evolutionary_state, EvolutionaryStates.EXPLOITATION)
def test_convergence_and_exploitation_common_area_convergence_wins(self): evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=0.21) self.assertTrue( evolutionary_state == EvolutionaryStates.CONVERGENCE or evolutionary_state == EvolutionaryStates.EXPLOITATION)
def test_convergence_state_normal_case(self): evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=0.1) self.assertEqual(evolutionary_state, EvolutionaryStates.CONVERGENCE)
def test_jumpout_normal_case(self): evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=0.9) self.assertEqual(evolutionary_state, EvolutionaryStates.JUMP_OUT)
def test_exploration_and_jumpout_intersection(self): # y = y <=> 5f - 3.5 = -10f + 8 <=> 15f = 11.5 <=> f = 11.5/15 = 2.3/3 evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=2.3 / 3) self.assertTrue(evolutionary_state == EvolutionaryStates.EXPLORATION or evolutionary_state == EvolutionaryStates.JUMP_OUT)
def test_exploration_normal_case(self): evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=0.65) self.assertEqual(evolutionary_state, EvolutionaryStates.EXPLORATION)
def test_exploration_vs_jump_out_previous_jump_out(self): clasfation.current_state = EvolutionaryStates.JUMP_OUT evolutionary_state = clasfation.classify_evolutionary_state(0.75) self.assertEqual(evolutionary_state, EvolutionaryStates.JUMP_OUT)
def test_exploration_vs_jump_out_previous_exploration(self): clasfation.current_state = EvolutionaryStates.EXPLORATION evolutionary_state = clasfation.classify_evolutionary_state(0.75) self.assertEqual(evolutionary_state, EvolutionaryStates.EXPLORATION)
def test_convergence_state_just_outside_of_left_boundary(self): with self.assertRaises(ValueError): clasfation.classify_evolutionary_state( evolutionary_factor=-10**(-9))
def test_jumpout_state_outside_of_right_boundary(self): with self.assertRaises(ValueError): clasfation.classify_evolutionary_state(evolutionary_factor=1.5)
def test_jumpout_state_on_right_boundary(self): evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=1) self.assertEqual(evolutionary_state, EvolutionaryStates.JUMP_OUT)
def test_jumpout_state_near_left_boundary(self): evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=1 - 10**(-9)) self.assertEqual(evolutionary_state, EvolutionaryStates.JUMP_OUT)
def test_exploitation_and_exploration_common_area_exploration_wins(self): evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=0.55) self.assertTrue( evolutionary_state == EvolutionaryStates.EXPLORATION or evolutionary_state == EvolutionaryStates.EXPLOITATION)
def test_exploitation_vs_convergence_previous_convergence(self): clasfation.current_state = EvolutionaryStates.CONVERGENCE evolutionary_state = clasfation.classify_evolutionary_state(0.25) self.assertEqual(evolutionary_state, EvolutionaryStates.CONVERGENCE)
def test_exploration_and_jumpout_common_area_exploration_wins(self): evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=0.72) self.assertTrue(evolutionary_state == EvolutionaryStates.EXPLORATION or evolutionary_state == EvolutionaryStates.JUMP_OUT)
def test_exploitation_vs_convergence_previous_jump_out(self): clasfation.current_state = EvolutionaryStates.JUMP_OUT evolutionary_state = clasfation.classify_evolutionary_state(0.25) self.assertEqual(evolutionary_state, EvolutionaryStates.EXPLOITATION)
def test_convergence_state_near_left_boundary(self): evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=10**(-9)) self.assertEqual(evolutionary_state, EvolutionaryStates.CONVERGENCE)
def test_exploration_and_jumpout_common_area_jumpout_wins(self): evolutionary_state = clasfation.classify_evolutionary_state( evolutionary_factor=0.78) self.assertEqual(evolutionary_state, EvolutionaryStates.JUMP_OUT)