Skip to content

Commit

Permalink
Merge pull request #218 from Happy-Algorithms-League/examples/command…
Browse files Browse the repository at this point in the history
…_line_args

Add command line args for example scripts
  • Loading branch information
mschmidt87 committed Aug 4, 2020
2 parents 2dbad6e + 00aa744 commit e2d4010
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 5 deletions.
2 changes: 2 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ max-line-length = 99
max-complexity = 18
select = B,C,E,F,W,T4,B9
exclude = __init__.py
per-file-ignores =
examples/*:E402
17 changes: 16 additions & 1 deletion examples/example_differential_evo_regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,30 @@
"""

# The docopt str is added explicitly to ensure compatibility with
# sphinx-gallery.
docopt_str = """
Usage:
example_differential_evo_regression.py [--max-generations=<N>]
Options:
-h --help
--max-generations=<N> Maximum number of generations [default: 2000]
"""

import functools

import matplotlib.pyplot as plt
import numpy as np
import scipy.constants
import torch
from docopt import docopt

import cgp

args = docopt(docopt_str)

# %%
# We first define the target function. Note that this function contains
# numeric values which are initially not available as constants to the search.
Expand Down Expand Up @@ -92,7 +107,7 @@ def objective(individual, seed):

ea_params = {"n_offsprings": 4, "tournament_size": 1, "n_processes": 1, "k_local_search": 2}

evolve_params = {"max_generations": 2000, "min_fitness": 0.0}
evolve_params = {"max_generations": int(args["--max-generations"]), "min_fitness": 0.0}

# use an uneven number of gradient steps so they can not easily
# average out for clipped values
Expand Down
15 changes: 14 additions & 1 deletion examples/example_evo_regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,29 @@
two regression tasks.
"""

# The docopt str is added explicitly to ensure compatibility with
# sphinx-gallery.
docopt_str = """
Usage:
example_evo_regression.py [--max-generations=<N>]
Options:
-h --help
--max-generations=<N> Maximum number of generations [default: 1000]
"""

import functools
import warnings

import matplotlib.pyplot as plt
import numpy as np
import scipy.constants
from docopt import docopt

import cgp

args = docopt(docopt_str)

# %%
# We first define target functions. For illustration purposes, we
# define two functions which present different levels of difficulty
Expand Down Expand Up @@ -123,7 +136,7 @@ def evolution(f_target):

ea_params = {"n_offsprings": 10, "tournament_size": 2, "n_processes": 2}

evolve_params = {"max_generations": 1000, "min_fitness": 0.0}
evolve_params = {"max_generations": int(args["--max-generations"]), "min_fitness": 0.0}

# create population that will be evolved
pop = cgp.Population(**population_params, genome_params=genome_params)
Expand Down
19 changes: 17 additions & 2 deletions examples/example_mountain_car.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,25 @@
"""

# The docopt str is added explicitly to ensure compatibility with
# sphinx-gallery.
docopt_str = """
Usage:
example_parametrized_nodes.py [--max-generations=<N>] [--visualize-final-champion]
Options:
-h --help
--max-generations=<N> Maximum number of generations [default: 1500]
--visualize-final-champion Create animation of final champion in the mountain car env.
"""

import functools
import warnings

import matplotlib.pyplot as plt
import numpy as np
import sympy
from docopt import docopt

import cgp

Expand All @@ -30,6 +42,8 @@
)


args = docopt(docopt_str)

# %%
# For more flexibility in the evolved expressions, we define two
# constants that can be used in the expressions, with values 0.1 and
Expand Down Expand Up @@ -154,7 +168,7 @@ def evolve(seed):

ea_params = {"n_offsprings": 4, "tournament_size": 1, "n_processes": 4}

evolve_params = {"max_generations": 1500, "min_fitness": 100.0}
evolve_params = {"max_generations": int(args["--max-generations"]), "min_fitness": 100.0}

pop = cgp.Population(**population_params, genome_params=genome_params)

Expand Down Expand Up @@ -288,4 +302,5 @@ def f(x):

plot_fitness_over_generation_index(history)
evaluate_champion(champion)
# visualize_behaviour_for_evolutionary_jumps(seed, history)
if args["--visualize-final-champion"]:
visualize_behaviour_for_evolutionary_jumps(seed, history)
16 changes: 15 additions & 1 deletion examples/example_parametrized_nodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,30 @@
"""

# The docopt str is added explicitly to ensure compatibility with
# sphinx-gallery.
docopt_str = """
Usage:
example_parametrized_nodes.py [--max-generations=<N>]
Options:
-h --help
--max-generations=<N> Maximum number of generations [default: 500]
"""

import functools
import math

import matplotlib.pyplot as plt
import numpy as np
import scipy.constants
import torch
from docopt import docopt

import cgp

args = docopt(docopt_str)

# %%
# We first define a new node that adds two inputs then scales and
# finally shifts the result. The scale ("w") and shift factors ("b")
Expand Down Expand Up @@ -99,7 +113,7 @@ def objective(individual, seed):

ea_params = {"n_offsprings": 4, "tournament_size": 1, "n_processes": 2}

evolve_params = {"max_generations": 500, "min_fitness": 0.0}
evolve_params = {"max_generations": int(args["--max-generations"]), "min_fitness": 0.0}

local_search_params = {"lr": 1e-3, "gradient_steps": 9}

Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
numpy ~= 1.18.3
docopt-ng~=0.7.2

0 comments on commit e2d4010

Please sign in to comment.