Source code for pymoo.optimize

import copy


[docs] def minimize(problem, algorithm, termination=None, copy_algorithm=True, copy_termination=True, **kwargs): """ Minimization of function of one or more variables, objectives and constraints. This is used as a convenience function to execute several algorithms with default settings which turned out to work for a test single. However, evolutionary computations utilizes the idea of customizing a meta-algorithm. Customizing the algorithm using the object-oriented interface is recommended to improve the convergence. Parameters ---------- problem : :class:`~pymoo.core.problem.Problem` A problem object which is defined using pymoo. algorithm : :class:`~pymoo.core.algorithm.Algorithm` The algorithm object that should be used for the optimization. termination : :class:`~pymoo.core.termination.Termination` or tuple The termination criterion that is used to stop the algorithm. seed : integer The random seed to be used. verbose : bool Whether output should be printed or not. display : :class:`~pymoo.util.display.Display` Each algorithm has a default display object for printouts. However, it can be overwritten if desired. callback : :class:`~pymoo.core.callback.Callback` A callback object which is called each iteration of the algorithm. save_history : bool Whether the history should be stored or not. copy_algorithm : bool Whether the algorithm object should be copied before optimization. Returns ------- res : :class:`~pymoo.core.result.Result` The optimization result represented as an object. """ # create a copy of the algorithm object to ensure no side effects if copy_algorithm: algorithm = copy.deepcopy(algorithm) # initialize the algorithm object given a problem - if not set already if algorithm.problem is None: if termination is not None: if copy_termination: termination = copy.deepcopy(termination) kwargs["termination"] = termination algorithm.setup(problem, **kwargs) # actually execute the algorithm res = algorithm.run() # store the deep copied algorithm in the result object res.algorithm = algorithm return res