Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Optimization Software Class Libraries
Nội dung xem thử
Mô tả chi tiết
Optimization Software Class Libraries
OPERATIONS RESEARCH/COMPUTER SCIENCE
INTERFACES SERIES
Series Editors
Professor Ramesh Sharda
Oklahoma State University
Prof. Dr. Stefan Voß
Technische Universität Braunschweig
Other published titles in the series:
Greenberg, Harvey J. / A Computer-Assisted Analysis System for Mathematical Programming Models and Solutions: A User’s Guide for ANALYZE
Greenberg, Harvey J. / Modeling by Object-Driven Linear Elemental Relations: A Users Guide for
MODLER
Brown, Donald/Scherer, William T. / Intelligent Scheduling Systems
Nash, Stephen G./Sofer, Ariela / The Impact of Emerging Technologies on Computer Science &
Operations Research
Barth, Peter / Logic-Based 0-1 Constraint Programming
Jones, Christopher V. / Visualization and Optimization
Barr, Richard S./ Helgason, Richard V./ Kennington, Jeffery L. / Interfaces in Computer
Science & Operations Research: Advances in Metaheuristics, Optimization, and Stochastic
Modeling Technologies
Ellacott, Stephen W./ Mason, John C./ Anderson, Iain J. / Mathematics of Neural Networks: Models, Algorithms & Applications
Woodruff, David L. / Advances in Computational & Stochastic Optimization, Logic Programming, and Heuristic Search
Klein, Robert / Scheduling of Resource-Constrained Projects
Bierwirth, Christian / Adaptive Search and the Management of Logistics Systems
Laguna, Manuel / González-Velarde, José Luis / Computing Tools for Modeling, Optimization
and Simulation
Stilman, Boris / Linguistic Geometry: From Search to Construction
Sakawa, Masatoshi / Genetic Algorithms and Fuzzy Multiobjective Optimization
Ribeiro, Celso C./ Hansen, Pierre / Essays and Surveys in Metaheuristics
Holsapple, Clyde/ Jacob, Varghese / Rao, H. R. / BUSINESS MODELLING: Multidisciplinary
Approaches — Economics, Operational and Information Systems Perspectives
Sleezer, Catherine M./ Wentling, Tim L./ Cude, Roger L. / HUMAN RESOURCE
DEVELOPMENT AND INFORMATION TECHNOLOGY: Making Global Connections
Optimization Software Class Libraries
Edited by
Stefan Voß
Braunschweig University of Technology, Germany
David L. Woodruff
University of California, Davis, USA
KLUWER ACADEMIC PUBLISHERS
NEW YORK, BOSTON, DORDRECHT, LONDON, MOSCOW
eBook ISBN: 0-306-48126-X
Print ISBN: 1-4020-7002-0
©2003 Kluwer Academic Publishers
New York, Boston, Dordrecht, London, Moscow
Print ©2002 Kluwer Academic Publishers
All rights reserved
No part of this eBook may be reproduced or transmitted in any form or by any means, electronic,
mechanical, recording, or otherwise, without written consent from the Publisher
Created in the United States of America
Visit Kluwer Online at: http://kluweronline.com
and Kluwer's eBookstore at: http://ebooks.kluweronline.com
Dordrecht
Contents
Preface
1
ix
1
2
3
20
23
25
25
26
36
43
49
51
57
59
60
61
65
69
74
77
78
Optimization Software Class Libraries
Stefan Voß and David L. Woodruff
1.1
1.2
1.3
1.4
Introduction
Component Libraries
Callable Packages and Numerical Libraries
Conclusions and Outlook
2
Distribution, Cooperation, and Hybridization for Combinatorial Optimization
Martin S. Jones, Geoff P. McKeown and Vic J. Rayward-Smith
2.1
2.2
2.3
2.4
2.5
2.6
2.7
Introduction
Overview of the Templar Framework
Distribution
Cooperation
Hybridization
Cost of Supporting a Framework
Summary
3
A Framework for Local Search Heuristics for Combinatorial Optimiza- tion Problems
Alexandre A. Andreatta, Sergio E.R. Carvalho and Celso C. Ribeiro
3.1
3.2
3.3
3.4
3.5
3.6
3.7
Introduction
Design Patterns
The Searcher Framework
Using the Design Patterns
Implementation Issues
Related Work
Conclusions and Extensions
vi OPTIMIZATION SOFTWARE CLASS LIBRARIES
81
81
83
85
103
137
146
153
155
177
177
178
179
180
182
186
190
190
193
193
196
198
202
211
215
219
219
221
225
239
249
250
4
HOTFRAME: A Heuristic Optimization Framework
Andreas Fink and Stefan Voß
4.1
4.2
4.3
4.4
4.5
4.6
4.7
Introduction
A Brief Overview
Analysis
Design
Implementation
Application
Conclusions
5
Writing Local Search Algorithms Using EASYLOCAL++
Luca Di Gaspero and Andrea Schaerf
5.1
5.2
5.3
5.4
5.5
5.6
Introduction
An Overview of EASYLOCAL++
The COURSE TIMETABLING Problem
Solving COURSE TIMETABLING Using EASYLOCAL++
Debugging and Running the Solver
Discussion and Conclusions
6
Integrating Heuristic Search and One-Way Constraints in the iOpt Toolkit
Christos Voudouris and Raphaël Dorne
Introduction
One-Way Constraints
Constraint Satisfaction Algorithms for One-Way Constraints
The Invariant Library of iOpt
The Heuristic Search Framework of iOpt
Experimentation on the Graph Coloring and the Vehicle Routing Problem
Related Work and Discussion
Conclusions
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
7
The OptQuest Callable Library
Manuel Laguna and Rafael Martí
7.1
7.2
7.3
7.4
7.5
7.6
Introduction
Scatter Search
The OCL Optimizer
OCL Functionality
OCL Application
Conclusions
8
A Constraint Programming Toolkit for Local Search
Paul Shaw, Vincent Furnon and Bruno De Backer
8.1
8.2
8.3
8.4
8.5
8.6
Introduction
Constraint Programming Preliminaries
The Local Search Toolkit
Industrial Example: Facility Location
Extending the Toolkit
Specializing the Toolkit: ILOG Dispatcher
155
156
161
162
172
174
Contents vii
259
260
263
263
265
269
276
279
290
294
295
296
304
317
319
328
331
335
357
8.7
8.8
Related Work
Conclusion
9
The Modeling Language OPL – A Short Overview
Pascal Van Hentenryck and Laurent Michel
9.1
9.2
9.3
9.4
9.5
9.6
9.7
Introduction
Frequency Allocation
Sport Scheduling
Job-Shop Scheduling
The Trolley Application
Research Directions
Conclusion
10
Genetic Algorithm Optimization Software Class Libraries
Andrew R. Pain and Colin R. Reeves
10.1
10.2
10.3
10.4
10.5
Introduction
Class Library Software
Java Class Library Software
Genetic Algorithm Optimization Software Survey
Conclusions
Abbreviations
References
Index
This page intentionally left blank
Preface
Optimization problems in practice are diverse and evolve over time, giving rise to requirements both for ready-to-use optimization software packages and for optimization
software libraries, which provide more or less adaptable building blocks for application-specific software systems. In order to apply optimization methods to a new
type of problem, corresponding models and algorithms have to be “coded” so that
they are accessible to a computer. One way to achieve this step is the use of a modeling language. Such modeling systems provide an excellent interface between models
and solvers, but only for a limited range of model types (in some cases, for example,
linear) due, in part, to limitations imposed by the solvers. Furthermore, while modeling systems especially for heuristic search are an active research topic, it is still an
open question as to whether such an approach may be generally successful. Modeling
languages treat the solvers as a “black box” with numerous controls. Due to variations,
for example, with respect to the pursued objective or specific problem properties, addressing real-world problems often requires special purpose methods. Thus, we are
faced with the difficulty of efficiently adapting and applying appropriate methods to
these problems. Optimization software libraries are intended to make it relatively easy
and cost effective to incorporate advanced planning methods in application-specific
software systems.
A general classification provides a distinction between callable packages, numerical libraries, and component libraries. Component libraries provide useful abstractions
for manipulating algorithm and problem concepts. Object-oriented software technology is generally used to build and apply corresponding components. To enable adaptation, these components are often provided at source code level. Corresponding class
libraries support the development of application-specific software systems by providing a collection of adaptable classes intended to be reused. However, the reuse of
algorithms may be regarded as “still a challenge to object-oriented programming”.
Component libraries are the subject of this edited volume. That is, within a careful
collection of chapters written by experts in their fields we aim to discuss all relevant
aspects of component libraries. To allow for wider applicability, we restrict the exposition to general approaches opposed to problem-specific software.
x OPTIMIZATION SOFTWARE CLASS LIBRARIES
Acknowledgements
Of course such an ambitious project like publishing a high quality book would not
have been possible without the most valuable input of a large number of individuals.
First of all, we wish to thank all the authors for their contributions, their patience and
fruitful discussion. We are grateful to the whole team at the University of Technology
Braunschweig, who helped in putting this book together, and to Gary Folven at Kluwer
Academic Publishers for his help and encouragement.
The Editors:
Stefan Voß
David L. Woodruff
1 OPTIMIZATION SOFTWARE CLASS
LIBRARIES
Stefan Voß1
and David L. Woodruff2
1
Technische Universität Braunschweig
Institut für Wirtschaftswissenschaften
Abt-Jerusalem-Straße 7, D-38106 Braunschweig, Germany
stefan.voss@tu—bs.de
2
Graduate School of Management
University of California at Davis
Davis, California 95616, USA
Abstract: Many decision problems in business and engineering may be formulated as
optimization problems. Optimization problems in practice are diverse, often complex and
evolve over time, so one requires both ready-to-use optimization software packages and
optimization software libraries, which provide more or less adaptable building blocks for
application-specific software systems.
To provide a context for the other chapters in the book, it is useful to briefly survey
optimization software. A general classification provides a distinction between callable
packages, numerical libraries, and component libraries. In this introductory chapter, we
discuss some general aspects of corresponding libraries and give an overview of available libraries, which provide reusable functionality with respect to different optimization
methodologies. To allow for wider applicability we devote little attention to problemspecific software so we can focus the exposition on general approaches.
OPTIMIZATION SOFTWARE CLASS LIBRARIES
1.1 INTRODUCTION
New information technologies continuously transform decision processes for managers and engineers. This book is the result of the confluence of recent developments
in optimization techniques for complicated problems and developments in software
development technologies. The confluence of these technologies is making it possible
for optimization methods to be embedded in a host of applications.
Many decision problems in business and engineering may be formulated as optimization problems. Optimization problems in practice are diverse, often complex and
evolve over time, so one requires both ready-to-use optimization software packages
and optimization software libraries, which provide more or less adaptable building
blocks for application-specific software systems. To provide a context for the other
chapters in the book, it is useful to briefly survey optimization software.
In order to apply optimization methods to a new type of problem, corresponding
models and algorithms have to be “coded” so that they are accessible to a computer
program that can search for a solution. Software that can take a problem in canonical
form and find optimal or near optimal solutions is referred to as a solver. The translation of the problem from its physical or managerial form into a form usable by a solver
is a critical step.
One way to achieve this step is the use of a modeling language. Such modeling
systems provide an excellent interface between models and solvers, but only for a
limited range of model types (in some extreme cases, e.g., linear). This is partly due
to limitations imposed by the solvers. Furthermore, while modeling systems are an
active research topic, it is still an open question whether such an approach may be
successful for complex problems. Modeling languages treat the solvers as a “black
box” with numerous controls.
Due to variations, for example, with respect to the pursued objective or specific
problem properties, addressing real-world problems often requires special purpose
methods. Thus, we are faced with the difficulty of efficiently adapting and applying
appropriate methods to these problems. Optimization software libraries are intended
to make it relatively easy and cost effective to incorporate advanced planning methods
in application-specific software systems.
Callable packages allow users to embed optimization functionality in applications,
and are designed primarily to allow the user’s software to prepare the model and feed
it to the package. Such systems typically also include routines that allow manipulation
of the model and access to the solver’s parameters. As with the modeling language
approach, the solver is treated essentially as an opaque object, which provides a classical functional interface, using procedural programming languages such as C. While
there are only restricted means to adapt the corresponding coarse-grained functionality, the packages do often offer callbacks that facilitate execution of user code during
the solution process.
Numerical libraries provide similar functionality, except that the model data is
treated using lower levels of abstraction. For example, while modeling languages
and callable packages may allow the user to provide names for sets of variables and
indexes into the sets, numerical libraries facilitate only the manipulation of vectors
and matrices as numerical entities. Well-known solution techniques can be called as
2
OPTIMIZATION SOFTWARE CLASS LIBRARIES 3
subroutines, or can be built from primitive operations on vectors and matrices. These
libraries provide support for linear algebra, numerical computation of gradients, and
support for other operations of value, particularly for continuous optimization.
Component libraries provide useful abstractions for manipulating algorithm and
problem concepts. Object-oriented software technology is generally used to build
and deploy components. To enable adaptation these components are often provided
at source code level. Class libraries support the development of application-specific
software systems by providing a collection of adaptable classes intended to be reused.
Nevertheless, the reuse of algorithms may be regarded as “still a challenge to objectoriented programming” (Weihe (1997)). As we point out later, there is no clear dividing line between class libraries and frameworks. Whereas class libraries may be
more flexible, frameworks often impose a broader structure on the whole system. Here
we use the term component library or componentware that should embrace both class
libraries and frameworks, but also other concepts that build on the idea of creating
software systems by selecting, possibly adapting, and combining appropriate modules
from a huge set of existing modules.
In the following sections we provide a brief survey on callable packages and numerical libraries (Section 1.3) as well as component libraries (Section 1.2). Our survey
in this chapter must necessarily be cursory and incomplete; it is not intended to be
judgmental and in some cases one has to rely on descriptions provided by software
vendors. Therefore, we include several references (literature and WWW) that provide
further information; cf. Fink et al. (2001).
As our main interest lies in optimization software class libraries and frameworks
for heuristic search, we provide a somewhat more in depth treatment of heuristics and
metaheuristics within the section on component libraries to let the reader visualize the
preliminaries of this rapidly evolving area; cf. Voß (2001).
1.2 COMPONENT LIBRARIES
Class libraries support the development of application-specific software systems by
providing a collection of (possibly semi-finished) classes intended to be reused. The
approach to build software by using class libraries corresponds to the basic idea of
object-oriented software construction, which may be defined as building software systems as “structured collections of possibly partial abstract data type implementations”
(Meyer (1997)). The basic object-oriented paradigm is to encapsulate abstractions of
all relevant concepts of the considered domain in classes. To be truly reusable, all these
classes have to be applicable in different settings. This requires them to be polymorphic to a certain degree, i.e., to behave in an adaptable way. Accordingly, there have
to be mechanisms to adapt these classes to the specific application. Class libraries
are mostly based on dynamic polymorphism by factoring out common behavior in
general classes and providing the specialized functionality needed by subclassing (inheritance). Genericity, which enables one to leave certain types and values unspecified
until the code is actually instantiated and used (compiled) is another way - applicable
orthogonal to inheritance - to define polymorphic classes.
One approach primarily devoted to the goal to achieve a higher degree of reuse is
the framework approach; see, e.g., Bosch et al. (1999), Fayad and Schmidt (1997b)
Most discrete optimization problems are nearly impossible to solve to optimality.
Many can be formally classified as (Garey and Johnson (1979)). Moreover,
the modeling of the problem is often an approximate one, and the data are often imprecise. Consequently, heuristics are a primary way to tackle these problems. The use of
appropriate metaheuristics generally meets the needs of decision makers to efficiently
generate solutions that are satisfactory, although perhaps not optimal. The common
incorporation of advanced metaheuristics in application systems requires a way to
reuse much of such software and to redo as little as possible each time. However, in
1.2.1 Libraries for Heuristic Optimization
and Johnson and Foote (1988). Taking into account that for the development of application systems for given domains quite similar software is needed, it is reasonable
to implement such common aspects by a generic design and embedded reusable software components. Here, one assumes that reuse on a large scale cannot only be based
on individual components, but there has to be to a certain extent a reuse of design.
Thus, the components have to be embedded in a corresponding architecture, which
defines the collaboration between the components. Such a framework may be defined
as a set of classes that embody an abstract design for solutions to a family of related
problems (e.g., heuristics for discrete optimization problems), and thus provides us
with abstract applications in a particular domain, which may be tailored for individual
applications. A framework defines in some way a definition of a reference application
architecture (“skeleton”), providing not only reusable software elements but also some
type of reuse of architecture and design patterns (Buschmann et al. (1996b), Gamma
et al. (1995)), which may simplify software development considerably. (Patterns, such
as frameworks and components, may be classified as object-oriented reuse techniques.
Simply put a pattern describes a problem to be solved, a solution as well as the context
in which the solution applies.) Thus, frameworks represent implementation-oriented
generic models for specific domains.
There is no clear dividing line between class libraries and frameworks. Whereas
class libraries may be more flexible, frameworks often impose a broader structure
on the whole system. Frameworks, sometimes termed as component libraries, may
be subtly differentiated from class libraries by the “activeness” of components, i.e.,
components of the framework define application logic and call application-specific
code. This generally results in a bi-directional flow of control.
In the following, we will use the term component library or componentware that
should embrace both class libraries and frameworks, but also other concepts that build
on the idea of creating software systems by selecting, possibly adapting, and combining appropriate modules from a large set of existing modules. The flexibility of
a component library is dependent on the specific possibilities for adaptation. As certain aspects of the component library application cannot be anticipated, these aspects
have to be kept flexible, which implies a deliberate incompleteness of generic software
components.
Based on these considerations we chose the title optimization software class libraries. In the sequel we distinguish between libraries for heuristic search (Section 1.2.1) and constraint programming (Section 1.2.2).
4 OPTIMIZATION SOFTWARE CLASS LIBRARIES