# Bumps documentation

## random_lines - Random lines and particle swarm optimizers

`random_lines` | Random lines is a population based optimizer which using quadratic fits along randomly oriented directions.
`particle_swarm` | Particle swarm is a population based optimizer which uses force and momentum to select candidate points.

Random Lines Algorithm finds the optimal minimum of a function.

Sahin, I. (2013). Minimization over randomly selected lines. An International Journal Of Optimization And Control: Theories & Applications (IJOCTA), 3(2), 111-119. http://dx.doi.org/10.11121/ijocta.01.2013.00167

bumps.random_lines.particle_swarm(cfo, NP, epsilon=1e-10, maxiter=1000)

  Particle swarm is a population based optimizer which uses force and momentum to select candidate points.

  cfo is the cost function object. This is a dictionary which contains the following keys:

  > cost is the function to be optimized. If parallel_cost exists, it should accept a list of points, not just a single point on each evaluation.

  > n is the problem dimension

  > x0 is the initial point

  > x1 and x2 are lower and upper bounds for each parameter

  > monitor is a callable which is called each iteration using callback(step, x, fx, k), where step is the iteration number, x is the population, fx is value of the cost function for each member of the population and k is the index of the best point in the population.

  > f_opt is the target value of the optimization

  NP is the number of fit parameters

  epsilon is the convergence criterion.

  abort_test is a callable which indicates whether an external processes requests the fit to stop.

  maxiter is the maximum number of generations

  Returns success, num_evals, f(x_best), x_best.

bumps.random_lines.random_lines(cfo, NP, CR=0.9, epsilon=1e-10, abort_test=None, maxiter=1000)

  Random lines is a population based optimizer which using quadratic fits along randomly oriented directions.

  cfo is the cost function object. This is a dictionary which contains the following keys:

  > cost is the function to be optimized. If parallel_cost exists, it should accept a list of points, not just a single point on each evaluation.

  > n is the problem dimension

  > x0 is the initial point

  > x1 and x2 are lower and upper bounds for each parameter

  > monitor is a callable which is called each iteration using callback(step, x, fx, k), where step is the iteration number, x is the population, fx is value of the cost function for each member of the population and k is the index of the best point in the population.

  > f_opt is the target value of the optimization

  NP is the number of fit parameters

  CR is the cross-over ratio, which is the proportion of dimensions that participate in any random orientation vector.

  epsilon is the convergence criterion.

  abort_test is a callable which indicates whether an external processes requests the fit to stop.

  maxiter is the maximum number of generations

  Returns success, num_evals, f(x_best), x_best.