Jars Top 5%
Home Next

Introduction - Version 1.2.4

OR-Objects is a collection of 500 Javatm classes for developing Operations Research, Scientific and Engineering applications. It contains data structures and algorithms for developing problem specific solutions as well as implementations of classical algorithms. OR-Objects is divided into packages of related classes which makes finding classes easier and improves the clarity of the documentation.
 
OR-Objects Packages
Package
Package Path
OR
Algorithms
Utilities
Containers
drasys.or
drasys.or.alg
drasys.or.util
drasys.or.cont
Mathematical Programming
Linear Programming
I/O Utilities
drasys.or.mp
drasys.or.mp.lp
drasys.or.mp.util
Graph
Shortest Path
Coloring
Traveling Salesman Problem
Vehicle Routing Problem
TimeWindows
drasys.or.graph
drasys.or.graph.sp
drasys.or.graph.color
drasys.or.graph.tsp
drasys.or.graph.vrp
drasys.or.graph.tw
Matrix
Complex
drasys.or.matrix
drasys.or.matrix.complex
Linear
Blas
Algebra
drasys.or.linear
drasys.or.linear.blas
drasys.or.linear.algebra
 Nonlinear
drasys.or.nonlinear
Probability
drasys.or.prob
Statistics
Regression/GLM
drasys.or.stat
drasys.or.stat.model
Geometry
Geographic
Rectangular-2
Rectangular-3
Projections
drasys.or.geom
drasys.or.geom.geo
drasys.or.geom.rect2
drasys.or.geom.rect3
drasys.or.geom.geo.proj

Design Philosophy

OR-Objects is designed to provide a foundation of reusable objects to speed the development of Operations Research applications and make them more reliable. Today many Operations Research applications are developed from 'scratch' to solve a specific problem without the benefit of a foundation of tested software. This is time consuming and expensive due to the complexity and thorough testing that is required of  OR applications. By simply reusing the many proven classes in OR-Objects, developers can build OR applications more efficiently and the applications will be more reliable.

Two Roles
It was realized from the start that for OR-Objects to be accepted it had to be immediately useable and at the same time provide the depth and flexibility required for advanced applications. OR-Objects can be put to use immediately because all of the components are complete and the options default to values that work in most cases with no changes. Many classes can be used after learning only a few features.

Flexibility
OR-Objects provides depth and flexibility through the extensive use of  interfaces to abstract algorithms and data structures. All algorithms use only these interfaces when accessing internal objects and this allows developers to substitute an object that provides new functionality. One example of an abstracted data structure is the PriorityQueueI interface which abstracts the features of a priority queue,  the BinaryHeap class is one implementation. An example of an algorithm interface is SingleVertexI which abstracts the features of a single vertex shortest path algorithm, the Dijkstra class is one implementation of it.

Extensibility
Another way OR-Objects uses interfaces to achieve flexibility is by accessing user objects only through  intermediate objects that are user definable. This allows developers to extend the data types that an algorithm uses by developing a specialized object for the operation. An example of this can be seen in the heap implementations where the CompareI interface is used to compare two priority objects. The default comparison object is CompareNumber but a developer can select another OR-Objects comparison or develop their own.

Why Javatm ?

Javatm was selected because it is platform independent and provides a rich environment for application development. The data structures and algorithms used in OR applications have a large impact on performance and using Java will make efficient components more widely available and easier to use.


In Association with Amazon.com

In Association with Amazon.com
Copyright (C) 1997-2000 by DRA Systems all rights reserved.