def set_parameters(self, **kwargs): r"""Set the algorithm parameters/arguments. See Also * :func:`niapy.algorithms.Algorithm.set_parameters` """ kwargs.pop('population_size', None) Algorithm.set_parameters(self, population_size=1, **kwargs) self.candidates = None
def set_parameters(self, population_size=20, alpha=1, beta_min=1, gamma=2, **kwargs): r"""Set the parameters of the algorithm. Args: population_size (Optional[int]): Population size. alpha (Optional[float]): Step size. beta_min (Optional[float]): Minimum value of beta. gamma (Optional[float]): Absorption coefficient. kwargs (Dict[str, Any]): Additional arguments. See Also: * :func:`niapy.algorithms.Algorithm.set_parameters` """ Algorithm.set_parameters(self, population_size=population_size, **kwargs) self.alpha = alpha self.beta_min = beta_min self.gamma = gamma
class AlgorithmBaseTestCase(TestCase): r"""Test case for testing Algorithm class. Date: April 2019 Author: Klemen Berkovič Attributes: seed (int): Starting seed of random generator. rng (numpy.random.Generator): Random generator. a (Algorithm): Algorithm to use for testing. See Also: * :class:`niapy.algorithms.Individual` """ def setUp(self): self.seed = 1 self.rng = default_rng(self.seed) self.a = Algorithm(seed=self.seed) def test_algorithm_info(self): r"""Check if method works fine.""" i = Algorithm.info() self.assertIsNotNone(i) def test_algorithm_getParameters(self): r"""Check if method works fine.""" algo = Algorithm() params = algo.get_parameters() self.assertIsNotNone(params) def test_init_population_numpy(self): r"""Test if custom generation initialization works ok.""" a = Algorithm(population_size=10, initialization_function=init_pop_numpy) t = Task(problem=MyProblem(dimension=20)) self.assertTrue(np.array_equal(np.zeros((10, t.dimension)), a.init_population(t)[0])) def test_init_population_individual(self): r"""Test if custom generation initialization works ok.""" a = Algorithm(population_size=10, initialization_function=init_pop_individual, individual_type=Individual) t = Task(problem=MyProblem(dimension=20)) i = Individual(x=np.zeros(t.dimension), task=t) pop, fpop, d = a.init_population(t) for e in pop: self.assertEqual(i, e) def test_set_parameters(self): self.a.set_parameters(t=None, a=20) self.assertRaises(AttributeError, lambda: self.assertEqual(self.a.a, None)) def test_integers(self): o = self.a.integers(low=10, high=20, size=[10, 10]) self.assertEqual(o.shape, (10, 10)) self.assertTrue(np.array_equal(self.rng.integers(10, 20, (10, 10)), o)) o = self.a.integers(low=10, high=20, size=(10, 5)) self.assertEqual(o.shape, (10, 5)) self.assertTrue(np.array_equal(self.rng.integers(10, 20, (10, 5)), o)) o = self.a.integers(low=10, high=20, size=10) self.assertEqual(o.shape, (10,)) self.assertTrue(np.array_equal(self.rng.integers(10, 20, 10), o)) def test_standard_normal(self): a = self.a.standard_normal([1, 2]) self.assertEqual(a.shape, (1, 2)) self.assertTrue(np.array_equal(self.rng.standard_normal((1, 2)), a)) a = self.a.standard_normal(1) self.assertEqual(len(a), 1) self.assertTrue(np.array_equal(self.rng.standard_normal(1), a)) a = self.a.standard_normal(2) self.assertEqual(len(a), 2) self.assertTrue(np.array_equal(self.rng.standard_normal(2), a)) a = self.a.standard_normal() self.assertIsInstance(a, float) self.assertTrue(np.array_equal(self.rng.standard_normal(), a)) def test_uniform(self): a = self.a.uniform(-10, 10, [10, 10]) self.assertEqual(a.shape, (10, 10)) self.assertTrue(np.array_equal(self.rng.uniform(-10, 10, (10, 10)), a)) a = self.a.uniform(4, 10, (4, 10)) self.assertEqual(len(a), 4) self.assertEqual(len(a[0]), 10) self.assertTrue(np.array_equal(self.rng.uniform(4, 10, (4, 10)), a)) a = self.a.uniform(1, 4, 2) self.assertEqual(len(a), 2) self.assertTrue(np.array_equal(self.rng.uniform(1, 4, 2), a)) a = self.a.uniform(10, 100) self.assertIsInstance(a, float) self.assertEqual(self.rng.uniform(10, 100), a) def test_normal(self): a = self.a.normal(-10, 10, [10, 10]) self.assertEqual(a.shape, (10, 10)) self.assertTrue(np.array_equal(self.rng.normal(-10, 10, (10, 10)), a)) a = self.a.normal(4, 10, (4, 10)) self.assertEqual(len(a), 4) self.assertEqual(len(a[0]), 10) self.assertTrue(np.array_equal(self.rng.normal(4, 10, (4, 10)), a)) a = self.a.normal(1, 4, 2) self.assertEqual(len(a), 2) self.assertTrue(np.array_equal(self.rng.normal(1, 4, 2), a)) a = self.a.normal(10, 100) self.assertIsInstance(a, float) self.assertEqual(self.rng.normal(10, 100), a)