AMPL Remote Access

Invoke solvers on the NEOS server
from your local AMPL session

Send AMPL files over the net
for execution by the NEOS server

Try AMPL on small problems
using our website's simple interface

Remote solvers available

Local AMPL with remote solvers:
the Kestrel client
Remote AMPL with remote solvers

Frequently Asked Questions

More about the NEOS Server


AMPL and the NEOS Server

To simplify the work of comparing and testing solvers, we have undertaken to make AMPL and solver resources available over the Internet, in collaboration with the NEOS Server project of the Argonne/Northwestern Optimization Technology Center. AMPL users can interact with the NEOS server in either of two ways:

These services are available free of charge to anyone who has the requisite Internet connections. They are intended mainly for testing, prototyping, and instructional purposes, however; there is no guarantee as to the schedule or volume of computing resources to be made available.

Remote solvers available

The following solvers are currently available for use through the indicated AMPL Remote Access interfaces. Solvers marked limited can accept AMPL model and data files for remote processing at the NEOS Server, but do not allow for AMPL command files.

For more information, follow the links from the solver names to their entries in the NEOS Optimization Software Guide.

Solver Problem Type Kestrel:
Local AMPL,
Remote solvers
NEOS Server:
Remote AMPL,
Remote solvers
Simple web
BLMVM bound-constrained optimization yes yes --
BonsaiG integer linear programming -- limited --
BPMPD linear programming yes yes yes
DFO nondifferentiable nonlinear optimization -- limited --
DONLP2 nonlinearly constrained optimization yes yes yes
FILTER nonlinearly constrained optimization yes yes --
FortMP linear programming,
integer linear programming
yes yes --
GLPK integer linear programming -- limited --
KNITRO nonlinearly constrained optimization yes yes --
LANCELOT nonlinearly constrained optimization yes yes yes
L-BFGS-B bound-constrained optimization yes yes yes
Solver Problem Type Kestrel:
Local AMPL,
Remote solvers
NEOS Server:
Remote AMPL,
Remote solvers
Simple web
LMQNBC bound-constrained optimization -- -- yes
LOQO linear programming,
nonlinearly constrained optimization
yes yes yes
lp_solve integer linear programming -- -- yes
MINLP integer nonlinear programming yes yes --
MINOS linear programming,
nonlinearly constrained optimization
yes yes yes
MOSEK linear programming,
nonlinearly constrained optimization
yes yes --
NDA nondifferentiable nonlinear optimization -- limited --
PATH complementarity problems yes yes yes
PATHNLP nonlinearly constrained optimization yes -- --
PCx linear programming -- yes --
SNOPT nonlinearly constrained optimization yes yes yes
TRON bound-constrained optimization yes yes --
XPRESS-MP linear programming,
integer linear programming
-- yes --

Additional solvers are to be provided. If you want to add a solver to those currently available through the NEOS Server, contact the Server administrators by writing to neos-comments@mcs.anl.gov.

Local AMPL with remote solvers: the Kestrel client

In this mode of operation, you run your own copy of AMPL on your local computer. But instead of specifying a solver installed on your computer or local network, you invoke Kestrel, a "client" program that sends your problem to a solver running on one of the NEOS Server's remote computers. The results from the NEOS Server are eventually returned through Kestrel to AMPL, where you can view and manipulate them locally in the usual way. Thus you get all the benefits of using AMPL environment, without having to first obtain and install each solver you want to try.

The introduction below covers everything you need to know to start using Kestrel with AMPL. Information about more advanced features and other uses of Kestrel can be found in The Kestrel Interface to the NEOS Server.

Downloading and installing the Kestrel client

To get started using this feature, you must obtain the free Kestrel program. Currently Kestrel is available for downloading in the form of executables for the following environments:
  • Linux (tested under Red Hat Linux 6.0)
  • Sun Solaris (tested under Solaris 7)
  • Windows (tested under Windows 98 and NT)
All of these are obtained by entering your e-mail address where requested on the Kestrel homepage and clicking on Proceed to Download. On the page that then appears, click on linux, solaris, or windows to download a single file constituting the Kestrel executable.

For Linux or Solaris, you'll get a compressed archive file kestrel.tar.gz. Uncompress and unpack the archive by entering the following Unix commands:

   gunzip kestrel.tar.gz
   tar xvf kestrel.tar
Then place the resulting executable file -- the one named kestrel -- somewhere in your search path, such as in the same directory as the AMPL program.

