The NEOS (Network-Enabled Optimization System) Server is a free internet-based service for solving numerical optimization problems. More than 60 state-of-the-art solvers, both commercial and open source, are available for solving optimization problems in a dozen categories. This page describes the steps involved in submitting a job to the NEOS Server. The process is relatively simple: select a solver, provide a description of the optimization problem in one of the input formats available for the solver, choose a submission interface, submit the job, and receive the results!
Select an appropriate solver for your optimization problem
The available solvers are listed by category here. If you have already have a written formulation of your model, your choice of solver may be somewhat limited by the input formats available for the solvers. If you need help in determining the appropriate category for your optimization model, you can refer to the NEOS Optimization Guide section for the Introduction to Optimization and the Types of Optimization Problems.
Choose an appropriate input format
For the solver that you have selected, choose an appropriate input format (e.g., modeling language, programming language, problem-specific input format) and prepare the model, data and additional (e.g., commands) files as specified.
Select a method of submission for your job
- Web interface: Upload the model, data, and additional files as text files and submit to NEOS from a solver-specific webpage.
- Email interface: Create in plain text an XML document using the solver-specified template and submit to NEOS via email.
- XML-RPC interface: Write a client program to communicate with the NEOS XML-RPC server to submit jobs and retrieve results. The NEOS XML-RPC API is documented here.
- Kestrel: Work within your AMPL or GAMS modeling environment to submit jobs to NEOS and retrieve results. Documentation is available here.
Submit your job to the NEOS Server
When the NEOS Server receives the submission, it assigns a job number and a password and it queues the job for scheduling on one of the machines. When the job is received by a machine, the submission is unpacked, the driver processes the submission, and the optimization code executes.
- The default priority is “long”, which means that the job can run for a maximum of 8 hours. In this case, results will NOT stream; you will receive an email with results when the job completes or you can access the results using the job id and password from NEOS Admin page. If the job times out before completion, you WILL NOT RECEIVE ANY RESULTS; for any long running jobs, we recommend that you set a maximum time limit less than 8 hours so that you will receive results when the job times out.
- The priority can be set to “short”, which means that the job is limited to 5 minutes. In this case, results WILL stream but your job may terminate before the solve is complete.
Receive the results
When the job finishes, the remote machine reports the results to the NEOS Server, which returns to the user via email (for web or email submission) or via the user interface (for XML-RPC or Kestrel).