Skip to content

A Julia interface for the NEOS Optimisation Server

License

Notifications You must be signed in to change notification settings

dominpm/NEOSServer.jl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NEOSServer.jl

Build Status codecov

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.

Terms of use

As part of the NEOS Server terms of use, the commercial solvers are to be used solely for academic, non-commercial research purposes.

Installation

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("me@mydomain.com")

# 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, NEOSServer

model = Model() do 
    NEOSServer.Optimizer(email="me@mydomain.com", solver="Ipopt")
end

Note: NEOSServer.Optimizer is limited to the following solvers:

  • "CPLEX"
  • "FICO-Xpress"
  • "Gurobi"
  • "Ipopt"
  • "Knitro"
  • "MOSEK"
  • "OCTERACT"
  • "SNOPT"

NEOS Limits

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.

About

A Julia interface for the NEOS Optimisation Server

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Julia 100.0%