OS as a framework for optimization systems
Optimization Services is a framework that specifies how a set of cooperative classes and interfaces should be designed and implemented in order to solve an optimization problem. The Optimization Services framework has the following properties:
- It consists of multiple classes or components, each of which may provide an abstraction of some particular optimization concept.
- It defines how these abstractions work together to solve an optimization problem.
- Its optimization-related components are reusable, which is what makes Optimization Services a good framework, since it provides generic behavior that many different types of OR applications can use.
- It organizes patterns at a higher level. By “pattern” we mean a tried and true way to deal with an optimization process, from the whole context to the problem and to the final solution that appears over and over again. Thus the adopted patterns in the Optimization Services is an effective means of communication between OR software components, therefore bringing order into chaos.
There is a key difference between a library and a framework. A library contains functions or routines that an application or a user can invoke. A framework provides generic, cooperative components that software can follow and extend. Figure 1‑2 shows the difference between a framework and a library. The Optimization Services framework provides a foundation upon which OR applications, software, and libraries are built, whereas an OR library is a piece of software used by other OR applications.
Although Optimization Services is intended to be a standard framework, not a system, we are also developing the optimization system according to this framework and building libraries for other people to more easily put up their OS software and components.