Optimization Services









OS FAQ (Frequently Asked Questions)

There is also an editable OS FAQ site at the OS Developer Site. Please click here to edit.

What is Optimization Services (OS)?

Optimization Services framework is an XML-based, service-oriented, optimization-centered, distributed and decentralized architecture.

Software-as-a-service is radically changing the traditional software model. Companies are experiencing tremendous savings by using enterprise application software on an as-needed basis rather than purchasing and installing the software. There is no reason why optimization should not be available as a software service. Optimization Services (OS) is a project designed to make access to powerful optimization solvers as simple and ubiquitous as access to a network connection or electricity. In order to make optimization-as-service work, it is necessary to have a robust service oriented architecture (SOA) to link all parts of the system, including modeling languages, solvers, schedulers, and data repositories. This is especially true when the modeling language software, solver software, and data used to generate a model instance reside on different machines, in different geographical locations, and use different operating systems. Some major issues that OS is concerned are for example: 1) represent optimization problem instances, problem solutions, and solver options; 2) facilitate communication between solvers and clients that use the solvers; and 3) allow clients that use optimization solvers to discover their existence over the network. See the Optimization Services Home for more details.

What is Optimization Services Protocol (OSP)?

A protocol is an agreed upon format for transmitting data between two devices, hardware or software. The Optimization Services Protocol determines how optimization related data are represented and communicated between two Optimization Services compatible software components. Just like the Internet Protocol (IP), OSP can also be used by organizations sharing private networks. OSP is a rapidly evolving set of standards that consists of over 20 sub-protocols, all described by an abbreviation of in the form of “OSxL”, meaning some Optimization Services x Language. For example, OSiL stands for Optimization Services instance Language, which is a language expressed in XML to specify the structure and format of general optimization instances. As a core of the Optimization Services framework, OSP has great promise for the world of Operations Research applications, optimization systems and distributed computing.

What is Optimization Services licensed under?

OS is written in multiple languages including C/C++, Java, .net and are released as open source code under the Common Public License (CPL).

Where do I get OS sources and binaries?

Either you can go to Optimization Services Home and click the download link on the top of the page, or you can go to the Optimization Services Developer Site and scroll to the "Background/Download" section.

Where do I get more information on Optimization Services

1. The official site is at Optimization Services Home. It contains the following information:

- overview and introduction of Optimization Services

- standards in the Optimization Services framework

- products offered by or related with Optimization Services

- services offered by, related with, or hosted by Optimization Services

- publication (papers, presentations), conferences, schedules

- related research, related sites, contact information

2. There is also the OS developers' site hosted at COIN-OR Web site. The developer webpages are based on Wiki, which allows webusers (mainly developers) to modify the content to correct typos, add information, or share their experience and tips with other users. You are welcome to contribute to these project webpages. To edit these pages or submit a ticket you must first register and login. It contains the following information

- editable Wiki page that contains major information for developers (along with page revision history)

- editable Wiki FAQ page that contains answers to frequently asked questions

- register and login

- timeline that shows detailed development activities of Optimization Services

- roadmap that contains major milestones of Optimization Services

- browsing source code of Optimization Services

- view and submit tickets, report bugs

- using and configuring "trac", the Web system technology that enables the OS developer site

Where do I get OS-related documentation?

Go to Optimization Services (OS) Home Site and click on publication from the main menu. The publication site contains documents for researchers, developers, and regular users. Documents include papers and presentations, FAQs, API docs and other related references.

How do I view XML documents?

XML files are plain text files. Any text editor should open the XML-based OSxL files included in the Optimization Services framework. Web browsers such as Internet Explorer and Firefox have some native view support for XML files, such as coloring sheme and expansion/collapse features. If an XML file is shown as only plain text in your browser, it may be because the file does not have a .xml extension. Either rename the file to have a .xml extension or register the file's original extension as an xml file type in your browser.

Moreover, there are numerous XML authoing tools, free or commerical, on the Web. XML Authoring tools assist in viewing, editing XML documents or validating XML syntaxes. XML documents can be XML Schemas as well as regular XML instances. The Optimization Services project, for example, uses Altova’s XML Spy and Progress Software’s Stylus Studio. Both XML Spy and Stylus Studio are comprehensive IDEs for developing XML projects. They provide efficient and flexible environments for creating and editing XML Schemas, XML instances, XQuery and XSLT style sheets. This OS papers and presentations mostly uses both XML Spy’s text view and graphical view for design illustrations.

Why do we need Optimization Services?

The research in Optimization Services is technologically timely. In the areas of Computer Science and Electrical Engineering, distributed technologies such as XML and Web services are growing rapidly in importance in today’s computing environment and are already widely accepted as industrial standards. It is our vision that by combining Operations Research and modern computing technologies, Optimization Services will make a wider audience aware of, and benefit from, an increasing amount of OR software that is implemented increasingly well.

The advent of Optimization Services is also timely with the current efforts undertaken by the Operations Research and Management Sciences community to market the area as the Science of Better, to promote practice and to create demand. Through standardization of modeling representation, communication, discovery and registration, the framework provides an open infrastructure for all optimization system components including modeling language environments, servers, registries, communication agents, interfaces, analyzers, solvers and simulation engines.

