NEOS Server
This article, NEOS Server, has recently been created via the Articles for creation process. Please check to see if the reviewer has accidentally left this template after accepting the draft and take appropriate action as necessary.
Reviewer tools: Inform author |
Comment: WP:NOTGUIDE - WP is not a user manual. LaMona (talk) 00:39, 25 February 2016 (UTC)
Comment: Because of the way that some of the references are formatted, they do not permit viewing the original paper. Please improve the formatting of the references so that a future reviewer can view the papers. Robert McClenon (talk) 01:08, 19 February 2016 (UTC)
The NEOS Server is a free internet-based service for solving mathematical optimization problems. Since 2011, the NEOS Server has been hosted by the Wisconsin Insitute for Discovery at the University of Wisconsin in Madison. The NEOS Server provides access to more than 60 state-of-the-art solvers -- commercial, free, and open source -- in more than a dozen optimization categories, including linear programming, integer programming, and nonlinear optimization. The NEOS Server was developed in 1996 by the Optimization Technology Center of Argonne National Laboratory and Northwestern University.
Most of the solvers accept optimization problems in AMPL and/or GAMS format and some accept LP format, MPS format or other solver-specific format. The NEOS Server offers a variety of interfaces for submitting jobs to the solvers; users can submit jobs via a web interface, email, XML-RPC, Kestrel, or third-party submission tools. Solvers hosted by the University of Wisconsin in Madison run on distributed high-performance machines enabled by the HTCondor software; remote solvers run on machines at Argonne National Laboratory, Arizona State University, the University of Klagenfurt in Austria, and the University of Minho in Portugal.
The NEOS Server is designed to provide easy access to state-of-the-art optimization software to enable users around the world to leverage the power of optimization technology and to enhance the impact of optimization on science, engineering and society.

