ROL
ROL Documentation (Development Version)
Rapid Optimization Library

Introduction

Rapid Optimization Library (ROL) is a C++ package for large-scale optimization. It is used for the solution of optimal design, optimal control and inverse problems in large-scale engineering applications. Other uses include mesh optimization and image processing.

Overview

ROL aims to combine flexibility, efficiency and robustness. Key features:

  • Matrix-free application programming interfaces (APIs) —enable direct use of application data structures and memory spaces, linear solvers, nonlinear solvers and preconditioners.
  • State-of-the-art algorithms for unconstrained optimization, constrained optimization and optimization under uncertainty —enable inexact and adaptive function evaluations and iterative linear system solves.
  • Special APIs for simulation-based optimization —enable a streamlined embedding into engineering applications, rigorous implementation verification and efficient use.
  • Modular interfaces throughout the optimization process —enable custom and user-defined algorithms, stopping criteria, hierarchies of algorithms, and selective use of a variety of tools and components.

For a detailed description of user interfaces and algorithms, see the presentations ROL-Trilinos-xx.x.pptx (or .pdf) in the doc/presentations directory.

To start using ROL, including all its advanced algorithms and features, jump to the Modules page.

For a basic example, see below.

Quick Start

The Rosenbrock example (rol/example/rosenbrock/example_01.cpp) demonstrates the basic use of ROL. It amounts to six steps:

Step 1: Implement linear algebra / vector interface.

— or try one of the provided implementations, such as ROL::StdVector in rol/vector.

Defines the linear algebra or vector space interface.

Step 2: Implement objective function interface.

— or try one of the provided functions, such as ROL::ZOO::Objective_Rosenbrock in rol/zoo.

Provides the interface to evaluate objective functions.

Step 3: Choose optimization algorithm.

— with ROL::ParameterList settings in the variable parlist.

ROL::Algorithm<RealT> algo("Line Search",parlist);
Provides an interface to run optimization algorithms.

Step 4: Run algorithm.

— starting from the initial iterate x, applied to objective function obj.

algo.run(x, obj);