Box-constrained optimization problems are ubiquitous in many areas of science and engineering. Our package includes methods tailored to this class of optimization problems. Due to Julia's Iterator
interface, Progradio's solvers can be paused, resumed, or terminated early. Since the first release, we have included a stricter line-search procedure, and support for simplex constraints (Σ x_j = 1). Progradio's unique features make it attractive to be used as a sub-routine for dynamic optimization.
We implement methods for box-constrained optimization problems: min_x f(x) s.t. l <= x <= u
. This class of problems is relevant in its own right, but frequently appears as a sub-routine of nonlinearly constrained optimization methods, such as penalty or barrier algorithms.
Progradio makes use of Julia's Iterator
interface, allowing greater control at each iteration (pausing, resuming, user-defined termination criteria). This feature (which most solvers lack) truly allows the solvers to be used as sub-routines to other algorithms. The traditional solve()
interface is also available.
Since v0.1
, we have implemented a stricter line-search algorithm. In addition to the existing Armijo method, this Wolfe-like procedure uses left and right-derivative information for the step-size selection. A more accurate line-search results in a higher rate of convergence, at the expense of the added derivative evaluations.
Additionally, we have added support for problems with simplex constraints (Σ x_j = 1). This is achieved with a transformation of variables at each iteration. The added constraint is effectively handled by a modified line-search, while ensuring feasibility at every iteration.
Progradio's early-termination and feasibility capabilities are attractive for infinite-dimensional optimization, such as solving optimal control problems.
We give examples of how dynamic optimization packages in our JuDO-dev organization call Progradio's solvers as sub-routines.