NEOS Server Home

NEOS Interfaces to SNOPT

WWW Form & Sample Submissions
E-mail
XML-RPC

SNOPT





The NEOS Server offers SNOPT (Sparse Nonlinear Optimizer) for the solution of nonlinearly constrained optimization problems. Written by P. E. Gill, W. Murray and M. A. Saunders, SNOPT belongs to the family of sequential quadratic programming (SQP) methods and is intended for solving constrained nonlinear optimization problems of the form

min f(x) s.t. cl <= c(x) <= cu and xl <= x <= xu,

where the objective and the constraint functions are smooth and the number of variables and constraints are large but the number of degrees of freedom is moderate (say, up to 1000).

The present implementation mantains a positive definite limited memory approximation of the Hessian of the Lagrangian and the QP subproblems are solved using a reduced-Hessian algorithm.

The method requires only first derivatives, but the NEOS Server uses the ADIFOR automatic differentiation tool for Fortran submissions, which generates them in sparse form. Thus the user needs only submit the objective and constraint functions. ADIFOR support is automatically incorporated into SNOPT using SNADIOPT by E. Michael Gertz.

For a more complete description of SNOPT, see the User's Guide. (Warning: This is the original SNOPT User's Guide and as such, it does NOT explain the interface used by the NEOS server, which is covered in these web pages.)


Using the NEOS Server for SNOPT

To solve a nonlinearly constrained minimization problem in Fortran, the user must submit to the server:


This NEOS solver executes on a Sun workstation. Sun, Sun Microsystems, the Sun Logo and the Powered by Sun Logo are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.

You need to tell us the number of variables
Number of Variables:


You need to tell us the number of constraints
Number of Contraints:


You need to specify the location of a file containing a subroutine that defines the starting point. This subroutine needs to be in the following format:
    subroutine initpt(n,x)
       n - integer (input)
           number of variables
       x - double precision, length n (output)
           starting point


Initial Point Subroutine:


You need to specify the location of a file containing a subroutine that evaluates the objective function. This subroutine needs to be in the following format:

    subroutine fcn(n,x,f)
       n - integer (input)
           number of variables
       x - double precision, length n (input)
           vector of variables
       f - double precision, objective function evaluated at x


Function Subroutine:


You need to specify the locatin of a file containing a subroutine that evaluates the general constraint functions. This subroutine needs to be in the following format:

    subroutine cfcn(n,x,m,c)
       n - integer (input)
           number of variables
       x - double precision, length n (input)
           vector of variables
       m - integer (input)
           number of general constraints
       c - double precision, length m (output)
           general constraint functions at x


Constraint Subroutine:


You need to specify the location of a file containing a subroutine that defines the bounds on the variables. This subroutine needs to be in the following format:
    subroutine xbound(n,xl,xu)
        n - integer (input)
            number of variables
       xl - double precision, length n (output)
            lower bounds
       xu - double precision, length n (output)
            upper bounds

   If x(i) has no lower bound, then xl(i) should be set to a large
   negative number (e.g., -1.00d+10), similarly if x(i) has no upper
   bound, then xu(i) should be set to a large positive number
   (e.g., 1.00d+00).


Variable Bounds Subroutine:


You need to specify the location of a file containing a subroutine that defines the bounds on the general constraints. This subroutine needs to be in the following format:
    subroutine cbound(m,cl,cu)
        n - integer (input)
            number of general constraints
       cl - double precision, length m (output)
            lower bounds
       cu - double precision, length m (output)
            upper bounds

   If c(i) has no lower bound, then cl(i) should be set to a large
   negative number (e.g., -1.00d+10), similarly if c(i) has no upper
   bound, then cu(i) should be set to a large positive number
   (e.g., 1.00d+00).


Constraint Bounds Subroutine:


Optionally, you may specify the location of a file containing the SNOPT specifications file (SPECS file).
Specs file:


Enter any additional comments here (e.g. to identify the data for your own information.) These comments will be returned with your results.
Comments:


Put in priority queue
e-mail address:

Please do not click the 'Submit to NEOS' button more than once.


NEOS Server Home
Submit comments and questions


DOE disclaimer
DOE Web privacy policy