Example #1
0
def test_rosen_de_parallel():
    popsize = 8
    dim = 2
    testfun = Rosen(dim)
    max_eval = 10000
    limit = 0.01
    for _ in range(5):
        wrapper = Wrapper(testfun.fun, dim)
        ret = de.minimize(wrapper.eval,
                          dim,
                          testfun.bounds,
                          max_evaluations=max_eval,
                          popsize=popsize,
                          workers=popsize)
        if limit > ret.fun:
            break

    assert (limit > ret.fun)  # optimization target not reached
    assert (max_eval + popsize >= ret.nfev)  # too much function calls
    assert (max_eval // popsize + 2 > ret.nit)  # too much iterations
    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 (almost_equal(ret.fun, wrapper.get_best_y(),
                         eps=1E-1))  # wrong best y returned
Example #2
0
def optimize():
    fprob = single_objective(pg.problem(udp))
    print('interferometer optimization')

    # Python Differential Evolution implementation, uses ask/tell for parallel function evaluation.
    ret = de.minimize(fprob.fun,
                      bounds=fprob.bounds,
                      workers=16,
                      popsize=32,
                      max_evaluations=50000)

    # Python CMAES implementation, uses ask/tell for parallel function evaluation.
    #ret = cmaes.minimize(fprob.fun, bounds=fprob.bounds, workers=16, popsize=32, max_evaluations=50000)

    # Parallel retry using DE
    #ret = retry.minimize(fprob.fun, bounds=fprob.bounds, optimizer=De_cpp(20000, popsize=32), workers=16, num_retries=64)

    # Parallel retry using Bite
    # ret = retry.minimize(fprob.fun, bounds=fprob.bounds, optimizer=Bite_cpp(20000, M=1), workers=16, num_retries=64)

    # Parallel retry using CMA-ES
    #ret = retry.minimize(udp.fitness, bounds=bounds, optimizer=Cma_cpp(20000, popsize=32), workers=16, num_retries=64)

    # Smart retry using DE
    #ret = advretry.minimize(fprob.fun, bounds=fprob.bounds, optimizer=De_cpp(1500, popsize=32), workers=16)

    # Smart retry using CMA-ES
    #ret = advretry.minimize(fprob.fun, bounds=fprob.bounds, optimizer=Cma_cpp(1500, popsize=32), workers=16)

    # Smart retry using DE->CMA sequence
    #ret = advretry.minimize(fprob.fun, bounds=fprob.bounds, optimizer=de_cma(1500, popsize=32), workers=16)

    print("best result is " + str(ret.fun) + ' x = ' +
          ", ".join(str(x) for x in ret.x))
Example #3
0
 def minimize(self,
              fun,
              bounds,
              guess=None,
              sdevs=None,
              rg=Generator(MT19937()),
              store=None):
     ret = de.minimize(fun,
                       None,
                       bounds,
                       self.popsize,
                       self.max_eval_num(store),
                       workers=None,
                       stop_fitness=self.stop_fitness,
                       keep=self.keep,
                       f=self.f,
                       cr=self.cr,
                       rg=rg)
     return ret.x, ret.fun, ret.nfev