Пример #1
0
def _test_optimizer(opt, problem, num_retries=32, num=1):
    log = logger()
    log.info(problem.name + ' ' + opt.name)
    for _ in range(num):
        minimize(problem.fun,
                 problem.bounds,
                 math.inf,
                 num_retries,
                 log,
                 optimizer=opt)
Пример #2
0
def test_retry_cpp(problem, num):
    ret = retry.minimize(problem.fun,
                         bounds=problem.bounds,
                         num_retries=num,
                         max_evaluations=50000,
                         logger=logger(),
                         useCpp=True)
Пример #3
0
def test_retry_cma_python(problem, num):
    best = math.inf
    t0 = time.perf_counter();    
    for i in range(num):
        ret = retry.minimize(problem.fun, bounds = problem.bounds, 
                num_retries = 2000, optimizer = Cma_python(100000))
        best = min(ret.fun, best)
        print("{0}: time = {1:.1f} best = {2:.1f} f(xmin) = {3:.1f}"
              .format(i+1, dtime(t0), best, ret.fun))
Пример #4
0
def test_retry(problem, num, log=None):
    best = math.inf
    t0 = time.perf_counter();    
    for i in range(num):
        ret = retry.minimize(problem.fun, bounds = problem.bounds, 
                num_retries = 2000, max_evaluations = 100000, logger=log)
        best = min(ret.fun, best)
        print("{0}: time = {1:.1f} best = {2:.1f} f(xmin) = {3:.1f}"
              .format(i+1, dtime(t0), best, ret.fun))
Пример #5
0
def messengerFullLoop():
    while True:
        problem = MessFull()
        logger().info(problem.name + ' cmaes c++')
        ret = minimize(problem.fun,
                       bounds=problem.bounds,
                       num_retries=40000,
                       max_evaluations=50000,
                       logger=logger(),
                       useCpp=True)
Пример #6
0
def test_optimizer(fun, n):
    best = math.inf
    t0 = time.perf_counter()
    for i in range(n):
        max_x = i + 12
        bounds = Bounds(lowerbound, [max_x + 0.99] * 4)
        ret = retry.minimize(fun,
                             bounds,
                             max_evaluations=10000,
                             num_retries=100)
        best = print_result(ret, best, t0, max_x)
Пример #7
0
def _test_problem(problem,
                  max_evals=50000,
                  num_retries=2000,
                  num=20,
                  log=logger(),
                  useCpp=False):
    log.info(problem.name + ' cmaes ' + ('c++' if useCpp else 'python'))
    for i in range(num):
        ret = minimize(problem.fun,
                       bounds=problem.bounds,
                       num_retries=num_retries,
                       max_evaluations=max_evals,
                       useCpp=useCpp,
                       logger=log)
Пример #8
0
def test_de_cma_parallel_retry(problem):
    # parallel optimization retry using a DE -> CMA-ES sequence
    t0 = time.perf_counter()
    evals = 0
    for i in range(1000):
        ret = retry.minimize(problem.fun,
                             problem.bounds,
                             logger=logger(),
                             optimizer=de_cma(50000),
                             value_limit=10)

        evals += ret.nfev
        print("{0}: time = {1:.1f} fun = {2:.3f} nfev = {3}".format(
            i + 1, dtime(t0), ret.fun, evals))
    return ret
Пример #9
0
def test_eggholder_retry():
    dim = 2
    testfun = Eggholder()

    limit = -956
    for _ in range(5):
        wrapper = Wrapper(testfun.fun, dim)
        ret = retry.minimize(wrapper.eval, testfun.bounds, num_retries=100)
        if limit > ret.fun:
            break

    assert (limit > ret.fun)  # optimization target not reached
    assert (ret.nfev == wrapper.get_count()
            )  # wrong number of function calls returned
    assert (almost_equal(ret.x, wrapper.get_best_x()))  # wrong best X returned
    assert (ret.fun == wrapper.get_best_y())  # wrong best y returned
Пример #10
0
def optimize():
    solo_mgar = solo_mgar_udp([7000, 8000])
    prob = pg.problem(solo_mgar)
    fprob = single_objective(prob)

    # logger().info('solar orbiter' + ' de -> cmaes c++ smart retry')
    # ret = advretry.minimize(fprob.fun, bounds=fprob.bounds, num_retries = 60000,
    # logger = logger(), optimizer=de_cma(1500))

    logger().info('solar orbiter' + ' BiteOpt parallel retry')
    ret = retry.minimize(fprob.fun,
                         bounds=fprob.bounds,
                         num_retries=32000,
                         logger=logger(),
                         optimizer=Bite_cpp(120000, M=6))
    return ret
Пример #11
0
def test_eggholder_retry():
    #windows cannot pickle function objects
    if sys.platform.startswith('windows'):
        return

    dim = 2
    testfun = Eggholder()

    limit = -956
    for i in range(5):
        wrapper = Wrapper(testfun.func, dim)
        ret = retry.minimize(wrapper.eval,
                             testfun.bounds,
                             num_retries=100,
                             useCpp=False,
                             logger=None)
        if limit > ret.fun:
            break

    assert (limit > ret.fun)  # optimization target not reached
    assert (ret.nfev == wrapper.get_count()
            )  # wrong number of function calls returned
    assert (almost_equal(ret.x, wrapper.get_best_x()))  # wrong best X returned
    assert (ret.fun == wrapper.get_best_y())  # wrong best y returned
Пример #12
0
def parallel_improve(opt):
    return retry.minimize(fitness(), bounds, optimizer=opt)
Пример #13
0
def parallel_retry(opt=Bite_cpp(100000, M=8)):
    return retry.minimize(fitness(), bounds, optimizer=opt)
Пример #14
0
def test_retry_python(problem, num):
    ret = retry.minimize(problem.fun,
                         bounds=problem.bounds,
                         num_retries=num,
                         max_evaluations=50000,
                         logger=logger())