Background
The NEOS (Network-Enabled Optimization System) project was launched in late 1994 by researchers at Argonne National Laboratory and Northwestern University. Not too long after the World Wide Web exploded into popular consciousness, the researchers were interested in exploring how to use the internet as a means of sharing existing, and growing new, optimization software resources.[1] The motivation of the NEOS project was to provide users with the information to formulate their problems correctly and choose appropriate solution software and with easy access to a wide collection of state-of-the-art optimization software without the delays and expenses of buying and installing software and hardware. The NEOS project included three components, the NEOS Server, the NEOS Guide, and NEOS tools.
- The NEOS Server, the centerpiece of the project, is the name of the service for solving optimization problems remotely over the internet.[2][1][3] When an incoming job is received, the NEOS Server schedules it on one of the available workstations that can handle problems of the type in question and activates the solver on the chosen host. The NEOS Server relays intermediate results and runtime messages to the user and returns the final job results. The NEOS Server went live in 1996.
- The NEOS Guide, a complementary website to the NEOS Server, is a collection of informational and educational material about optimization. The original NEOS Guide included a guide to optimization software, thumbnail sketches of algorithms for different optimization problems, several case studies, FAQs for linear and nonlinear programming, and collections of test problems and technical reports. The current NEOS Guide website builds on the original, showcasing an expanded collection of optimization case studies and supplying documentation on the NEOS Server resources. For new users, there is a User's Guide to the NEOS Server.
- NEOS Tools was a library of freely available optimization software written by NEOS project researchers. Some of the tools still exist as solvers available on the current NEOS Server.
Structure
The NEOS Server is an internet-based client-server application that provides access to a library of optimization solvers. The server is designed to accept problems from users over the internet from a web form, email, XML-RPC, Kestrel, or some third-party tools. The server locates the appropriate solver in the library and submits the user's data to a solver-specific script. Each solver-specific script checks the input for consistency, produces any additional necessary information, executes the solver, and collects any generated results.[4] The server then returns the results to the user.
The developers of the NEOS Server designed the job submission process to be relatively simple: a user selects a solver, provides a description of the optimization problem in one of the input formats available for the solver, chooses a submission interface, submits the job, and receives the results!
Solvers and Input Formats
The NEOS Server offers access to more than 60 optimization solvers in more than a dozen categories (listed below). The NEOS Guide website provides two references, “Introduction to Optimization” and the “Types of Optimization Problems”, to guide users in the selection of an appropriate solver.
The NEOS Server offers a broad range of input formats including modeling languages, programming languages, and problem-specific input formats, however, not all input formats are available for all solvers. Most of the linear programming, integer programming and nonlinear programming solvers accept input from AMPL and/or GAMS. The broad range of input formats enables users to write their optimization models in a convenient way that supports rapid prototyping of solution methods.
Submission Methods
A key feature of the NEOS Server is the number of the methods for submitting jobs to the service. While email submission was a novel concept when the service was introduced, the XML-RPC interface and the web interface are the most popular now. In 2015, XML-RPC and web submission accounted for more than 90% of the total submissions, according the statistics available on the NEOS Server website. The XML-RPC interface in particular enables users to exploit the available computational resources from within their own application programs.
- Web submission interface: Users upload the model, data, and additional files as text files and submit to NEOS from a solver-specific webpage.
- Email interface: Users create in plain text an XML document using the solver-specified template and submit to NEOS via email. The required XML template for each solver is provided on the NEOS Solvers page.
- XML-RPC interface: Users 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 on the NEOS Guide website and sample client programs for Java and Python are included.
- Kestrel[5]: Users work within their own AMPL or GAMS modeling environment to submit jobs to NEOS and retrieve results.
- Third Party Submission Tools: Several tools have been created independently by developers around the world to allow users to access the NEOS solvers from within the tool, including SolverStudio for Excel, OpenSolver, and Pyomo.
Job Execution and Results
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. NEOS uses the HTCondor software to schedule and manage the workload on a dedicated cluster of computers. When a job is received by a machine, the submission is unpacked, the driver processes the submission, and the optimization code executes.
The NEOS Server limits the amount of time and memory available for a job in order to ensure that the resources are available to many users. The default maximum time limit is 8 hours. When executing a long running job, NEOS does not stream results but users can elect to receive an email with results when the job completes or access the results using the job id and password from NEOS Admin page. If the job times out before completion, no results are returned to the user. The NEOS Server also offers a short priority, which means that the job is limited to 5 minutes. When executing a short running job, NEOS does stream results but a job may terminate before the solve is complete.
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).
Types of Available Solvers
The NEOS Server provides access to solvers in the following optimization categories and more.
- Bound Constrained Optimization: solvers for nonlinear optimization problems that are constrained only by bounds on the variables
- Combinatorial Optimization: solvers for specific problems such as the Traveling Salesman Problem
- Complementarity Problems: solvers for optimizing a function of two vector variables subject to constraint(s) including the requirement that the inner product of the two vectors must equal zero
- Global Optimization:solvers for optimizing a general nonlinear function with the goal of finding the global minimum or maximum value
- Linear Programming: solvers for optimizing a linear objective function subject to linear equality and linear inequality constraints
- Mixed Integer Linear Programming: solvers for optimizing a linear program in which some or all of the variables are restricted to be integers
- Mixed Integer Nonlinearly Constrained Optimization: solvers for nonlinear optimization problems in which at least some of the variables are restricted to discrete values
- Nonlinearly Constrained Optimization: solvers for optimization problems in which some of the constraints and/or the objective function are nonlinear
- Semidefinite Programming: solvers for optimizing a linear objective function over the intersection of the cone of positive semidefinite matrices with an affine space
- Stochastic Linear Programming: solvers for optimizing problems in which some of the data incorporated into the objective function or constraints is uncertain
- Second Order Cone Programming: solvers for convex optimization problems that include second-order cone constraints
- Semi-Infinite Optimization: solvers for optimization problems with a finite number of variables and an infinite number of constraints or with an infinite number of variables and a finite number of constraints
- Unconstrained Optimization: solvers for optimizing a function whose feasible region is not constrained
References
- ^ a b Czyzyk, Joseph; Owen, Jonathan H.; Wright, Stephen J. (1997). "Optimization on the Internet". OR/MS Today. 24 (5): 48-51.
- ^ Czyzyk, Joseph; Mesnier, Michael P.; Moré, Jorge J. (1998). "The NEOS Server". IEEE Journal on Computational Science and Engineering. 5 (3): 68 - 75.
- ^ Dolan, Elizabeth D.; Fourer, Robert; Moré, Jorge J.; Munson, Todd S. (2002). "Optimization on the NEOS Server" (PDF). SIAM News. 35 (6): 8-9.
- ^ Ferris, Michael C.; Mesnier, Michael P.; Moré, Jorge J. (2000). "NEOS and Condor: Solving Nonlinear Optimization Problems over the Internet". ACM Transactions on Mathematical Software. 26: 1–18.
- ^ Dolan, Elizabeth D.; Fourer, Robert; Goux, Jean-Pierre; Munson, Todd S.; Sarich, Jason (2008). "Kestrel: An Interface from Optimization Modeling Systems to the NEOS Server" (PDF). INFORMS Journal on Computing. 20 (4): 525 - 538.
External Links
- NEOS Server: official site of the NEOS Server
- NEOS Guide: official site of the NEOS Guide, a companion website to the NEOS Server
- NEOS Server FAQ: answers to common questions and solutions for common problems that arise when using the NEOS Server
- User's Guide to the NEOS Server: an introductory guide to using the NEOS Server
This article, NEOS Server, has recently been created via the Articles for creation process. Please check to see if the reviewer has accidentally left this template after accepting the draft and take appropriate action as necessary.
Reviewer tools: Inform author |