wiki:Overview

Overview

The Acro software is an effort to facilitate the design, development, integration and support of optimization software libraries. The goal of Acro is to develop optimization solvers and libraries using object-oriented software frameworks that facilitate the application of these solvers to large-scale engineering and scientific applications. Thus Acro includes both individual optimization solvers as well as optimization frameworks that provide abstract interfaces for flexible interoperability of solver components. Acro has been written to support optimizers that are broadly useful for DOE's engineering and scientific applications. In particular, many solvers included in Acro can exploit parallel computing resources to solve optimization problems more quickly.

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

  • Linear programming
  • Mixed-integer linear programming
  • A rigorous nonlinear global optimization solver
  • Derivative-free local search
  • Stochastic global optimization methods: multistart local search, evolutionary algorithms
  • Parallel branch-and-bound
  • Bound-constrained derivative-based local optimization

Organization

Packages

The Acro software is organized around software packages that support optimization. The majority of packages are written in C++ using object-oriented techniques. An Acro package is usually developed by a (relatively) small set of developers to solve a specific set of problems. Each package typically builds a single library along with solver interfaces that use that library. Each Acro package has its own structure, documentation and set of examples, and it is possibly available independently of Acro. However, Acro provides a framework for exploiting synergy between packages in a flexible manner.

Projects

Acro supports a variety of projects that integrate the capabilities of a subset of Acro packages. Acro projects can be checked out independent of one another, which allows end-users to focus on the subset of Acro's capabilities that is most relevant to their needs. Two different categories of packages are included in an Acro project: (1) packages under active development by Acro developers, and (2) packages that are imported from external software projects. This second category of packages support the installation of Acro without requiring additional dependencies (except, perhaps, for commercial libraries). Thus, a user can checkout, make, and install Acro without requiring any additional software to support the Acro capabilities!

Solver Interfaces

Acro creates several solver interfaces that can be used to exercise the optimizers:

See the Acro Tools documentation for other scripts and executables that support optimization.