You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**`AbstractNLPModeler`** (in `Modelers`): converts problems into NLP models and back into solutions.
84
-
-**`AbstractOptimizationSolver`** (in `Solvers`): solves NLP models via backend libraries.
84
+
-**`AbstractNLPSolver`** (in `Solvers`): solves NLP models via backend libraries.
85
85
-**`AbstractOptimalControlDiscretizer`** (in CTDirect, external): discretizes continuous-time OCP into finite-dimensional problems. See [Implementing a Strategy](@ref) for a complete tutorial.
86
86
87
87
### Optimization / Builder Branch
@@ -165,7 +165,7 @@ sequenceDiagram
165
165
participant Modeler as AbstractNLPModeler
166
166
participant Problem as AbstractOptimizationProblem
167
167
participant Builder as AbstractModelBuilder
168
-
participant Solver as AbstractOptimizationSolver
168
+
participant Solver as AbstractNLPSolver
169
169
participant SolBuilder as AbstractSolutionBuilder
170
170
171
171
User->>Solve: solve(problem, x0, modeler, solver)
@@ -248,7 +248,7 @@ Solvers use **Tag Dispatch** to separate type definitions (in `src/Solvers/`) fr
Copy file name to clipboardExpand all lines: docs/src/guides/implementing_a_solver.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ This guide explains how to implement an optimization solver in CTSolvers. Solver
9
9
!!! tip "Prerequisites"
10
10
Read [Architecture](@ref) and [Implementing a Strategy](@ref) first. A solver is a strategy with two additional requirements: a **callable interface** and a **Tag Dispatch** extension.
11
11
12
-
## The AbstractOptimizationSolver Contract
12
+
## The AbstractNLPSolver Contract
13
13
14
14
A solver must satisfy **three contracts**:
15
15
@@ -26,16 +26,16 @@ classDiagram
26
26
options(instance)::StrategyOptions
27
27
}
28
28
29
-
class AbstractOptimizationSolver {
29
+
class AbstractNLPSolver {
30
30
<<abstract>>
31
31
(solver)(nlp; display) → Stats
32
32
}
33
33
34
-
AbstractStrategy <|-- AbstractOptimizationSolver
35
-
AbstractOptimizationSolver <|-- Solvers.Ipopt
36
-
AbstractOptimizationSolver <|-- Solvers.MadNLP
37
-
AbstractOptimizationSolver <|-- Solvers.MadNCL
38
-
AbstractOptimizationSolver <|-- Solvers.Knitro
34
+
AbstractStrategy <|-- AbstractNLPSolver
35
+
AbstractNLPSolver <|-- Solvers.Ipopt
36
+
AbstractNLPSolver <|-- Solvers.MadNLP
37
+
AbstractNLPSolver <|-- Solvers.MadNCL
38
+
AbstractNLPSolver <|-- Solvers.Knitro
39
39
```
40
40
41
41
The default callable throws `NotImplemented` with guidance.
@@ -67,7 +67,7 @@ struct IpoptTag <: AbstractTag end
67
67
Like any strategy, the solver has a single `options` field:
0 commit comments