MetaOpt
  • Optimzing the OneMin objective function with grid search
 
MetaOpt
  • Docs »
  • Optimzing the OneMin objective function with grid search
  • Edit on GitHub

Optimzing the OneMin objective function with grid search¶

The optimization stops after a global timeout of 10 seconds.

../_images/one_min_gridsearch_2.png ../_images/one_min_gridsearch_4.png ../_images/one_min_gridsearch_1.png ../_images/one_min_gridsearch_3.png

Code output:

Minimum for Sum: f(0=True, 1=True, 2=True, 3=True, 4=True, 5=True, 6=True, 7=True, 8=True, 9=True, 10=True, 11=True, 12=True, 13=True, 14=True, 15=True) = 16
Minimum for Sum: f(0=True, 1=True, 2=True, 3=True, 4=True, 5=True, 6=True, 7=True, 8=True, 9=True, 10=True, 11=True, 12=True, 13=True, 14=True, 15=False) = 15
Minimum for Sum: f(0=True, 1=True, 2=True, 3=True, 4=True, 5=True, 6=True, 7=True, 8=True, 9=True, 10=True, 11=True, 12=True, 13=True, 14=False, 15=False) = 14
Minimum for Sum: f(0=True, 1=True, 2=True, 3=True, 4=True, 5=True, 6=True, 7=True, 8=True, 9=True, 10=True, 11=True, 12=True, 13=False, 14=False, 15=False) = 13
Minimum for Sum: f(0=True, 1=True, 2=True, 3=True, 4=True, 5=True, 6=True, 7=True, 8=True, 9=True, 10=True, 11=True, 12=False, 13=False, 14=False, 15=False) = 12
Minimum for Sum: f(0=True, 1=True, 2=True, 3=True, 4=True, 5=True, 6=True, 7=True, 8=True, 9=True, 10=True, 11=False, 12=False, 13=False, 14=False, 15=False) = 11
Minimum for Sum: f(0=True, 1=True, 2=True, 3=True, 4=True, 5=True, 6=True, 7=True, 8=True, 9=True, 10=False, 11=False, 12=False, 13=False, 14=False, 15=False) = 10
Minimum for Sum: f(0=True, 1=True, 2=True, 3=True, 4=True, 5=True, 6=True, 7=True, 8=True, 9=False, 10=False, 11=False, 12=False, 13=False, 14=False, 15=False) = 9
Minimum for Sum: f(0=True, 1=True, 2=True, 3=True, 4=True, 5=True, 6=True, 7=True, 8=False, 9=False, 10=False, 11=False, 12=False, 13=False, 14=False, 15=False) = 8
Minimum for Sum: f(0=True, 1=True, 2=True, 3=True, 4=True, 5=True, 6=True, 7=False, 8=False, 9=False, 10=False, 11=False, 12=False, 13=False, 14=False, 15=False) = 7
Minimum for Sum: f(0=True, 1=True, 2=True, 3=True, 4=True, 5=True, 6=False, 7=False, 8=False, 9=False, 10=False, 11=False, 12=False, 13=False, 14=False, 15=False) = 6
Minimum for Sum: f(0=True, 1=True, 2=True, 3=True, 4=True, 5=False, 6=False, 7=False, 8=False, 9=False, 10=False, 11=False, 12=False, 13=False, 14=False, 15=False) = 5
The optimal parameters are (0=True, 1=True, 2=True, 3=True, 4=True, 5=False, 6=False, 7=False, 8=False, 9=False, 10=False, 11=False, 12=False, 13=False, 14=False, 15=False).

Python source code:

# Future
from __future__ import absolute_import, division, print_function, \
    unicode_literals, with_statement

# First Party
from metaopt.core.optimize.optimize import optimize
from metaopt.core.paramspec.util import param
from metaopt.core.returnspec.util.decorator import minimize
from metaopt.optimizer.gridsearch import GridSearchOptimizer
from metaopt.optimizer.saes import SAESOptimizer
from metaopt.plugin.print.optimum import OptimumPrintPlugin
from metaopt.plugin.print.status import StatusPrintPlugin
from metaopt.plugin.visualization.best_fitness import VisualizeBestFitnessPlugin

@minimize("Sum")
@param.multi(param.bool, map(str, range(16)))
def f(**kwargs):
    return sum(kwargs.values())

def main():
    optimizer = GridSearchOptimizer()
    timeout = 10

    visualize_best_fitness_plugin = VisualizeBestFitnessPlugin()

    plugins = [
        OptimumPrintPlugin(),
        visualize_best_fitness_plugin,
    ]

    optimum = optimize(f, timeout=timeout, optimizer=optimizer, plugins=plugins)

    print("The optimal parameters are %s." % str(optimum))

    visualize_best_fitness_plugin.show_fitness_invocations_plot()
    visualize_best_fitness_plugin.show_fitness_time_plot()

if __name__ == '__main__':
    main()

[download source: one_min_gridsearch.py]


© Copyright 2013, Renke Grunwald, Justin Heinermann, Bengt Lüers, Jendrik Poloczek.

Sphinx theme provided by Read the Docs