For Windows, you'll get a compressed archive file kestrel.zip, which should be uncompressed and unpacked by use of "unzip" or another "expander" utility. The resulting executable file kestrel.exe should be placed somewhere in your search path, such as in the same folder as ampl.exe.

In either case, you'll find that unpacking the archive also gives you three small text files: kestrelsub, kestrelret, and kestrelkill. These are short AMPL scripts that you can ignore at first; they can be convenient for managing Kestrel runs in some circumstances.

Selecting and running a solver with the Kestrel client

The Kestrel client program works like a special kind of solver. Once you have installed the Kestrel executable, you tell AMPL to use Kestrel by setting the option solver to kestrel. You then set the option kestrel_options to indicate which remote solver you want to access through Kestrel. Directives for the chosen solver are specified in the usual way through an option having a name of the form solvername_options.

As an example, here is how you might invoke Kestrel from a local AMPL session, using BPMPD as your remote solver:

   ampl: model steelT.mod;
   ampl: data steelT.dat;
   ampl: option solver kestrel;
   ampl: option kestrel_options 'solver=bpmpd';
   ampl: option bpmpd_options 'ordering=3 outlev=1';
   ampl: solve;
After Kestrel is invoked by solve, it establishes communication with the NEOS Server and sends the AMPL problem file. The NEOS Server's successful receipt of the problem file is indicated by messages like these:

   Job has been submitted to Kestrel
   Kestrel/NEOS Job number    : 6893
   Kestrel/NEOS Job password  : FaahsrIh

   Check the following URL for progress report : 
The job number, password, and URL have several uses in retrieving the results, as we'll explain in a moment, but in the simplest mode of operation Kestrel simply waits at this point for the NEOS Server to send back the solver's results. Kestrel then displays all of the output produced by the solver in the course of solving your problem:
   BPMPD 2.11: ordering=3
   Process: presolv
   Presolv done...

      << more output omitted >>

   Stopping criterion : Small infeasibility and duality gap
   ABSOLUTE infeas.   Primal  : 8.0026E-11    Dual         :  1.8651746814E-14
   PRIMAL :  Relative infeas. : 2.4069E-14    Objective    : -5.1503299999E+05
   DUAL   :  Relative infeas. : 1.2473E-16    Objective    : -5.1503300001E+05
   Complementarity gap        : 4.5924E-14    Duality gap  : -3.6320538845E-11

   Solver time    0.00 sec.
   Finished call
Kestrel then disconnects from the NEOS Server and terminates its execution. Finally, the solve command completes its work by reading the solution file and displaying its usual solution summary:
   BPMPD 2.11: Optimal solution found, objective 515033
   7 iterations, 13 corrections (1.86 per iter.)

That's it! You are returned to the ampl: prompt and can proceed to display or manipulate the solution or to do anything else that you would have done if the problem had been solved by a local copy of BPMPD. Subsequent uses of the solve command will continue to invoke a remote solver, until you change the option solver or conclude the AMPL session.

In general, you choose a remote solver through your setting of the AMPL option kestrel_options. The form of the AMPL command for this purpose is

      option kestrel_options 'solver=solvername';
The following choices for solvername are currently recognized:

You can pass directives to any of these solvers by assigning an appropriate directive string to the AMPL option consisting of the solver's name followed by _options. In the previous example, we requested the BPMPD's "min fill/augmented system" option and turned on detailed iteration output by giving the following AMPL command prior to solve:
     option bpmpd_options 'ordering=3 outlev=1';
For information on directives recognized by the available solvers, follow the links from their names in the listing above.

Viewing output and results

To look at the solver's output while it is running, point your browser at the URL given in the Kestrel output as shown above, and click on "View Intermediate Results" in the web page that appears. This will take you to another page that shows all of the output produced by the solver for your problem so far. To track the solver's progress, simply update this page periodically.

To retrieve results from a previous Kestrel run, first set up the same AMPL model and data that you used when submitting your problem. Then set kestrel_options to specify the job number and password that Kestrel reported when it processed the job. For the example above, the appropriate AMPL commands would be as follows:

   ampl: model steelT.mod;
   ampl: data steelT.dat;
   ampl: option solver kestrel;
   ampl: option kestrel_options 'job=6893 password=FaahsrIh';
   ampl: solve;
Following the solve, Kestrel contacts the NEOS Server to retrieve the results from the specified job. The display of the solver output and the return of the results to AMPL then proceed exactly as previously described. This feature enables you to retrieve results for any problem that has been successfully sent from Kestrel to the NEOS Server, even if Kestrel and AMPL have been terminated before results can be received. The NEOS Server only keeps previous results for a short time, however -- typically a day -- so this feature is not appropriate for archiving of runs.

