| Prev | Next |  |  |  |  |  |  |

abs_normal: Minimize a Linear Abs-normal Approximation
Syntax
`ok = abs_min_quad(
level, n, m, s,
g_hat, g_jac, hessian, bound, epsilon, maxitr, delta_x
)`
Prototype

    template <class DblVector, class SizeVector>
    bool abs_min_quad(
         size_t            level   ,
         size_t            n       ,
         size_t            m       ,
         size_t            s       ,
         const DblVector&  g_hat   ,
         const DblVector&  g_jac   ,
         const DblVector&  hessian ,
         const DblVector&  bound   ,
         const DblVector&  epsilon ,
         const SizeVector& maxitr  ,
         DblVector&        delta_x )

Source
This following is a link to the source code for this example: abs_min_quad.hpp .
Purpose
We are given a point x ^ ∈ R n and use the notation f ˜ ( x ) for the abs-normal approximation for f(x) near x ^ . We are also given a vector b ∈ R + n and a positive definite matrix H ∈ R n × n . This routine solves the problem minimize Δ x T H Δ x / 2 + f ˜ ( x ^ + Δ x ) w . r . t Δ x ∈ R n subject to | Δ x j | ≤ b j j = 0 , … , n -1
DblVector
is a SimpleVector class with elements of type `double`.
SizeVector
is a SimpleVector class with elements of type `size_t`.
f
We use the notation `f` for the original function; see f .
level
This value is less that or equal 3. If `level == 0` , no tracing of the optimization is printed. If `level >= 1` , a trace of each iteration of `abs_min_quad` is printed. If `level >= 2` , a trace of the qp_box sub-problem is printed. If `level >= 3` , a trace of the qp_interior sub-problem is printed.
n
This is the dimension of the domain space for `f` ; see n .
m
This is the dimension of the range space for `f` ; see m . This must be one so that f is an objective function.
s
This is the number of absolute value terms in `f` ; see s .
g
We use the notation `g` for the abs-normal representation of `f` ; see g .
g_hat
This vector has size `m + s` and is the value of `g(x, u)` at x = x ^ and u = a ( x ^ ) .
g_jac
This vector has size `(m + s) * (n + s)` and is the Jacobian of g ( x , u ) at x = x ^ and u = a ( x ^ ) .
hessian
This vector has size `n * n` . It is a row-major representation of the matrix H ∈ R n × n .
bound
This vector has size `n` and is the vector b ∈ R n . The trust region is defined as the set of Δ x such that | Δ x | ≤ b j for j = 0 , … , n -1 .
epsilon
The value `epsilon[0]` is convergence criteria in terms of the infinity norm of the difference of `delta_x` between iterations. The value `epsilon[1]` is convergence criteria in terms of the derivative of the objective; i.e. Δ x T H Δ x / 2 + f ˜ ( x ^ + Δ x )
maxitr
This is a vector with size 2. The value `maxitr[0]` is the maximum number of `abs_min_quad` iterations to try before giving up on convergence. The value `maxitr[1]` is the maximum number of iterations in the qp_interior sub-problems.
delta_x
This vector Δ x has size `n` . The input value of its elements does not matter. Upon return, the approximate minimizer of the objective with respect to the trust region.
Method
sigma
We use the notation σ ( x ) = sign ( z [ x , a ( x ) ] ) where a(x) and z(x, u) are as defined in the abs-normal representation of f ( x ) .
Cutting Planes
At each iteration, we are given affine functions p k ( x ) such that p k ( x k ) = f ˜ ( x k ) and p k ( 1 ) ( x k ) is the derivative f ˜ ( 1 ) ( x k ) corresponding to σ ( x k ) .
Iteration
At iteration k , we solve the problem minimize Δ x T H Δ x / 2 + max { p k ( x ^ + Δ x ) : k = 0 , … , K -1 } w . r . t Δ x subject to - b ≤ Δ x ≤ + b The solution is the new point x K at which the new affine approximation p K ( x ) is constructed. This process is iterated until the difference x K - x K -1 is small enough.
Example
The file abs_min_quad.cpp contains an example and test of `abs_min_quad`. It returns true if the test passes and false otherwise.

Input File: example/abs_normal/abs_min_quad.hpp