AMPL Remote Access

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

Invoke solvers on the NEOS server
from your local AMPL session

Remote solvers available

Remote AMPL with remote solvers

Local AMPL with remote solvers

Frequently Asked Questions

More about the NEOS Server


AMPL and the NEOS Server

AMPL users have the opportunity to compare alternative optimization methods for an application, by taking advantage of the large and growing collection of solvers for which AMPL interfaces are available. This opportunity can be more apparent than real, however, when considerable time and cost are required to separately obtain and install each solver to be tested.

To simplify the work of comparing and testing solvers, we have undertaken a project 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 either of the AMPL Remote Access interfaces described below. For more information, follow the links from the solver names to their entries in the NEOS Optimization Software Guide.

Additional solvers are to be provided. Developers of commercial solvers who want to make demonstration versions available through AMPL Remote Access should contact Prof. Robert Fourer, 4er@iems.northwestern.edu or +1 847-491-3151.

Remote AMPL with remote solvers

This facility lets you send an AMPL "job" to the NEOS Server's remote computer. A job consists of an AMPL model file, plus optionally an associated data file, plus optionally a "script" or "run file" of AMPL commands. All computation is done on the remote computer, and AMPL output resulting from the job is returned via your web browser and/or an e-mail message.

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:

Included in the instructions are directions for sending your files to the NEOS Server. Two methods of communication are currently supported: Additional methods and interfaces are under development. Comments and suggestions are welcomed by the staff of the NEOS Server project.


Local AMPL with remote solvers

In this mode of operation, you run your own copy of AMPL on your own computer. Instead of specifying a solver installed on your computer or local network, however, you invoke a NEOS Client program to send your problem to a solver running on the NEOS Server's remote computer. The results from the NEOS Server are returned through the NEOS client to AMPL, where you can view and manipulate them locally in the usual way. Thus you get all the benefits of using AMPL environment to test solvers, without having to first obtain and install each solver.

The NEOS Client is currently out of service while it is rewritten to use CORBA communications for greater stability and portability. Release of the new version is planned for Summer 2000.

Downloading and installing the NEOS Client

To get started using this feature, you must obtain the NEOS Client, a C program that is freely available. Currently this program is available for downloading in the form of executables for the following Unix workstation environments: Installation is simply a matter of naming the downloaded file neos_client, moving it to a directory in your search path, and making it executable (via the Unix command chmod +x neos_client).

Executables for other computing environments are under development. If you could make use of another form of executable, let us know by writing to neos-comments@mcs.anl.gov.

Using AMPL with the NEOS Client

You specify a remote solver via the NEOS Client in much the same way as a local solver. Here is how you would a typical AMPL/NEOS session, using MINOS as the remote solver:
     ampl: model steel.mod;
     ampl: data steel.dat;
     ampl: option solver neos_client;
     ampl: option neos_solver minos;
     ampl: option neos_client_oopt g;
     ampl: option send_suffixes 0;
     ampl: solve;
When the solve command is given, the option solver tells AMPL to invoke NEOS Client, and the option neos_solver tells the NEOS Client to use MINOS as its remote solver. (The option neos_client_oopt is set to g to select ASCII format for the AMPL problem and solution files, since the default binary format is not yet supported by the NEOS Client.)

After the NEOS Client is invoked by solve, it establishes communication with the NEOS Server, sends the AMPL problem file to the remote solver, and waits until the AMPL solution file is sent back. Its progress is reported by messages like the following, but with machine.domain.net replaced by the internet location of your own computer:

     machine.domain.net#0:c0:t2:p28356: Registered: 292
     machine.domain.net#0:c0:t3:p28356: Problem 0 queued.
     machine.domain.net#0:c0:t4:p28356: Problem 0 started.
     machine.domain.net#0:c0:t5:p28356: Problem 0 solving.
     machine.domain.net#0:c0:t6:p28356: Problem 0 result.
The NEOS Client 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:
     machine.domain.net#0:c0:t0:p28356: Unregister sent.
     MINOS 5.4: optimal solution found.
     2 iterations, objective 192000
That's it! You 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 MINOS. Subsequent uses of the solve command will continue to invoke a remote solver, until you change the option solver or conclude the AMPL session.

Minor notes: The option setting send_suffixes 0 is needed to work around a temporary incompatibility involving only very new versions of AMPL. If the command option version shows your AMPL version to be earlier than 19980202, then you should be able to do without this setting.

To avoid having to set the AMPL options neos_client_oopt and send_suffixes at every session, you can instead define Unix environment variables having the same names and settings. AMPL copies all of the Unix environment settings each time a session is begun.

Specifying solvers for the NEOS Client

You choose a remote solver by setting the AMPL option neos_solver to the solver's name. The following solvers and settings are currently recognized:

  • DONLP2 (Nonlinear)
  • option neos_solver donlp2;
  • LANCELOT (Nonlinear)
  • option neos_solver lancelot;
  • LOQO (Linear, Quadratic, Nonlinear)   
  • option neos_solver loqo;
  • MINOS (Linear, Nonlinear)
  • option neos_solver minos;
  • SNOPT (Nonlinear)
  • option neos_solver snopt;

    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. For example, to tell MINOS ... , you would execute the following AMPL command prior to solve:

         option minos_options 'crash_option=0 scale=no';
    For summaries of directives for the available solvers, follow the links from their names in the listing above.

    Frequently asked questions

    1. When running AMPL locally, how do I tell the NEOS Client where to find the remote solvers?
      The neos_client program 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.

    2. How do I get a Windows/PC version of the NEOS Client?
      A version for PCs is in the early stages of planning. It will be announced on this page when available.

    3. 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 the largest problem instance that the NEOS Server can handle.

    4. 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 testing. For large or critical applications, you will probably do better to install AMPL and solvers at your own site.

    5. Why do I keep getting a "Could not attach to neos server" error?
      The full error message should look something like this:
      stretto#0:c0:t0:p14022: Could not attach to neos server, exiting.
      If this message begins with a simple machine name (like stretto above) rather than a fully qualified machine name (such as stretto.iems.northwestern.edu) then you are encountering a technical problem with the NEXUS communications software employed by the neos_client program -- keep reading. Otherwise, the server may be down or may be failing for some reason. Please try again later, or report your problem to the NEOS staff.

      You can circumvent the above-mentioned NEXUS technical problem by creating a file named .resource_database in your home directory. Place in this file a line of the form

      machine domain=rest-of-domain-name
      where machine is the name of the computer on which you are running neos_client and rest-of-domain-name is all of the fully qualified machine name except the initial computer name. In the example above, this line would be
      stretto domain=.iems..edu
      If you use a network of computers that access the same home directory, you can put a line for each computer in your .resource_database file.

    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 and its components may be found in the following articles:


    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 local AMPL/remote solvers facility has been created by Jean-Pierre Goux (Northwestern) and Todd Munson (University of Wisconsin), with guidance from Robert Fourer (Northwestern), Jorge Moré (Argonne) and Jorge Nocedal (Northwestern).

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

    Return to the AMPL home page.