Ejemplo n.º 1
0
 def test_BA_iters_fine(self):
     task = StoppingTask(
         D=10,
         nGEN=1000,
         optType=OptimizationType.MINIMIZATION,
         benchmark=Sphere())
     algo = BatAlgorithm(NP=25)
     algo.runTask(task)
     iters = task.iters()
     self.assertEqual(1000, iters)
Ejemplo n.º 2
0
 def test_DE_iters_fine(self):
     task = StoppingTask(
         D=10,
         nGEN=1000,
         optType=OptimizationType.MINIMIZATION,
         benchmark=Sphere())
     algo = DifferentialEvolution(NP=40, CR=0.9, F=0.5)
     algo.runTask(task)
     iters = task.iters()
     self.assertEqual(1000, iters)
Ejemplo n.º 3
0
class StoppingTaskBaseTestCase(TestCase):
	def setUp(self):
		self.D = 6
		self.Lower, self.Upper = [2, 1, 1], [10, 10, 2]
		self.task = StoppingTask(Lower=self.Lower, Upper=self.Upper, D=self.D)

	def test_dim_ok(self):
		self.assertEqual(self.D, self.task.D)
		self.assertEqual(self.D, self.task.dim())

	def test_lower(self):
		self.assertTrue(array_equal(fullArray(self.Lower, self.D), self.task.Lower))
		self.assertTrue(array_equal(fullArray(self.Lower, self.D), self.task.bcLower()))

	def test_upper(self):
		self.assertTrue(array_equal(fullArray(self.Upper, self.D), self.task.Upper))
		self.assertTrue(array_equal(fullArray(self.Upper, self.D), self.task.bcUpper()))

	def test_range(self):
		self.assertTrue(array_equal(fullArray(self.Upper, self.D) - fullArray(self.Lower, self.D), self.task.bRange))
		self.assertTrue(array_equal(fullArray(self.Upper, self.D) - fullArray(self.Lower, self.D), self.task.bcRange()))

	def test_ngens(self):
		self.assertEqual(inf, self.task.nGEN)

	def test_nfess(self):
		self.assertEqual(inf, self.task.nFES)

	def test_stop_cond(self):
		self.assertFalse(self.task.stopCond())

	def test_stop_condi(self):
		self.assertFalse(self.task.stopCondI())

	def test_eval(self):
		self.assertRaises(AttributeError, lambda: self.task.eval([]))

	def test_evals(self):
		self.assertEqual(0, self.task.evals())

	def test_iters(self):
		self.assertEqual(0, self.task.iters())

	def test_next_iter(self):
		self.assertEqual(None, self.task.nextIter())

	def test_is_feasible(self):
		self.assertFalse(self.task.isFeasible(fullArray([1, 2, 3], self.D)))
