Simulation

BlockOpt.SimulationType

Simulation

A simulation composes the observed trace and the backend solve of Algorithm 7.1. A simulation instance is returned from an optimize call.

source

Subroutines of optimize!

When calling optimize(model, driver) the fallback is optimize!(s) where simulation s is internally constructed. The responsibility of s is to orchestrate the iteration defined in its backend and make observations to generate the trace.

The backend defines subroutines for s's memory manipulations for each step in its iteration. Since then backend delegates its behavior to s, we dispatch the backends' subroutines to s while adding additional execution steps to generate the simulations trace.

BlockOpt.initializeMethod
initialize(s::Simulation)

Performs each step up to the preliminary update to obtain $H₀$. Lines 1-6 of Algorithm 7.1.

source
BlockOpt.build_trialMethod
build_trial(s::Simulation)

Build trial iterate, evaluate the objective at the trial location, and compute $ρ$.

source
BlockOpt.accept_trialMethod
accept_trial(s::Simulation)

Observe the value of $ρ$, accept positive values, and then update $xₖ, fₖ$.

source
BlockOpt.secantQNMethod
secantQN(s::Simulation)

Performs the standard secant update for s's inverse Hessian approximation $Hₖ$.

The QN formula used is given by the Driver of s.

source
BlockOpt.update_SₖMethod
update_Sₖ(s::Simulation)

Updates the $2w-1$ sample directions of simulation s.

See: S_update_a, S_update_b, S_update_c, S_update_d, S_update_e, S_update_f.

source
BlockOpt.blockQNMethod
blockQN(s::Simulation)

Performs a block update for s's inverse Hessian approximation $Hₖ$.

The QN formula used is given by the Driver of s.

source

Interface

Methods dispatch on a terminal simulation returned from an optimize call.

BlockOpt.f_valsMethod
f_vals(s::Simulation)

A vector holding objective values $f(xₖ)$ for each successful iterate $xₖ$ of simulation s.

source
BlockOpt.∇f_normsMethod
∇f_norms(s::Simulation)

A vector holding normed gradient values $||∇f(xₖ)||₂$ for each successful iterate $xₖ$ of simulation s.

source
BlockOpt.p_normsMethod
p_norms(s::Simulation)

A vector holding distance $||pₖ||₂` of each successful step$pₖ`of simulations`.

source
BlockOpt.Δ_valsMethod
Δ_vals(s::Simulation)

A vector holding the trust-region radius passed to trs_small in TRS.jl during each successful step of simulation s.

source
BlockOpt.ρ_valsMethod
ρ_vals(s::Simulation)

A vector storing the ratio of actual reduction to model reduction of each successful step of simulation s.

source

Recipes

To use the listed recipes you must have (Plots.jl)[http://docs.juliaplots.org/latest/] in your current namespace, i.e. loaded from calling using Plots. This assumes the Plots package has already been installed through Pkg.jl.

BlockOpt.objtraceFunction
objtrace

Provide any number of terminal simulations as arguments and objtrace displays a plot of each arguments' objective function values at each succussful iterate.

To add a simulation to the current objtrace plot use objtrace!.

source
BlockOpt.gradtraceFunction
gradtrace

Provide any number of terminal simulations as arguments and gradtrace displays a plot of each arguments' normed gradient values at each succussful iterate.

To add a simulation to the current gradtrace plot use gradtrace!.

source
BlockOpt.radiustraceFunction
radiustrace

Provide any number of terminal simulations as arguments and radiustrace displays a plot of each arguments' trust region subproblem radius values at each succussful iteration.

To add a simulation to the current radiustrace plot use radiustrace!.

source
BlockOpt.steptraceFunction
steptrace

Provide any number of terminal simulations as arguments and steptrace displays a plot of each arguments' step measure at each succussful iteration.

To add a simulation to the current steptrace plot use steptrace!.

source
BlockOpt.rhotraceFunction
rhotrace

Provide any number of terminal simulations as arguments and rhotrace displays a plot of each arguments' ρ ratio at each successful iteration.

To add a simulation to the current rhotrace plot use rhotrace!.

source