Third-Party Interfaces

Thanks to the many members of the NEOS community, several third-party interfaces exist allowing users to utilize the NEOS Server in additional ways.
The following is a list of these interfaces:

Julia

A third-party Julia interface to the NEOS Server written by Oscar Dowson is available. Currently, the interface is supported in Julia v0.6 only. The NEOS.jl package allows users to submit XML-formatted jobs as in the Python/XMl-RPC interface described above. Furthermore, the package is integrated with JuMP, the modeling language for mathematical optimization in Julia, allowing users to formulate optimization problems in JuMP that can be sent to solvers on the NEOS Server. Currently, only a select number of solvers are supported: CPLEX, Mosek, Symphony, and Xpress.

The following is a simple example of using the CPLEX solver on NEOS via JuMP:

  using JuMP, NEOS
  m = Model(solver=NEOSSolver(solver=:CPLEX, email="me@email.com"))

  # Model definition
  @variable(m, 0 <= x <= 2 )
  @variable(m, 0 <= y <= 30 )

  @objective(m, Max, 5x + 3*y )
  @constraint(m, 1x + 5y <= 3.0 )

  status = solve(m)

Note that an email is required for solvers CPLEX and Xpress.

Further information on Julia and JuMP can be found at:

The NEOS team thanks Oscar Dowson for providing this interface!

R

Interface to NEOS via R are also available via the following packages:

  • The R Optimization Infrastructure (ROI) plug-in: ROI.plugin.neos
  • The XML-RPC Interface to NEOS: rneos

Pyomo

Pyomo is a Python-based open-source software package that supports a diverse set of optimization capabilities for formulating, solving, and analyzing optimization models. Pyomo supports a wide range of problem types and can hook into solvers available on the NEOS server.

Pyomo can be installed via pip with the command

pip install pyomo

. No additional packages are required for NEOS support. Users can then model optimization problems using the Pyomo modeling language and pass the problem to solvers on NEOS. The following is an example of calling

CPLEX

on the NEOS server:

   from pyomo import environ as pym
   import os

   # provide an email address
   os.environ['NEOS_EMAIL'] = 'email@address'

   # formulate optimization model
   model = ...
   solver_manager = pym.SolverManagerFactory('neos')
   results = solver_manager.solve(model, opt='cplex')

Solver can also be set at the command line. If

myModel.py

is a file containing the Pyomo model only, then the command:

pyomo solve --solver=cplex --solver-manager=neos myModel.py

will send your model to

CPLEX

on the NEOS solver.

Further information on Pyomo can be found:

OpenSolver

Solvers on the NEOS Server can be accessed via COIN-OR’s OpenSolver, an Excel add-in package. OpenSolver allows access to optimization solvers within a spreadsheet environment.

More information on the NEOS/OpenSolver integration can be found on this page.

SolverStudio

SolverStudio is another add-in for Excel that allows the user to build and solve optimization models in Excel using a number of modeling languages.

Please see SolverStudio & NEOS for more information.

Javascript Client

A Javascript client for the NEOS Server can be found on github: NEOS Server JavaScript Client. With this client, users can access the XML-RPC client of the NEOS server in a browser or Node.js (a Javascript environment that executes outside of a browser). More details can be found at the git repo for this client.

PIFOP

PIFOP (formerly LaModAl) is a web IDE for mathematical programming. This third-party resource allows users to edit optimization models, submit them to NEOS and receive the results in real-time. A sample NEOS project is available here.