Ejemplo n.º 4
0
class ScaledTaskTestCase(TestCase):
	def setUp(self):
		self.D, self.nFES, self.nGEN = 10, 10, 10
		self.t = StoppingTask(D=self.D, nFES=self.nFES, nGEN=self.nGEN, benchmark=MyBenchmark())
		d1, d2 = self.t.bcLower() + self.t.bcRange() / 2, self.t.bcUpper() - self.t.bcRange() * 0.2
		L, U = d1, d1 + d2
		self.tc = ScaledTask(self.t, L, U)

	def test_isFeasible_fine(self):
		x = full(self.D, 10)
		self.assertTrue(self.t.isFeasible(x))
		self.assertFalse(self.tc.isFeasible(x))
		x = full(self.D, -10)
		self.assertTrue(self.t.isFeasible(x))
		self.assertFalse(self.tc.isFeasible(x))
		x = rnd.uniform(0, 5, self.D)
		self.assertTrue(self.t.isFeasible(x))
		self.assertTrue(self.tc.isFeasible(x))
		x = full(self.D, -20)
		self.assertFalse(self.t.isFeasible(x))
		self.assertFalse(self.tc.isFeasible(x))
		x = full(self.D, 20)
		self.assertFalse(self.t.isFeasible(x))
		self.assertFalse(self.tc.isFeasible(x))

	def test_nextIter_fine(self):
		for i in range(self.nGEN):
			self.assertFalse(self.t.stopCond())
			self.assertFalse(self.tc.stopCond())
			self.t.nextIter()
		self.assertTrue(self.t.stopCond())
		self.assertTrue(self.tc.stopCond())

	def test_nextIter_two_fine(self):
		for i in range(int(self.nGEN / 2)):
			self.assertFalse(self.t.stopCond())
			self.assertFalse(self.tc.stopCond())
			self.tc.nextIter()
			self.t.nextIter()
		self.assertTrue(self.t.stopCond())
		self.assertTrue(self.tc.stopCond())

	def test_stopCondI(self):
		for i in range(int(self.nGEN / 2)):
			self.assertFalse(self.t.stopCondI())
			self.assertFalse(self.tc.stopCondI())
		self.assertTrue(self.t.stopCondI())
		self.assertTrue(self.tc.stopCondI())

	def test_eval_fine(self):
		x = full(self.D, 0.0)
		for i in range(int(self.nFES / 2)):
			self.assertAlmostEqual(self.t.eval(x), 0.0, msg='Error at %s iteration!!!' % (i))
			self.assertAlmostEqual(self.tc.eval(x), 0.0, msg='Error at %s iteration!!!' % (i))
		self.assertEqual(inf, self.t.eval(x))
		self.assertEqual(inf, self.tc.eval(x))

	def test_eval_over_nFES_fine(self):
		x = full(self.D, 0.0)
		for i in range(int(self.nFES / 2)):
			self.t.eval(x)
			self.tc.eval(x)
		self.assertEqual(inf, self.t.eval(x))
		self.assertEqual(inf, self.tc.eval(x))

	def test_eval_over_nGEN_fine(self):
		x = full(self.D, 0.0)
		for i in range(int(self.nGEN / 2)):
			self.t.nextIter()
			self.tc.nextIter()
		self.assertEqual(inf, self.t.eval(x))
		self.assertEqual(inf, self.tc.eval(x))

	def test_nFES_count_fine(self):
		x = full(self.D, 0.0)
		for i in range(self.nFES // 2):
			try: self.t.eval(x)
			except Exception: pass
			self.assertEqual(self.t.evals(), 2 * i + 1, 'Error at %s. evaluation' % (i + 1))
			try: self.tc.eval(x)
			except Exception: pass
			self.assertEqual(self.tc.evals(), 2 * i + 2, 'Error at %s. evaluation' % (i + 1))

	def test_nGEN_count_fine(self):
		x = full(self.D, 0.0)
		for i in range(int((self.nFES - 1 if self.nFES % 2 > 0 else self.nFES - 2) / 2)):
			self.t.nextIter()
			self.assertEqual(self.t.iters(), 2 * i + 1, 'Error at %s. iteration' % (i + 1))
			self.tc.nextIter()
			self.assertEqual(self.tc.iters(), 2 * i + 2, 'Error at %s. iteration' % (i + 1))

	def test_stopCond_evals_fine(self):
		x = full(self.D, 0.0)
		for i in range(int((self.nFES - 1 if self.nFES % 2 > 0 else self.nFES - 2) / 2)):
			self.assertFalse(self.t.stopCond())
			self.t.eval(x)
			self.assertFalse(self.tc.stopCond())
			self.tc.eval(x)
		self.assertFalse(self.t.stopCond())
		self.t.eval(x)
		self.assertFalse(self.tc.stopCond())
		self.tc.eval(x)
		self.assertTrue(self.t.stopCond())
		self.assertTrue(self.tc.stopCond())

	def test_stopCond_iters_fine(self):
		x = full(self.D, 0.0)
		for i in range(int((self.nGEN - 1 if self.nGEN % 2 > 0 else self.nGEN - 2) / 2)):
			self.assertFalse(self.t.stopCond())
			self.t.nextIter()
			self.assertFalse(self.tc.stopCond())
			self.tc.nextIter()
		self.assertFalse(self.t.stopCond())
		self.t.nextIter()
		self.assertFalse(self.tc.stopCond())
		self.tc.nextIter()
		self.assertTrue(self.t.stopCond())
		self.assertTrue(self.tc.stopCond())
Ejemplo n.º 5
0
class StoppingTaskBaseTestCase(TestCase):
	r"""Test case for testing `Task`, `StoppingTask` and `CountingTask` classes.

	Date:
		April 2019

	Author:
		Klemen Berkovič

	See Also:
		* :class:`NiaPy.util.Task`
		* :class:`NiaPy.util.CountingTask`
		* :class:`NiaPy.util.StoppingTask`
	"""
	def setUp(self):
		self.D = 6
		self.Lower, self.Upper = [2, 1, 1], [10, 10, 2]
		self.task = StoppingTask(Lower=self.Lower, Upper=self.Upper, D=self.D)

	def test_dim_ok(self):
		self.assertEqual(self.D, self.task.D)
		self.assertEqual(self.D, self.task.dim())

	def test_lower(self):
		self.assertTrue(array_equal(fullArray(self.Lower, self.D), self.task.Lower))
		self.assertTrue(array_equal(fullArray(self.Lower, self.D), self.task.bcLower()))

	def test_upper(self):
		self.assertTrue(array_equal(fullArray(self.Upper, self.D), self.task.Upper))
		self.assertTrue(array_equal(fullArray(self.Upper, self.D), self.task.bcUpper()))

	def test_range(self):
		self.assertTrue(array_equal(fullArray(self.Upper, self.D) - fullArray(self.Lower, self.D), self.task.bRange))
		self.assertTrue(array_equal(fullArray(self.Upper, self.D) - fullArray(self.Lower, self.D), self.task.bcRange()))

	def test_ngens(self):
		self.assertEqual(inf, self.task.nGEN)

	def test_nfess(self):
		self.assertEqual(inf, self.task.nFES)

	def test_stop_cond(self):
		self.assertFalse(self.task.stopCond())

	def test_stop_condi(self):
		self.assertFalse(self.task.stopCondI())

	def test_eval(self):
		self.assertRaises(AttributeError, lambda: self.task.eval([]))

	def test_evals(self):
		self.assertEqual(0, self.task.evals())

	def test_iters(self):
		self.assertEqual(0, self.task.iters())

	def test_next_iter(self):
		self.assertEqual(None, self.task.nextIter())

	def test_is_feasible(self):
		self.assertFalse(self.task.isFeasible(fullArray([1, 2, 3], self.D)))