ROL Documentation (Development Version)
Rapid Optimization Library


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.


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

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.

Step 2: Implement objective function interface.

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

Step 3: Choose optimization algorithm.

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

ROL::Algorithm<RealT> algo("Line Search",parlist);

Step 4: Run algorithm.

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