Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
135 lines (103 sloc) 2.64 KB

[Plans for solvers](@id planSection)

CurrentModule = Manopt

In order to start a solver, both a Problem and Options are required. Together they form a plan and these are stored in this folder. For sub-problems there are maybe also only Options, since they than refer to the same problem.

Options

For most algorithms a certain set of options can either be generated beforehand of the function with keywords can be used. Generally the type

Options
getOptions

Since the Options directly relate to a solver, they are documented with the corresponding Solvers. You can always access the options (since they might be decorated) by calling getOptions.

Decorators for Options

Options can be decorated using the following trait and function to initialize

IsOptionsDecorator
decorateOptions

In general decorators often perform actions so we introduce

Action

as well as a helper for storing values using keys, i.e.

StoreOptionsAction
getStorage
hasStorage
updateStorage!

[Debug Options](@id DebugOptions)

Modules = [Manopt]
Pages = ["plans/debugOptions.jl"]
Order = [:type, :function]

see [DebugSolver](@ref DebugSolver) for details on the decorated solver.

Further specific DebugActions can be found at the specific Options.

[Record Options](@id RecordOptions)

Modules = [Manopt]
Pages = ["plans/recordOptions.jl"]
Order = [:type, :function]
Private = false

see [RecordSolver](@ref RecordSolver) for details on the decorated solver.

Further specific RecordActions can be found at the specific Options.

there's one internal helper that might be useful for you own actions, namely

recordOrReset!

[Stepsize and Linesearch](@id Stepsize)

The step size determination is implemented as a Functor based on

Stepsize

in general there are

Modules = [Manopt]
Pages = ["plans/stepsize.jl"]
Order = [:type]

Problems

A problem usually contains its cost function and provides and implementation to access the cost

Problem
getCost

For any algorithm that involves a cyclic evalutaion, e.g. cyclicProximalPoint, one can specify the EvalOrder as

EvalOrder
LinearEvalOrder
RandomEvalOrder
FixedRandomEvalOrder

Gradient based problem

GradientProblem
getGradient

Subgradient based problem

SubGradientProblem
getSubGradient

[Proximal Map(s) based problem](@id ProximalProblem)

ProximalProblem
getProximalMap

Further planned problems

HessianProblem
You can’t perform that action at this time.