Skip to content

Commit 05d83b6

Browse files
Update compat (#557)
* Update Project.toml * Update collocation and test files * Update test files * Update test files again * IpoptSolver -> Ipopt * MadNLPSolver -> MadNLP * AbstractOptimalControlDiscretizer -> AbstractDiscretizer * AbstractOptimalControlInitialGuess -> AbstractInitialGuess * AbstractOptimalControlProblem -> AbstractModel * version 1.0.2-beta --------- Co-authored-by: Pierre Martinon <pierrecmartinon@gmail.com>
1 parent be49a9b commit 05d83b6

File tree

10 files changed

+42
-42
lines changed

10 files changed

+42
-42
lines changed

Project.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "CTDirect"
22
uuid = "790bbbee-bee9-49ee-8912-a9de031322d5"
3-
version = "1.0.1-beta"
3+
version = "1.0.2-beta"
44
authors = ["Pierre Martinon <pierrecmartinon@gmail.com>"]
55

66
[workspace]
@@ -22,9 +22,9 @@ SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
2222
ADNLPModels = "0.8"
2323
AMDGPU = "2"
2424
CTBase = "0.18"
25-
CTModels = "0.8"
25+
CTModels = "0.9"
2626
CTParser = "0.8"
27-
CTSolvers = "0.2"
27+
CTSolvers = "0.3"
2828
CUDA = "5"
2929
CommonSolve = "0.2"
3030
DocStringExtensions = "0.9"

src/CTDirect.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,25 @@ using NLPModels
1212

1313
# ----------------------------------------------------------------------
1414
# TYPES
15-
const AbstractOptimalControlProblem = CTModels.AbstractModel
15+
const AbstractModel = CTModels.AbstractModel
1616

1717
# ---------------------------------------------------------------------------
1818
# Abstract discretizer type
1919
# ---------------------------------------------------------------------------
20-
abstract type AbstractOptimalControlDiscretizer <: Strategies.AbstractStrategy end
20+
abstract type AbstractDiscretizer <: Strategies.AbstractStrategy end
2121

2222
function discretize(
23-
ocp::AbstractOptimalControlProblem,
24-
discretizer::AbstractOptimalControlDiscretizer
23+
ocp::AbstractModel,
24+
discretizer::AbstractDiscretizer
2525
)
2626
return discretizer(ocp)
2727
end
2828

29-
__discretizer()::AbstractOptimalControlDiscretizer = Collocation()
29+
__discretizer()::AbstractDiscretizer = Collocation()
3030

3131
function discretize(
32-
ocp::AbstractOptimalControlProblem;
33-
discretizer::AbstractOptimalControlDiscretizer=__discretizer(),
32+
ocp::AbstractModel;
33+
discretizer::AbstractDiscretizer=__discretizer(),
3434
)
3535
return discretize(ocp, discretizer)
3636
end

src/collocation.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# ---------------------------------------------------------------------------
66
# Collocation discretizer
77
# ---------------------------------------------------------------------------
8-
struct Collocation <: AbstractOptimalControlDiscretizer
8+
struct Collocation <: AbstractDiscretizer
99
options::Strategies.StrategyOptions
1010
end
1111

@@ -56,7 +56,7 @@ Strategies.options(c::Collocation) = c.options
5656
# ==========================================================================================
5757
# Build core DOCP structure with discretization information (ADNLP)
5858
# ==========================================================================================
59-
function get_docp(discretizer::Collocation, ocp::AbstractOptimalControlProblem)
59+
function get_docp(discretizer::Collocation, ocp::AbstractModel)
6060

6161
# recover discretization scheme and options
6262
scheme = Strategies.options(discretizer)[:scheme]
@@ -77,7 +77,7 @@ end
7777
# Build initial guess for discretized problem
7878
# ==========================================================================================
7979
function get_docp_initial_guess(modeler::Symbol, docp,
80-
initial_guess::Union{CTModels.AbstractOptimalControlInitialGuess,Nothing},
80+
initial_guess::Union{CTModels.AbstractInitialGuess,Nothing},
8181
)
8282

8383
ocp = ocp_model(docp)
@@ -117,19 +117,19 @@ function get_docp_initial_guess(modeler::Symbol, docp,
117117
# ==========================================================================================
118118
# Build discretizer API (return sets of model/solution builders)
119119
# ==========================================================================================
120-
function (discretizer::Collocation)(ocp::AbstractOptimalControlProblem)
120+
function (discretizer::Collocation)(ocp::AbstractModel)
121121

122122
# common parts for builders
123123
docp = get_docp(discretizer, ocp)
124124
exa_getter = nothing # will be set in build_exa_model
125125

126126
# ==========================================================================================
127-
# The needed builders for the construction of the final DiscretizedOptimalControlProblem
127+
# The needed builders for the construction of the final DiscretizedModel
128128
# ==========================================================================================
129129

130130
# NLP builder for ADNLPModels
131131
function build_adnlp_model(
132-
initial_guess::CTModels.AbstractOptimalControlInitialGuess;
132+
initial_guess::CTModels.AbstractInitialGuess;
133133
backend,
134134
kwargs...
135135
)::ADNLPModels.ADNLPModel
@@ -211,7 +211,7 @@ function (discretizer::Collocation)(ocp::AbstractOptimalControlProblem)
211211
# NLP builder for ExaModels
212212
function build_exa_model(
213213
::Type{BaseType},
214-
initial_guess::CTModels.AbstractOptimalControlInitialGuess;
214+
initial_guess::CTModels.AbstractInitialGuess;
215215
backend
216216
)::ExaModels.ExaModel where {BaseType<:AbstractFloat}
217217

@@ -260,7 +260,7 @@ function (discretizer::Collocation)(ocp::AbstractOptimalControlProblem)
260260
end
261261

262262
#NB. it would be better to return builders as model/solution pairs since they are linked
263-
return CTSolvers.DiscretizedOptimalControlProblem(
263+
return CTSolvers.DiscretizedModel(
264264
ocp,
265265
CTSolvers.ADNLPModelBuilder(build_adnlp_model),
266266
CTSolvers.ExaModelBuilder(build_exa_model),

src/collocation_variables.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ julia> DOCP_initial_guess(docp)
2121
[0.1, 0.1, …]
2222
```
2323
"""
24-
function DOCP_initial_guess(docp::DOCP, init::CTModels.OptimalControlInitialGuess)
24+
function DOCP_initial_guess(docp::DOCP, init::CTModels.InitialGuess)
2525

2626
# default initialization (including internal variables such as k_i for RK schemes)
2727
# NB. passing nothing to the setters below will leave this default values

test/manual_test.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ include("./problems/beam.jl")
77
include("./problems/goddard.jl")
88
include("./problems/double_integrator.jl")
99

10-
#sol = solve_problem(goddard(); display=true)
10+
sol = solve_problem(goddard(); display=true)
1111
sol1 = solve_problem(goddard2(); display=true, modeler=:exa, solver=:madnlp, scheme=:trapeze)
1212

test/test_common.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ function solve_problem(prob;
4949

5050
# NLP modeler
5151
if modeler == :adnlp
52-
my_modeler = CTSolvers.ADNLPModeler(; backend=adnlp_backend) # kwargs
52+
my_modeler = CTSolvers.ADNLP(; backend=adnlp_backend) # kwargs
5353
elseif modeler == :exa
54-
my_modeler = CTSolvers.ExaModeler(; backend=exa_backend) # kwargs
54+
my_modeler = CTSolvers.Exa(; backend=exa_backend) # kwargs
5555
else
5656
error("Unknown modeler: ", modeler)
5757
end
@@ -66,7 +66,7 @@ function solve_problem(prob;
6666
:linear_solver => "mumps",
6767
:sb => "yes",
6868
)
69-
my_solver = CTSolvers.IpoptSolver(; ipopt_options...)
69+
my_solver = CTSolvers.Ipopt(; ipopt_options...)
7070
elseif solver == :madnlp
7171
if isnothing(linear_solver)
7272
solver = MumpsSolver
@@ -82,7 +82,7 @@ function solve_problem(prob;
8282
madnlp_options[:bound_relax_factor] = bound_relax_factor
8383
madnlp_options[:mode] = :permissive
8484
end
85-
my_solver = CTSolvers.MadNLPSolver(; madnlp_options...)
85+
my_solver = CTSolvers.MadNLP(; madnlp_options...)
8686
else
8787
error("Unknown solver: ", solver)
8888
end

test/tmp/test_collocation.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Unit tests for Collocation discretizer wiring from OCP to discretized OCP and builders.
2-
struct DummyOCPCollocation <: CTModels.AbstractOptimalControlProblem end
2+
struct DummyOCPCollocation <: CTModels.AbstractModel end
33

4-
struct DummyOCPExaRouting <: CTModels.AbstractOptimalControlProblem end
4+
struct DummyOCPExaRouting <: CTModels.AbstractModel end
55

66
struct DummyDOCPCollocationRouting end
77

@@ -51,8 +51,8 @@ function test_ctdirect_collocation()
5151

5252
docp = discretizer(ocp)
5353

54-
# The call operator on Collocation should return a DiscretizedOptimalControlProblem
55-
Test.@test docp isa CTModels.DiscretizedOptimalControlProblem
54+
# The call operator on Collocation should return a DiscretizedModel
55+
Test.@test docp isa CTModels.DiscretizedModel
5656
Test.@test CTModels.ocp_model(docp) === ocp
5757

5858
# The model and solution builders should be correctly wired with both
@@ -81,7 +81,7 @@ function test_ctdirect_collocation()
8181
exa_builder = CTModels.get_exa_model_builder(docp)
8282

8383
# Minimal initial guess: functions for state/control and empty variable
84-
init_guess = CTModels.OptimalControlInitialGuess(t -> 0.0, t -> 0.0, Float64[])
84+
init_guess = CTModels.InitialGuess(t -> 0.0, t -> 0.0, Float64[])
8585

8686
BaseType = Float32
8787
exa_nlp = exa_builder(BaseType, init_guess; backend=:gpu, foo=1)

test/tmp/test_core_types.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ function test_ctdirect_core_types()
1616
# Trapeze is an alias to Trapezoidal
1717
Test.@test CTDirect.TrapezeScheme === CTDirect.TrapezoidalScheme
1818

19-
# AbstractOptimalControlDiscretizer should be abstract
20-
Test.@test isabstracttype(CTDirect.AbstractOptimalControlDiscretizer)
19+
# AbstractDiscretizer should be abstract
20+
Test.@test isabstracttype(CTDirect.AbstractDiscretizer)
2121

2222
# Collocation should be a concrete discretizer subtype
23-
Test.@test CTDirect.Collocation <: CTDirect.AbstractOptimalControlDiscretizer
23+
Test.@test CTDirect.Collocation <: CTDirect.AbstractDiscretizer
2424
end
2525

2626
# ========================================================================

test/tmp/test_discretization_api.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# Unit tests for the discretization API (discretize with custom and default discretizers).
2-
struct DummyOCPDiscretize <: CTModels.AbstractOptimalControlProblem end
2+
struct DummyOCPDiscretize <: CTModels.AbstractModel end
33

4-
struct DummyDiscretizer <: CTDirect.AbstractOptimalControlDiscretizer
4+
struct DummyDiscretizer <: CTDirect.AbstractDiscretizer
55
calls::Base.RefValue{Int}
66
tag::Symbol
77
end
88

9-
function (d::DummyDiscretizer)(ocp::CTModels.AbstractOptimalControlProblem)
9+
function (d::DummyDiscretizer)(ocp::CTModels.AbstractModel)
1010
d.calls[] += 1
1111
return (ocp, d.tag)
1212
end
@@ -37,13 +37,13 @@ function test_ctdirect_discretization_api()
3737

3838
docp = CTDirect.discretize(ocp)
3939

40-
# The default discretizer should produce a DiscretizedOptimalControlProblem
41-
Test.@test docp isa CTModels.DiscretizedOptimalControlProblem
40+
# The default discretizer should produce a DiscretizedModel
41+
Test.@test docp isa CTModels.DiscretizedModel
4242
Test.@test CTModels.ocp_model(docp) === ocp
4343

4444
# And the low-level __discretizer() helper should return a Collocation
4545
disc = CTDirect.__discretizer()
46-
Test.@test disc isa CTDirect.AbstractOptimalControlDiscretizer
46+
Test.@test disc isa CTDirect.AbstractDiscretizer
4747
Test.@test disc isa CTDirect.Collocation
4848
end
4949
end

test/tmp/test_solve.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ function test_solve()
2727
init = CTModels.initial_guess(ocp; beam_data.init...)
2828
discretizer = CTDirect.Collocation()
2929
docp = CTDirect.discretize(ocp, discretizer)
30-
Test.@test docp isa CTModels.DiscretizedOptimalControlProblem
30+
Test.@test docp isa CTModels.DiscretizedModel
3131
3232
# NLP solver
33-
solvers = [CTSolvers.IpoptSolver(; ipopt_options...)]
33+
solvers = [CTSolvers.Ipopt(; ipopt_options...)]
3434
solvers_names = ["Ipopt"]
3535
3636
# NLP modelers
37-
modelers = [CTModels.ADNLPModeler(), CTModels.ExaModeler()]
38-
modelers_names = ["ADNLPModeler", "ExaModeler (CPU)"]
37+
modelers = [CTModels.ADNLP(), CTModels.Exa()]
38+
modelers_names = ["ADNLP", "Exa (CPU)"]
3939
4040
# solve DOCP with common solve and NLP modelers
4141
Test.@testset "DOCP level (solve)" verbose=VERBOSE showtiming=SHOWTIMING begin

0 commit comments

Comments
 (0)