[SciPy-User] quadratic programming with fmin_slsqp

denis denis-bz-gg at t-online.de
Tue Mar 20 07:58:49 EDT 2012


On Mar 16, 5:45 pm, josef.p... at gmail.com wrote:
> scipy is missing a fmin_quadprog

Josef,
  minmize()  is a reasonable common interface to 10 or so optimizers,
see http://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html
however
- minimize.py is not in scipy-0.9.0.tar nor in scipy-0.10.1.tar
    (a test to see if anybody's using it ?)
- only L-BFGS-B TNC COBYLA and SLSQP support bounds.

One could supply a trivial box / penaltybox as outlined below
(I use this playing around with Neldermead)
but I'm not sure anybody would use it
plus there's openopt pyomo mystic ...
maybe more solvers than real testcases :-

cheers
  -- denis


class Funcbox:
    """ F = Funcbox( func, [box=(0,1), penalty=None, grid=0,
*funcargs, **kwargs
        wraps a func() with a constraint box and grid

    Parameters
    ----------
    func: a function of a numpy vector or array-like
    box: (low, high) to np.clip, default (0,1).
        These can be vectors; low_j == high_j freezes x_j at that
value.
    penalty: e.g. (0, 1, 1000) adds a quadratic penalty
        to func() where xclip is outside (0, 1)
            1000 * sum( max( 0 - x, 0 )**2 + max( x - 1, 0 )**2 )
            = 1 4 9 16 ... at -.01 -.02 ... and 1.01 1.02 ...
        The default is None, no penalty.
        (The penalty box should be smaller than the clip box;
        x is first gridded if grid > 0, then clipped, then penalty
computed.)
    grid: e.g. .01 snaps all x_j to multiples of .01 --
        a simple noise smoother, recommended for noisy functions.
        The default is 0, no gridding.



More information about the SciPy-User mailing list