Software Overview

Acro integrates a variety of optimization software packages, including libraries developed at Sandia National Laboratories as well as publicly available third-party libraries. The goal of this integration is to provide a single framework that includes a wide range of optimization methods.

Capabilities

Three classes of optimizers are well-represented in Acro:

  1. branch-and-bound methods for integer programming

  2. heuristic global optimization methods

  3. derivative free local optimization methods

Integer Programming

The PICO package defines an object-oriented scalable library for branch-and-bound. In particular, PICO includes a well-developed parallel mixed integer linear programming (MILP) solver. PICO depends on UTILIB for many basic data structures and system utilities. Additionally, PICO uses the COIN interface library to encapsulate linear programming solvers. Two publicly available linear programming solvers are integrated into Acro: SOPLEX and CLP (which is included in COIN). The mpPCx parallel linear programming solver is also being developed at Sandia (this is currently not part of Acro).

PICO has been integrated with the GLPK package to support a public domain interface to AMPL integer programming problems. PICO has also been integrated with the AMPL package, which includes the AMPL routines for setting up an AMPL solver.

Global Optimization

The COLIN package defines a general-purpose interface for optimization solvers. Although many C++ optimization software libraries have been developed, these designs invariably incorporate specific features that facilitate the development and application of the author's algorithms. By contrast, COLIN is intended to provide a generic interface for optimizers that is simple to use and which can encapsulate the basic algorithmic interface of a wide range of general-purpose optimizers. As such, COLIN can be used as 'middle-ware' to facilitate the interface of an optimizer to (a) other optimizers to form hybrid solution strategies and (b) to generic user-interfaces like AMPL or Excel, for which well-defined APIs exist.

The Coliny package defines a variety optimizers using COLIN. In particular, Coliny includes global optimization heuristics like multi-start local search, evolutionary algorithms and DIRECT. Additionally, Coliny includes COLIN interfaces to several other global optimization solvers, including a Lipshitzian solver defined using PICO. The 3po package includes COLIN interfaces for a variety of other publicly available optimizers.

Derivative Free Optimization

Derivative free optimizers perform local optimization on continuous search domains without the aid of gradients or other derivative information. The Coliny solver includes several derivative free methods, and in particular a variety of pattern search methods. The APPSPACK package defines a parallel pattern search method that exploits a novel asynchronous parallel search.

End-User Applications

The principal goal of Acro is to provide support of optimization libraries. However, there are several end-user applications that can be build within Acro.
  1. PICO - a solver for mixed-integer linear programming problems. PICO can be use with AMPL, or with user-input files in standard formats (LP, MPS, etc).

  2. coliny - a solver for derivative-free and heuristic global optimization. coliny is principally indended for use with AMPL.

Documentation for the use of these solvers is currently being developed.

Overview of Acro Packages

Acro is organized around a set of closely related software packages. The following figure illustrates the dependencies between the Acro packages. The dashed lines indicate packages and dependencies that are currently being developed.
[Acro Package Dependencies]

  1. 3po - A library of third party optimizers that are publicly available.

  2. CMO - An example of the use of the MW software for parallel master-worker. This is not a core Acro package, and thus it will be reconstituted shortly.

  3. COIN - A subset of the COIN optimization repository that includes linear and integer programming interfaces for a variety of third-party software projects. This package uses the Acro configure/makefile's, since COIN does not have a sufficiently flexible configure/build process. See http://www.coin-or.org for further information on this software.

  4. SOPLEX - The SOPLEX linear programming library. SOPLEX contains an implementation of the revised simplex algorithm. It features primal and dual solving routines for linear programs and is implemented as a C++ class library that can be used with other programs. See http://www.zib.de/Optimization/Software/Soplex/ for further information on this software.

  5. ampl - This package includes C files provided by AMPL to setup solvers that can be used by AMPL. In particular, this package provides the ability to read the AMPL *.nl file format.

  6. appspack - An asyncronous parallel pattern search method developed at Sandia National Laboratories. See http://software.sandia.gov/appspack/ for further information on this software.

  7. colin - A general-purpose C++ optimization interface developed at Sandia National Laboratories. This library provides a middle-ware layer for optimizers that facilitates the use of hybrid optimizers, as well as optimizers applied to novel, user-defined search domains.

  8. coliny - Coliny is a collection of C++ optimizers that are derived directly from the COLIN interface. This library includes methods such as pattern search, evolutionary algorithms, multistart local search and DIRECT. Coliny is a revision of the older SGOPT library, which is now deprecated.

  9. glpk - The GNU linear programming toolkit. GLPK is intended for solving large-scale linear programming (LP), mixed integer programming (MIP), and other related problems. See http://www.gnu.org/software/glpk/glpk.html for further information on this software.

  10. pico - PICO defines a flexible branch-and-bound engine that uses an object-oriented model to allow it to be easily adapted to new applications. A novel feature of PICO is its ability to scale up parallel branch-and-bound to thousands of processors. PICO also includes solvers for mixed-integer linear programming.

  11. sgopt - SGOPT defines a collection of C++ optimizers. This software has been superceded by Coliny, and its use is now deprecated.

  12. tmf - TMF is a Templatized Metaheuristics Framework that is under development.

  13. utilib - UTILIB is a library of C and C++ utility methods. It includes classes of standard data structures, general-purpose mathematical routines, sorting methods, random number generates, tools for processing command-line options and tools to support parallelization of software.