The NEOS Server is a free internet-based service for solving numerical optimization problems. It is able to take models specified in a variety of formats and pass them to a range of both free and commercial solvers.
See here for the full list of solvers and input formats that NEOS supports.
NEOS is particularly useful if you need to trial a commercial solver to determine if it meets your needs.
Install NEOSServer.jl using the package manager:
import Pkg Pkg.add("NEOSServer")
The NEOS API
This package contains an interface for the NEOS XML-RPC API.
The following example shows how you can interact with the API. Wrapped XML-RPC
functions begin with
neos_ and are exported.
using NEOSServer # Create a server. You must supply a valid email: server = NEOSServer.Server(email="firstname.lastname@example.org") # Print the NEOS welcome message: println(neos_welcome(server)) # Get an XML template: xml_string = neos_getSolverTemplate(server, "milp", "Cbc", "AMPL") # Modify template with problem data... # Submit the XML job to NEOS: job = neos_submitJob(server, xml_string) # Get the status of the Job from NEOS: status = neos_getJobStatus(server, job) # Get the final results: results = neos_getFinalResults(server, job)
Use with JuMP
Use NEOSServer.jl with JuMP as follows:
using JuMP, NEOSSServer model = Model() do NEOSServer.Optimizer(email="email@example.com", solver="Ipopt") end
NEOSServer.Optimizer is limited to the following solvers:
NEOS currently limits jobs to an 8 hour timelimit, 3Gb of memory, and a 16mb submission file. If your model exceeds these limits, NEOSServer.jl may be unable to return useful information to the user.