scipy.optimize.fmin_cobyla

scipy.optimize.fmin_cobyla(func, x0, cons, args=(), consargs=None, rhobeg=1.0, rhoend=0.0001, iprint=1, maxfun=1000, disp=None)

Minimize a function using the Constrained Optimization BY Linear Approximation (COBYLA) method.

Parameters :

func : callable

Function to minimize. In the form func(x, *args).

x0 : ndarray

Initial guess.

cons : sequence

Constraint functions; must all be >=0 (a single function if only 1 constraint). Each function takes the parameters x as its first argument.

args : tuple

Extra arguments to pass to function.

consargs : tuple

Extra arguments to pass to constraint functions (default of None means use same extra arguments as those passed to func). Use () for no extra arguments.

rhobeg : :

Reasonable initial changes to the variables.

rhoend : :

Final accuracy in the optimization (not precisely guaranteed).

iprint : {0, 1, 2, 3}

Controls the frequency of output; 0 implies no output. Deprecated.

disp : {0, 1, 2, 3}

Over-rides the iprint interface. Preferred.

maxfun : int

Maximum number of function evaluations.

Returns :

x : ndarray

The argument that minimises f.

Examples

Minimize the objective function f(x,y) = x*y subject to the constraints x**2 + y**2 < 1 and y > 0:

>>> def objective(x):
...     return x[0]*x[1]
...
>>> def constr1(x):
...     return 1 - (x[0]**2 + x[1]**2)
...
>>> def constr2(x):
...     return x[1]
...
>>> fmin_cobyla(objective, [0.0, 0.1], [constr1, constr2], rhoend=1e-7)

   Normal return from subroutine COBYLA

   NFVALS =   64   F =-5.000000E-01    MAXCV = 1.998401E-14
   X =-7.071069E-01   7.071067E-01
array([-0.70710685,  0.70710671])

The exact solution is (-sqrt(2)/2, sqrt(2)/2).

Previous topic

scipy.optimize.fmin_tnc

Next topic

scipy.optimize.fmin_slsqp

This Page