File: test_termination_criterion.py

package info (click to toggle)
python-cmaes 0.11.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 408 kB
  • sloc: python: 3,115; sh: 88; makefile: 4
file content (26 lines) | stat: -rw-r--r-- 906 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import numpy as np

from unittest import TestCase
from cmaes import CMA


class TestTerminationCriterion(TestCase):
    def test_stop_if_objective_values_are_not_changed(self):
        optimizer = CMA(mean=np.zeros(2), sigma=1.3)
        popsize = optimizer.population_size
        rng = np.random.RandomState(seed=1)

        for i in range(optimizer._funhist_term + 1):
            self.assertFalse(optimizer.should_stop())
            optimizer.tell([(rng.randn(2), 0.01) for _ in range(popsize)])

        self.assertTrue(optimizer.should_stop())

    def test_stop_if_detect_divergent_behavior(self):
        optimizer = CMA(mean=np.zeros(2), sigma=1e-4)
        popsize = optimizer.population_size
        nd_rng = np.random.RandomState(1)

        solutions = [(100 * nd_rng.randn(2), 0.01) for _ in range(popsize)]
        optimizer.tell(solutions)
        self.assertTrue(optimizer.should_stop())