Optimization Services










Optimization Services Representation

The Optimization Services framework is not intended to standardize high level models. The framework only concerns itself with the low level representation communicated between machine and software components. All the instance representations are specified in the XML Schema language.

The most important instance is the representation of an optimization problem. The format of this instance is specified by the Optimization Services instance Language (OSiL). An OSiL instance is usually transmitted from a modeling language environment to a solver.

The OSiL language is the first effort toward a systematic and universal representation of major optimization types. Currently OSiL supports all major optimization types including mixed integer programming, quadratic programming, general nonlinear programming, complementarity problems, optimization with distributed and real-time data, optimization with user defined functions, simulation optimization, cone programming, constraint programming, combinatorial problems, multi-objective optimization, semidefinite programming, linear/nonlinear stochastic programming and networking programming. OSiL is targeted to replace many of the existing (some outdated) standards such as MPS for linear and quadratic programs, and SMPS for linear stochastic programs. One thing to notice is that before OSiL, there is not a standard instance format for general nonlinear programs. Solvers usually take the instance generated from a modeling language, and use the library provided by the MLE to parse the instance.

Besides OSiL, there are other kinds of instances. The Optimization Services result Language (OSrL) specifies the result format of the solver output. It is usually transmitted back from a solver to an MLE. Optimization Services analysis Language (OSaL) specifies the analysis format of the analyzer output. It is usually transmitted from an analyzer to an MLE and helps in discovering solvers in an Optimization Services registry. Optimization Services option Language (OSoL) specifies the option format of solver (or analyzer) algorithm directives.  It is usually transmitted along with an OSiL instance. Optimization Services simulation Language (OSsL) specifies the input and output format of a simulation service. It is usually transmitted between a solver and a simulation engine. It facilitates optimization via simulation where simulations are located in places other than the solver.

Many of the generic and common data structures are specified in the Optimization Services general Language (OSgL). OSgL is then imported by other representation schemas. All the nonlinear functions, operators and operands are specified in the Optimization Services nonlinear Language (OSnL). OSnL is then imported by the OSiL schema for nonlinear optimization extension. The OSnL schema is very comprehensive; over 200 elements are supported. They fall broadly into the following 8 categories:

  • Arithmetic operators such as plus, minus, power, and sum.
  • Elementary functions such as abs, square, log, and exp.
  • Trigonometric functions such as sin, sec, csc, cosh, arctan, and arcsech.
  • Statistical and probability functions such as min, skewness, percentile, covariance and common density, cumulative, and inverse distribution functions.
  • Terminals and constants such as number, string, PI, E, TRUE, INF, and NAN.
  • Optimization related elements such as var, constraint and objective.
  • Logic and relational operators such as lt, geq, and, xor, if, forall, exists, and atLeast.
  • Special elements such as quadratic, userF, sim, xPath, and complements.

OS Representation related OSxL

OSiL (instance)

OSrL (result)

OSoL (option)

OSaL (analysis)

OSeL (entity, also related with OS registry)

OSpL (process, also related with OS registry)

OSbL (benchmark, also related with OS registry)

OSqL (query, also related with OS registry)

OSuL (uri/url, also related with OS registry)

OSsL (simulation)


OSgL (general)

OSnL (nonlinear)

OSlL (linear-deprecated) == LPFML




Individual OSxL