What is the goal of Optimization Services?

The goal is that all the algorithmic codes will be implemented as services under this framework and customers use these computational services similar to daily utility services (therefore the name Optimization Services). Special knowledge of optimization algorithms, problem types, and solver options required of users should be minimized. A supply chain modeler, for example, should just concentrate on writing a good supply chain model. Everything else that involves detecting the problem structure, finding the right solver, invoking the software, solving the instance, providing the computing resources and presenting the solution should be automatically taken care of by Optimization Services. It is the combination of distributed system embedded intelligence, smooth coordination of all the tasks, and effortless human involvement in the whole seamless integration process that makes Optimization Services unique and significant.

What is Optimization Services instance Language (OSiL)?

OSiL (Optimization Services instance Language) is an XMLbased computer language for representing instances of large-scale optimization problems, including linear programs, mixed-integer programs, quadratic programs, very general nonlinear programs and many extensions. OSiL has two key features that make it much superior to current standard forms for optimization problem instances. First, it uses the object-oriented features of XML schemas to efficiently represent nonlinear expressions. Second, its XML schema maps directly into a corresponding in-memory representation of a problem instance, called OSInstance. The in-memory representation provides a robust application program interface for general nonlinear programming, facilitates reading and writing postfix, prefix, and infix formats to and from the nonlinear expression tree, and makes the expression tree readily available for function and derivative evaluations.

Click here to see the OSiL.xsd XML schema

What is the difference between "model" ("modeling language") and "instance"

In short: modeling languages are high level and instances are low level. model + data -> instance

Examples of modeling languages are AMPL, Lingo, GAMS. Examples of instances are OSiL, MPS, CPLEX-LP, Lindo-InstructionList?.

In detail:

Models expressed in mathematical programs should have the following common characteristics: - Symbolic. They represent most of the problem data by symbols, which are usually mnemonic in nature. - General. They can define an entire class of mathematical programs together, each particular mathematical program corresponding to some choice of data. - Concise. They describe a mathematical program nearly as briefly as possible, in such a way that the description’s length depends on the complexity of the model rather than on the quantity of data or on particular data values. - Understandable. They present a mathematical program in a form that is easily read and comprehended by people.

Instance representations are distinctly different from models expressed in mathematical programs in that they are: - explicit rather than symbolic – they incorporate numerical problem data directly in the model; - specific rather than general – they describe just one particular mathematical programs; - redundant rather than concise – they describe a mathematical program more extensively than necessary, and the length of their description depends on the number and size of the data values; - convenient rather than understandable – they organize a mathematical program so that it can be stored and operated upon most efficiently by the computer.

What is Optimization Services result Language (OSrL)?

OSrL (Optimization Services result Language) is a general optimization result format specification, mainly outputted by solvers. OSrL can be considered as the conterpart of OSiL (Optimization Services instance Language). OSiL is the input for optimization solvers and OSrL is the output. OSrL is among the OSxL whose contents need to be understood by humans most frequently. Transformation style sheets can be used to allow OSrL to be presented in a clear and nice form. Of course as OSrL is well structured, it can also be analyzed and reused in the middle of a large computation where sub-problems are constantly solved and results are resubmitted for subsequent calculations. The structure and contents of OSrL is based on and driven by the OSiL design. But compared with OSiL, OSrL is more straightforward. The separation of OSrL from OSiL helps in enhancing modularity, flexibility and extensibility, among other benefits.

Click here to see the OSrL.xsd XML schema

What is Optimization Services option Language (OSoL)?

OSoL (Optimization Services option Language) is a general optimization option format specification mainly for solver algorithm directives and service parameters. OSoL and OSiL are usually paired as the input to an optimization solver or solver service. OSoL is probably the OSxL least able to be standardized as different solvers have different options and even if the optional names are the same, they are used differently. If the OSoL option is missing, default options are assumed by the solvers or solver services. OSoL can also potentially be used to discover a solver in the OS registry if a user requires a solver to support a specified option. The separation of OSoL from OSiL helps in enhancing modularity, flexibility and extensibility, among other benefits.

Remember OSoL takes a minimal approach to standardize solver or algorithm related options. OSoL is built in a very extensible way so that custom options can be added easily.

On the other hand OSoL has a complete set of service related options to facilitate optimization over the distributed system.

Click here to see the OSoL.xsd XML schema

What is Optimization Services hook-up Language (OShL)?

Communication is always between two components; therefore both the client and the service have to follow certain rules. The rules are specified in the OShL.wsdl document. OShL (Optimization Services hook-up Language) is a Web Service Definition Language for invoking solver/analyzer services. OShL makes use of Web service standards to facilitate synchronous ("solve") and asynchronous ("send") optimization via the Internet. OShL has built-in features to maintain states ("getJobID") between subsequent service invocations, and to remotely "knock", "kill", and "retrieve" optimization jobs from the services.

Click here to see the OShL.wsdl WSDL document