Exemple #1
0
def test_no_bounds():
    problem = get_problem("sphere", n_var=2)
    problem.xl = None
    problem.xu = None
    method = NelderMead(x0=np.array([1, 1]), max_restarts=0)
    minimize(problem, method, verbose=False)
    assert True
Exemple #2
0
def test_against_scipy():
    problem = get_problem("rosenbrock")
    problem.xl = None
    problem.xu = None
    x0 = np.array([0.5, 0.5])

    hist_scipy = []

    def fun(x):
        hist_scipy.append(x)
        return problem.evaluate(x)

    scipy_minimize(fun, x0, method='Nelder-Mead')
    hist_scipy = np.array(hist_scipy)

    hist = []

    def callback(x, _):
        if x.shape == 2:
            hist.extend(x)
        else:
            hist.append(x)

    problem.callback = callback
    minimize(
        problem,
        NelderMead(x0=x0,
                   max_restarts=0,
                   termination=get_termination("n_eval", len(hist_scipy))))
    hist = np.row_stack(hist)[:len(hist_scipy)]

    np.testing.assert_allclose(hist, hist_scipy, rtol=1e-04)
def test_sphere_no_bounds():
    problem = SphereNoBounds()
    x0 = np.random.random(problem.n_var)

    for algorithm in [NelderMead(x0=x0), PatternSearch(x0=x0)]:
        f, f_opt = run(problem, algorithm)
        np.testing.assert_almost_equal(f, f_opt, decimal=5)
        print(problem.__class__.__name__, algorithm.__class__.__name__, "Yes")
 def test_nelder_mead(self):
     moo_algorithm = NelderMead(max_restarts=1)
     self.moo(moo_algorithm)
Exemple #5
0
def test_with_bounds_with_restart():
    problem = get_problem("sphere", n_var=2)
    method = NelderMead(x0=np.array([1, 1]), max_restarts=2)
    minimize(problem, method, verbose=False)
Exemple #6
0
def test_with_bounds_no_initial_point():
    problem = get_problem("sphere", n_var=2)
    method = NelderMead(max_restarts=0)
    minimize(problem, method, verbose=False)
def test_sphere_with_constraints():
    problem = SphereWithConstraints()
    for algorithm in [GA(), NelderMead(), PatternSearch()]:
        f, f_opt = run(problem, algorithm)
        np.testing.assert_almost_equal(f, f_opt, decimal=5)
        print(problem.__class__.__name__, algorithm.__class__.__name__, "Yes")
Exemple #8
0
    instance = 1
    n_evals = 1000
    for n_var in [10, 20, 40]:
        for function in range(1, 25):
            label = f"bbob-f{function:02d}-{instance}"
            benchmark.add_problem(label + "-" + str(n_var),
                                  get_problem(label, n_var=n_var),
                                  ("n_evals", n_evals))

    benchmark.add_algorithm("de", DE())
    benchmark.add_algorithm("ga", GA())
    benchmark.add_algorithm("pso", PSO())
    benchmark.add_algorithm("cmaes", SimpleCMAES())
    benchmark.add_algorithm("ps", PatternSearch())
    benchmark.add_algorithm("nm", NelderMead())

    loader = DefaultLoader(FOLDER)
    # loader = None

    writer = DefaultWriter(FOLDER)

    results = benchmark.run(writer=writer,
                            loader=loader,
                            run_if_loading_fails=True)

    # _ = SingleObjectiveAnalyzer().run(results, benchmark=benchmark, inplace=True)
    results = SingleObjectiveAnalyzer().run(results,
                                            benchmark=benchmark,
                                            inplace=False)
Exemple #9
0
from pymoo.algorithms.soo.nonconvex.de import DE
from pymoo.algorithms.soo.nonconvex.direct import DIRECT
from pymoo.algorithms.soo.nonconvex.es import ES
from pymoo.algorithms.soo.nonconvex.nelder_mead import NelderMead
from pymoo.algorithms.soo.nonconvex.pattern_search import PatternSearch
from pymoo.algorithms.soo.nonconvex.pso import PSO
from pymoo.factory import Sphere, Rosenbrock, Himmelblau, ZDT1, get_reference_directions
from pymoo.indicators.igd import IGD
from pymoo.optimize import minimize

SINGLE_OBJECTIVE_PROBLEMS = [Sphere(n_var=10), Himmelblau(), Rosenbrock()]

SINGLE_OBJECTIVE_ALGORITHMS = [
    PatternSearch(),
    CMAES(),
    NelderMead(),
    DIRECT(),
    PSO(), DE(),
    ES()
]


@pytest.mark.parametrize('problem', SINGLE_OBJECTIVE_PROBLEMS)
@pytest.mark.parametrize('algorithm', SINGLE_OBJECTIVE_ALGORITHMS)
def test_singe_obj(problem, algorithm):
    res = minimize(problem, algorithm, seed=1, verbose=True)
    fmin = problem.pareto_front().flatten()[0]
    np.testing.assert_almost_equal(fmin, res.F[0], decimal=3)


MULTI_OBJECTIVE_PROBLEMS = [ZDT1()]