Skip to content

Commit db24220

Browse files
committed
Sketch a few more ideas.
1 parent a62b204 commit db24220

1 file changed

Lines changed: 17 additions & 3 deletions

File tree

Readme.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,27 @@ A common interface for algorithms allows to reuse common code – especially sto
1414

1515
We consider solving _Tasks_, which consist of a
1616

17-
* `Problem` to solve, which constains all information that is static to the problem and usually does not change during the iterations, this might for example be a cost function and its gradient in an optimisation problem
18-
* An `AlgorithmState` that both specifies which algorithm to use to _solve_ the problem, but also stores all parameters that an algorithm needs as well as everything the algorithm needs to store between two iterations.
17+
* `AbstractProblem` to solve, which contains all information that is static to the problem and usually does not change during the iterations, this might for example be a cost function and its gradient in an optimisation problem
18+
* An `AbstractAlgorithmState` that both specifies which algorithm to use to _solve_ the problem, but also stores all parameters that an algorithm needs as well as everything the algorithm needs to store between two iterations.
1919

2020
This generic data structures are accompanied by the methods
2121

2222
* `step!(problem::Problem, state::AlgorithmState, k)` to perform the `k`th iteration of the algorithm.
2323
* `solve!(problem::Problem, state::AlgorithmState)` to solve a problem with a given algorithm, which is identified by the `AlgorithmState`.
2424
* `stop(problem::Problem, state::AlgorithmState)` to check whether the algorithm should stop.
2525

26-
where the first is the main one to implement for a new algorithm.
26+
where the first is the main one to implement for a new algorithm.
27+
28+
# Further ideas
29+
30+
* generic stopping criteria `<:AbstractStoppingCriterion`
31+
* `StopAfterIteration(i)` for example
32+
* a factory that turns certain keywords like `maxiter=` into stopping criteria
33+
* still support the `stopping_criterion=` ideas from `Manopt.jl`
34+
* by default `stop()` from above would check such a stopping criterion
35+
* generic debug and record functionality – together with hooks even
36+
37+
# possible extensions
38+
39+
* to `LineSearches.jl`
40+
*

0 commit comments

Comments
 (0)