The VMCON Algorithm¶
VMCON aims to solve a nonlinearly constrained problem (general nonlinear programming problem), specifically, minimising an objective function subject to several nonlinear constraints.
The Problem¶
Also called the general non-linear programming problem, we want to minimise an objective function (figure of merit), \(f(\vec{x})\), subject to some non-linear constraints:
where the objective and constraint functions are all \(n\)-dimensional.
Several facts are worth noting about problem formulation:
To maximise some function \(g(\vec{x})\) we would minimise the objective \(f(\vec{x}) = -g(\vec{x})\).
To constrain the solution such that \(h(\vec{x}) = a\) we would apply the constraint \(h(\vec{x}) - a = 0\).
To constrain the solution such that \(h(\vec{x}) \geq a\) we would apply the constraint \(h(\vec{x}) - a \geq 0\).
To constrain the solution such that \(h(\vec{x}) \leq 0\) we would apply the constraint \(-h(\vec{x}) \geq 0\).
To constrain the solution such that \(h(\vec{x}) \leq a\) we would apply the constraint \(a-h(\vec{x}) \geq 0\).
The Lagrangian¶
VMCON is an augmented Lagrangian solver which means it uses the Lagrange multipliers, \(\vec{\lambda}\), of some solution to characterise the quality of the solution.
Of specific note is the Lagrangian function:
and the derivative of the Lagrangian function, with respect to \(\vec{x}\):
Initialisation of VMCON¶
VMCON is initialised with:
The objective function to minimise, \(f(\vec{x})\), as described above.
The constraints \(c_i(\vec{x}), i = 1,...,m\), as described above.
An initial sample point \(\vec{x}_0\).
\(\mathbf{B}\): the initial Hessian approximation matrix, usually the identity matrix.
\(\epsilon\): the “user-supplied error tolerance”.
It should be noted that \(\mathbf{B}\) will need to be of dimension \(d \times d\) where \(d = \mathrm{max}(n, m)\).
We also set the iteration number to 1, \(j=1\).
The Quadratic Programming Problem¶
The Quadratic Programming Probelm (QPP) will also be known as the Quadratic Sub-Problem (QSP) because it forms only a part of the VMCON algorithm–with the other half being the Augmented Lagrangian.
The QPP provides the search direction \(\delta_j\) which is a vector upon which \(\vec{x}_j\) will lay. Solving the QPP also provides the Lagrange multipliers, \(\lambda_{j}\).
The quadratic program to be minimised on iteration \(j\) is:
subject to
The Convergence Test¶
The convergence test is performed on the \(j\)’th iteration after the QSP. The convergence test is the sum of two terms:
The predicted change in magnitude of the objective function.
The complimentary error; where the complimentary error being 0 would mean that a specific constraint is at equality or the Lagrange multipliers are 0.
This is encapsulated in the equation:
The Line Search¶
The line search helps to mitigate poor initial conditions. It does this by searching in a line along the ‘search direction’ \(\delta\) such that:
\(\alpha\) is found via the minimisation of:
On the \(j\) th iteration, \(\vec{\mu}_{j,i}\) is a 1D vector which contains \(i = 1,...,m\) elements. On the first iteration:
On subsequent iterations:
The line search iterates for a maximum of 10 steps and exits if the chosen value of \(\alpha\) satisfies either the Armijo condition:
or the so-called Kovari condition, which was an ad-hoc break condition in the PROCESS implementation of VMCON, therefore does not appear in the paper:
Once the line search exits, we have found our optimal value and \(\alpha_j = \alpha\).
On each iteration of the line search, we revise \(\alpha\) using a quadratic approximation:
The Broyden-Fletcher-Goldfarb-Shanno (BFGS) Quasi-Newton Update¶
The final stage of an iteration of the VMCON optimiser is to update the Hessian approximation via a BFGS update.
For an unconstrained problem, we use the following differences to update \(\mathbf{B}\):
which is calculated using (1).
Since we have a constrained problem, we define a further quantity:
where
The definition of \(\vec{\eta}\) ensures \(\mathbf{B}\) remains positive semi-definite, which is a prereqesite to solving the QSP.
We can then perform the BFGS update:
The VMCON Algorithm¶
This page covers the mathematics and theory behind the VMCON algorithm. For completeness, the following flow diagram demonstrates how the algorithm is implemented at a high level.