Example #1
0
def main():

    # instantiate dynamics
    dyn = Dynamics()

    # instantiate leg
    leg = Leg(dyn, alpha=0, bound=True)

    # set boudaries
    t0 = 0
    s0 = np.array([1000, 1000, *np.random.randn(4)], dtype=float)
    l0 = np.random.randn(len(s0))
    tf = 1000
    sf = np.zeros(len(s0))
    leg.set(t0, s0, l0, tf, sf)

    # define problem
    udp = Problem(leg, atol=1e-8, rtol=1e-8)
    prob = pg.problem(udp)

    # instantiate algorithm
    uda = pg7.snopt7(True, "/usr/lib/libsnopt7_c.so")
    uda.set_integer_option("Major iterations limit", 4000)
    uda.set_integer_option("Iterations limit", 40000)
    uda.set_numeric_option("Major optimality tolerance", 1e-2)
    uda.set_numeric_option("Major feasibility tolerance", 1e-4)
    algo = pg.algorithm(uda)

    # instantiate population with one chromosome
    pop = pg.population(prob, 1)
    #pop = pg.population(prob, 0)
    #pop.push_back([1000, *l0])

    # optimise
    pop = algo.evolve(pop)
Example #2
0
def algo_factory(name, original_screen_output=True):
    if name == "slsqp":
        uda = pg.nlopt('slsqp')
        uda.xtol_rel = 1e-5
        uda.ftol_rel = 0
        algo = pg.algorithm(uda)
        algo.set_verbosity(1)
        return algo
    elif name == "ipopt":
        if original_screen_output:
            pl = 5
        else:
            pl = 0
        # Disable lint check on next line. Known issue (pagmo2/issues/261)
        uda = pg.ipopt()  # pylint: disable=no-member
        uda.set_integer_option("print_level", pl)
        uda.set_integer_option("acceptable_iter", 4)
        uda.set_integer_option("max_iter", 150)

        uda.set_numeric_option("tol", 1e-8)
        uda.set_numeric_option("dual_inf_tol", 1e-8)
        uda.set_numeric_option("constr_viol_tol", 1e-8)
        uda.set_numeric_option("compl_inf_tol", 1e-8)

        uda.set_numeric_option("acceptable_tol", 1e-3)
        uda.set_numeric_option("acceptable_dual_inf_tol", 1e-2)
        uda.set_numeric_option("acceptable_constr_viol_tol", 1e-6)
        uda.set_numeric_option("acceptable_compl_inf_tol", 1e-6)

        algo = pg.algorithm(uda)
        return algo
    elif name == "snopt7":
        import pygmo_plugins_nonfree as pg7
        uda = pg7.snopt7(original_screen_output,
                         "/usr/local/lib/libsnopt7_c.so")
        uda.set_integer_option("Major iterations limit", 2000)
        uda.set_integer_option("Iterations limit", 200000)
        uda.set_numeric_option("Major optimality tolerance", 1e-2)
        uda.set_numeric_option("Major feasibility tolerance", 1e-9)

        algo = pg.algorithm(uda)
        return algo
Example #3
0
def algo_factory(name, original_screen_output=True):
    if name is "slsqp":
        uda = pg.nlopt('slsqp')
        uda.xtol_rel = 1e-5
        uda.ftol_rel = 0
        algo = pg.algorithm(uda)
        algo.set_verbosity(1)
        return algo
    elif name is "ipopt":
        if original_screen_output:
            pl = 5
        else:
            pl = 0
        uda = pg.ipopt()
        uda.set_integer_option("print_level", pl)
        uda.set_integer_option("acceptable_iter", 4)
        uda.set_integer_option("max_iter", 150)

        uda.set_numeric_option("tol", 1e-8)
        uda.set_numeric_option("dual_inf_tol", 1e-8)
        uda.set_numeric_option("constr_viol_tol", 1e-8)
        uda.set_numeric_option("compl_inf_tol", 1e-8)

        uda.set_numeric_option("acceptable_tol", 1e-3)
        uda.set_numeric_option("acceptable_dual_inf_tol", 1e-2)
        uda.set_numeric_option("acceptable_constr_viol_tol", 1e-6)
        uda.set_numeric_option("acceptable_compl_inf_tol", 1e-6)

        algo = pg.algorithm(uda)
        return algo
    elif name is "snopt7":
        import pygmo_plugins_nonfree as pg7
        uda = pg7.snopt7(original_screen_output,
                         "/usr/local/lib/libsnopt7_c.so")
        uda.set_integer_option("Major iterations limit", 2000)
        uda.set_integer_option("Iterations limit", 200000)
        uda.set_numeric_option("Major optimality tolerance", 1e-2)
        uda.set_numeric_option("Major feasibility tolerance", 1e-9)

        algo = pg.algorithm(uda)
        return algo
import pygmo as pg
import pygmo_plugins_nonfree as ppn

# 1 - Instantiate a pygmo problem constructing it from a UDP
# (user defined problem).
prob = pg.problem(pg.schwefel(30))

# 2 - Instantiate a pagmo_plugins_nonfree algorithm, in this case SNOPT.
# Here we assume the library name is libsnopt7_c.so, in Windows it would probably be
# snopt7_c.dll or similar.
algo = pg.algorithm(ppn.snopt7(false, "/usr/local/lib/libsnopt7_c.so"))

# 3 - Instantiate an archipelago with 16 islands having each 20 individuals
archi = pg.archipelago(16, algo=algo, prob=prob, pop_size=20)

# 4 - Run the evolution in parallel on the 16 separate islands 10 times.
archi.evolve(10)

# 5 - Wait for the evolutions to be finished
archi.wait()

# 6 - Print the fitness of the best solution in each island
res = [isl.get_population().champion_f for isl in archi]
print(res)