Managing Kestrel runs

To submit multiple optimization runs and then retrieve them in the order that they were submitted, use the AMPL scripts kestrelsub and kestrelret that are unpacked along with the Kestrel executable. Detailed intructions are given in The Kestrel Interface to the NEOS Server. This feature should be used with care, so as not to overload the Server resources.

To cancel an optimization run before the solver has completed execution, set option kestrel_options to specify the appropriate job number and password, and then run the AMPL script kestrelkill. For example:

   ampl: option kestrel_options 'job=6893 password=FaahsrIh';
   ampl: commands kestrelkill;
To insure that AMPL will find the script, place the file kestrelkill in the directory (or folder) that will be current when you execute AMPL, or set option ampl_include to specify the directory where the script can be found.

Remote AMPL with remote solvers

This facility lets you send an AMPL "job" to one of the NEOS Server's remote computers. A job consists of an AMPL model file, plus optionally an associated data file, plus optionally a "script" or "run file" of AMPL commands.

When you submit a job, the NEOS Server starts up a copy of the AMPL processor, which reads and executes the commands in the run file (or executes "solve" if no run file is provided). The NEOS Server also executes the requested solver. AMPL's display or printing commands can be included in the run file to produce listings of results that are sent back along with other AMPL output.

To use this facility, follow a link below to consult the page of instructions for the solver in which you are interested. Solvers currently available are:

The following solvers also take AMPL input, but have a limited AMPL interface that does not allow for a command file (or "run file"): Included in the instructions are directions for sending your files to the NEOS Server. Three methods of communication are currently supported:
  • web submission, by giving a local filename for each file;
  • e-mail submission, using a specified format for which a template is provided;
  • a TCP/IP socket-based submission tool: a specialized interface for problem submission available in Java and in Unix tcl/tk versions.
Use the links in the upper right-hand corner of the directions page to select your submission method, or to request a menu of sample problems for web submission.

Frequently asked questions

  1. How large a problem can I run on the NEOS Server?
    The NEOS Server will currently attempt to run a problem of any size. Certain solvers may limit problem size at the request of their developers. There are also practical limitations on problem size imposed by the speed of the network connection and by the resources (memory and disk) of the computers that the NEOS Server uses to run AMPL and solvers. Such limitations are not easily translated, however, into limits on problem characteristics such as numbers of variables and constraints. For any particular problem type, some experimentation will probably be necessary to determine how large an instance of that type the NEOS Server can handle.

  2. Can I run commercial applications on the NEOS Server?
    Yes. Being a free service, however, the NEOS Server makes no guarantees with respect to speed or availability. We thus recommend the NEOS Server mainly for teaching, prototyping, and benchmarking. For large or critical applications, you will probably do better to install AMPL and solvers at your own site.

  3. When running AMPL locally, how do I tell the Kestrel client program where to find the remote solvers?
    Kestrel automatically locates the current NEOS Server, and the Server takes care of locating each individual solver. Thus you don't need to tell the NEOS Client specifically where the remote solvers are located.

  4. How do I stop the NEOS job that I'm currently running?
    If you are running AMPL locally and solving remotely via Kestrel, see the instructions above for managing Kestrel runs. If you are running both AMPL and the solver remotely through the NEOS Server, see the Server's Kill Job instructions.

More about the NEOS Server

The Network-Enabled Optimization System Server (NEOS Server) is a project of the Optimization Technology Center (OTC) of Northwestern University and Argonne National Laboratory.

The NEOS Server uses the computational and algorithmic resources of OTC collaborators to provide optimization services via the Internet. Users are able to apply state-of-the-art optimization software to solve optimization problems without downloading and linking code. The Server thus demonstrates that the Internet can be used as a computational as well as an informational resource.

More about NEOS Server and its components may be found in the following articles:

The following survey describes a variety of NEOS extensions, OTC projects, and other initiatives for using the Internet in optimization:


The AMPL/NEOS interface has been developed under the auspices of of the Optimization Technology Center of Argonne National Laboratory and Northwestern University.

The remote AMPL/remote solvers facility has been created by Jorge Moré (Argonne), with assistance from David Gay (Bell Laboratories) and Robert Fourer (Northwestern).

The Kestrel local AMPL/remote solvers facility has been created by Elizabeth Dolan, Jean-Pierre Goux, and Todd Munson, in collaboration with Robert Fourer and Jorge Moré.

Comments or questions?
Write to
info@ampl.com or use our comment form.

Return to the AMPL home page.