Registering your solver

You need to create an XML document describing your solver to NEOS. These four sections need to be bracketed by the XML SolverDescription tags.

The XML description can be broken down into three parts.

<neos:SolverDescription xmlns:neos="http://www.mcs.anl.gov/neos">
  1. Identify your solver.
  2. Describe the input types.
  3. Designate machines to run your solver.
</neos:SolverDescription>


Identifying your solver
You need to identify your solver.  This includes the name of your solver, what category your solver falls into, what input format it will take, some basic information on your solver, and who to contact for more information.  This section contains the following tags (must be in order):
TAG
NECESSITY
VALUE
<neos:category>
required
lp, nlp, milp, nco, etc.
<neos:solver>
required
The name of your solver (loqo, fortmp, etc.)
<neos:inputMethod>
one or more required
AMPL, GAMS, MPS, C, FORTRAN, etc.
<neos:password>
required
This is required to prevent others from editing your solver.  This will be sent in plain text, DO NOT use any existing password you want to remain secret.
<neos:contact>
required
your email address
<neos:abstract>
optional
Information about your solver. You can use HTML code to describe your solver, but you need to bracket in a  <![CDATA[ and ]]> character data tag.
<neos:link>
optional
Provide a link to a web page.  This page can be your home page, a site describing your solver, a page in the NEOS guide describing the solver category, or any other publically available URL.

Describing the Input
You need to define the input that the user needs to provide for your solver, these can be textboxes, textfields, radio buttons, checkboxes, or files.   Whichever input widget is used, the values for all the inputs will be saved as files, tarred into one file, and sent to the host designated to run the solver (See the next section "Designating Machines" for more information on this).  Each input widget can have the following tags:
<neos:token>
required
The name of this input.  This is the name of the XML tag that will be used when submitting a job via XML-RPC or email.  When using the web submission form, kestrel, or the Java submission tool, the token name will be hidden from the user.
<neos:filename>
required
This indicates the name of the file that the value of the input will be stored in.  When writing the driver to run your solver, you need to read this file to get the desired value
<neos:prompt>
optional
The prompt that the user will see when using the web submission form or the Java submission tool.
<neos:help>
optional
A message to explain what the input is used for and any instructions for the user. You can use HTML code to describe your solver, but you need to bracket in a  <![CDATA[ and ]]> character data tag.
<neos:default>
optional
The default setting for this option.  Not applicable for radio buttons or files.

The TYPE attribute is used to determine the type of input required from the user by the solver.  The choices are
Details and examples of the input types can be found here.

Designating Machines

When you make a solver available on NEOS, you must also provide at least one workstation for the solver to run on (NEOS has been tested on workstations running Linux, Solaris, and Windows XP).  A <neos:machine> tag is used for each workstation you want the solver to be able use.  This tag has the following elements:
<neos:hostname>
required
The complete name of the workstation (e.g. 'newton.mcs.anl.gov').
<neos:user>
required
The account on the machine that the jobs will run as.
<neos:maxjobs>
optional
The maximum number of jobs from this solver that will run on this machine.  To limit the total number jobs from all solvers, you need to use the --maxjobs option when starting the SolverDaemon in step 6. (default 5)
<neos:time_limit>
optional The maximum cpu time (in seconds) for each job.  If this time is exceeded then the job will be terminated and an appropriate message returned to the user.  Not available on Windows workstations. (default 172800)
<neos:mem_limit>
optional
The maximum memory available (in bytes) for each job.  If this limit is exceeded then the job will be terminated and an appropriate message returned to the user.  Not available on Windows workstations. (default 10,000,000)
<neos:file_limit>
optional
The maximum number of files that can be created by each job.  If this limit is exceeded then the job will be terminated and an appropriate message returned to the user.  Not available on Windows workstations. (default  100)
<neos:priority>
optional
If desired, you can designate some of the machines as 'short' priority and others as 'long'.  This will provide two separate queues for your solver so that several large jobs can be submitted without tying up all of the available machines. (default long)

Creating Examples/Test Cases
When creating a solver for NEOS, you will probably want to provide at least one example submission.  These example provide three purposes:
  1. They allows an easy way for you and the NEOS staff to see if your solver is running correctly.
  2. They provides a template for users who want to use your solver.
  3. NEOS will run these example periodically and send email to you if your solver or one of your machines is not getting results.
You can create an example for your solver and submit it to NEOS using the SolverTools/registerExample.py command

@NEOS_WEB_DISCLAIMER@