Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
a6536ad
chore: add CTBase v0.17 compat
ocots Jan 17, 2026
bc58093
fix doc
ocots Jan 17, 2026
8ddf66b
Merge test dependencies into main Project.toml and fix documentation …
ocots Jan 17, 2026
5eb0624
remove OC
ocots Jan 17, 2026
d22ca98
Widen compat for CTParser v0.8.x migration
ocots Jan 17, 2026
4aed34f
refactor: adapt OptimalControl to CTModels v0.7 and CTSolvers integra…
ocots Jan 21, 2026
d1b6030
Merge pull request #693 from control-toolbox/breaking/ctmodels-0.7
ocots Feb 11, 2026
7212d64
foo
ocots Feb 11, 2026
1ccb707
foo
ocots Feb 11, 2026
797b20a
Update compatibility versions in Project.toml
jbcaillau Feb 11, 2026
50366f4
Update compatibility versions in Project.toml
jbcaillau Feb 11, 2026
01ba7f1
Add CTDirect reexports and tests
ocots Feb 11, 2026
c66440c
Add CTFlows reexports and tests
ocots Feb 11, 2026
ee25ee9
Add comprehensive reexport tests and fix syntax errors
ocots Feb 11, 2026
5cd36f0
add save
ocots Feb 11, 2026
511cc60
foo
ocots Feb 11, 2026
45a131e
Add solve function and canonical solve tests
ocots Feb 11, 2026
a51f771
Update test_canonical.jl progress display
ocots Feb 11, 2026
fa81f41
workflows
ocots Feb 11, 2026
0a21ab6
gpu
ocots Feb 11, 2026
51d93c8
gpu
ocots Feb 11, 2026
9f51d29
v1.10 removed for CI
ocots Feb 11, 2026
8cd0145
Add GPU tests to test_canonical.jl
ocots Feb 11, 2026
aa12b01
foo
ocots Feb 11, 2026
3aeba37
Refactor solve.jl initial guess handling
ocots Feb 12, 2026
632414a
Add tests for builder options forwarding
ocots Feb 12, 2026
74530bd
fix: correct reexport behavior and test expectations
ocots Feb 13, 2026
19357aa
Update options forwarding tests for CTSolvers v0.2.5-beta
ocots Feb 14, 2026
8f95f35
feat: Add professional table-aligned display for solve tests
ocots Feb 14, 2026
5793ebf
foo
ocots Feb 14, 2026
4470bda
foo
ocots Feb 14, 2026
3d8f176
fix: Translate French comments to English in test_print_utils.jl
ocots Feb 14, 2026
6cdbb9e
refactor: Move test_print_utils.jl to test/helpers/ directory
ocots Feb 14, 2026
c1a4b17
feat: Add Type column for CPU/GPU distinction in test output
ocots Feb 14, 2026
90c1ce7
feat: add options function to CTSolvers imports
ocots Feb 14, 2026
c9ff1f1
feat: add improved display function test suite
ocots Feb 14, 2026
39dfb6d
Finalize display helper integration and fix tests
ocots Feb 16, 2026
5fe16cd
Update imports and reexports for CTBase v0.18.1-beta compatibility
ocots Feb 16, 2026
c15c35c
Add strategy registry and available methods helpers
ocots Feb 17, 2026
8885f81
WIP: pending changes
ocots Feb 17, 2026
bbd199d
Add component completeness helper
ocots Feb 17, 2026
0eb3fcd
Add solve_explicit with contract tests and mock routing
ocots Feb 17, 2026
4113b76
Add strategy symbol extraction helper
ocots Feb 17, 2026
630867c
Add strategy completion helper using CTBase.complete
ocots Feb 17, 2026
a2d1fec
Add generic strategy builder with provided path
ocots Feb 17, 2026
a044cde
Task 08: Implement component completion orchestrating R3 helpers
ocots Feb 17, 2026
4e17abb
Task 09: Add comprehensive integration tests with real strategies
ocots Feb 17, 2026
bb6fa0e
Task 09: Complete comprehensive integration tests with method coverage
ocots Feb 17, 2026
1df7df9
Reorganize helpers and rename available_methods to Base.methods
ocots Feb 17, 2026
9cdedc9
Add MadNCL solver to registry and methods
ocots Feb 17, 2026
de67500
Standardize test suite imports and fix CTSolvers references
ocots Feb 17, 2026
cb1bf0a
Update print.jl docstrings to English following Julia standards
ocots Feb 17, 2026
89acf8c
Refactor solve_explicit to follow SOLID principles and DRY
ocots Feb 17, 2026
1ad1119
Refactor strategy_builders.jl: multiple dispatch + improved docs
ocots Feb 18, 2026
3e1874d
Complete solve_explicit implementation with comprehensive integration…
ocots Feb 18, 2026
9ad8b07
add reports to store
ocots Feb 18, 2026
e95b018
feat: implement SolveMode types and _extract_kwarg helper
ocots Feb 19, 2026
1ec1080
fix: correct workflow violations for tasks 01-03
ocots Feb 19, 2026
a49bd54
feat: implement _solve dispatch methods (Option C asymmetric signatures)
ocots Feb 19, 2026
b6b2d8f
refactor: reorganize solve files to avoid name redundancy
ocots Feb 19, 2026
ca254e2
refactor(solve): Option B - rename _solve dispatch to solve_explicit/…
ocots Feb 19, 2026
330d4c2
test(solve): cleanup and improve tests for Option B
ocots Feb 19, 2026
b21ebfb
style(tests): reduce Modeler column width in test table
ocots Feb 19, 2026
19e47ce
feat(solve): allow registry injection in dispatch and add mock dispat…
ocots Feb 19, 2026
18b3dac
feat(solve): implement solve_descriptive with strict option routing
ocots Feb 19, 2026
f1b20aa
test(solve): add test_solve_modes.jl for integration testing of solve…
ocots Feb 19, 2026
b0a3f27
Add design report for bypass option mechanism
ocots Feb 19, 2026
057ed35
Add descriptive comments to all test files
ocots Feb 20, 2026
2e539dc
Add bypass mechanism integration tests
ocots Feb 20, 2026
e38616b
foo
ocots Feb 20, 2026
a618ca5
foo
ocots Feb 20, 2026
da9fa86
feat: action options (initial_guess, display) routed via route_all_op…
ocots Feb 20, 2026
63a3935
fix: use _DEFAULT_INITIAL_GUESS constant in solve_explicit (DRY)
ocots Feb 20, 2026
c6ae139
test: remove unnecessary table printing in test_solve_modes.jl
ocots Feb 20, 2026
6a4e65b
test: fix missing CTBase import and update test_solve_modes to match …
ocots Feb 20, 2026
c0976f7
test: add build_initial_guess mocks and alias tests (init/i) in test_…
ocots Feb 20, 2026
cfae130
doc: add docstring for Layer 3 CommonSolve.solve in canonical.jl
ocots Feb 20, 2026
984f09c
refactor: remove alias :i for initial_guess, DRY with _INITIAL_GUESS_…
ocots Feb 20, 2026
5f1af3a
test: use _INITIAL_GUESS_ALIASES_ONLY constant in test_descriptive_ro…
ocots Feb 20, 2026
378f324
chore: bump version to 1.2.0-beta and fix docstring
ocots Feb 20, 2026
c9875be
docs: add CHANGELOG.md from v1.0.0 to v1.2.0-beta with breaking chang…
ocots Feb 20, 2026
6459675
some cleaning
ocots Feb 20, 2026
5e7e015
add save
ocots Feb 20, 2026
b91d3c1
added reexport ExaLinAlg
jbcaillau Feb 24, 2026
6063d60
Merge pull request #703 from control-toolbox/702-dev-fix-ctparser-ree…
jbcaillau Feb 24, 2026
6a27947
bumped to v1.2.1-beta
jbcaillau Feb 25, 2026
dc55d74
removed reexport of CTParser.ExaLinAlg, subsumed by ExaModels LinearA…
jbcaillau Feb 27, 2026
a80e51e
Merge pull request #708 from control-toolbox/ctparser-v0.8.4-beta
jbcaillau Feb 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,23 @@ on:
pull_request:

jobs:
call:
test-cpu-github:
uses: control-toolbox/CTActions/.github/workflows/ci.yml@main
with:
runs_on: '["ubuntu-latest", "windows-latest"]'
versions: '["1.12"]'
runs_on: '["ubuntu-latest", "macos-latest"]'
runner_type: 'github'
use_ct_registry: true
secrets:
SSH_KEY: ${{ secrets.SSH_KEY }}

# Job pour le runner self-hosted kkt (GPU/CUDA)
test-gpu-kkt:
uses: control-toolbox/CTActions/.github/workflows/ci.yml@main
with:
versions: '["1"]'
runs_on: '[["kkt"]]'
runner_type: 'self-hosted'
use_ct_registry: true
secrets:
SSH_KEY: ${{ secrets.SSH_KEY }}
3 changes: 3 additions & 0 deletions .github/workflows/Coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,8 @@ on:
jobs:
call:
uses: control-toolbox/CTActions/.github/workflows/coverage.yml@main
with:
use_ct_registry: true
secrets:
codecov-secret: ${{ secrets.CODECOV_TOKEN }}
SSH_KEY: ${{ secrets.SSH_KEY }}
4 changes: 4 additions & 0 deletions .github/workflows/Documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@ on:
jobs:
call:
uses: control-toolbox/CTActions/.github/workflows/documentation.yml@main
with:
use_ct_registry: true
secrets:
SSH_KEY: ${{ secrets.SSH_KEY }}
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,8 @@ Manifest.toml
*/.ipynb_checkpoints

#
docs/tmp/
.tmp/
.extras/
#.save/
.windsurf/
.reports/
9 changes: 5 additions & 4 deletions docs/Project.toml → .save/docs/Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,12 @@ Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb"

[compat]
ADNLPModels = "0.8"
CTBase = "0.16"
CTDirect = "0.17"
CTBase = "0.18"
CTDirect = "1"
CTFlows = "0.8"
CTModels = "0.6"
CTParser = "0.7"
CTModels = "0.8"
CTParser = "0.8"
CTSolver = "0.2"
CommonSolve = "0.2"
DataFrames = "1"
DifferentiationInterface = "0.7"
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ LinearAlgebra = "1"
MINPACK = "1"
MadNLP = "0.8"
MadNLPMumps = "0.5"
NLPModelsIpopt = "0.10"
NLPModelsIpopt = "0.11"
NLPModelsKnitro = "0.9"
NonlinearSolve = "4"
OrdinaryDiffEq = "6"
Expand Down
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ definition(ocp)

!!! note

We refer to [CTModels API](@extref CTModels Types) for more details about this struct and its fields.
We refer to the CTModels documentation for more details about this struct and its fields.

## [Attributes and properties](@id manual-model-attributes)

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ solve(ocp, :direct, :adnlp, :ipopt)
- `:exa`: the NLP problem is modeled by a [`ExaModels.ExaModel`](@extref). It provides automatic differentiation and [SIMD](https://en.wikipedia.org/wiki/Single_instruction,_multiple_data) abstraction.
3. The third symbol specifies the NLP solver. Possible values are:
- `:ipopt`: calls [`NLPModelsIpopt.ipopt`](@extref) to solve the NLP problem.
- `:madnlp`: creates a [MadNLP.MadNLPSolver](@extref) instance from the NLP problem and solve it. [MadNLP.jl](https://madnlp.github.io/MadNLP.jl) is an open-source solver in Julia implementing a filter line-search interior-point algorithm like Ipopt.
- `:madnlp`: creates a [MadNLP.MadNLP](@extref) instance from the NLP problem and solve it. [MadNLP.jl](https://madnlp.github.io/MadNLP.jl) is an open-source solver in Julia implementing a filter line-search interior-point algorithm like Ipopt.
- `:knitro`: uses the [Knitro](https://www.artelys.com/solvers/knitro/) solver (license required).

!!! warning
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
84 changes: 84 additions & 0 deletions .save/src/modelers.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# To trigger CTDirectExtADNLP and CTDirectExtExa
using ADNLPModels: ADNLPModels

import ExaModels:
ExaModels #,
# ExaModel,
# ExaCore,
# variable,
# constraint,
# constraint!,
# objective,
# solution,
# multipliers,
# multipliers_L,
# multipliers_U,
# Constraint

# # Conflicts of functions defined in several packages
# # ExaModels.variable, CTModels.variable
# # ExaModels.constraint, CTModels.constraint
# # ExaModels.constraint!, CTModels.constraint!
# # ExaModels.objective, CTModels.objective
# """
# $(TYPEDSIGNATURES)

# See CTModels.variable.
# """
# variable(ocp::Model) = CTModels.variable(ocp)

# """
# $(TYPEDSIGNATURES)

# Return the variable or `nothing`.

# ```@example
# julia> v = variable(sol)
# ```
# """
# variable(sol::Solution) = CTModels.variable(sol)

# """
# $(TYPEDSIGNATURES)

# Get a labelled constraint from the model. Returns a tuple of the form
# `(type, f, lb, ub)` where `type` is the type of the constraint, `f` is the function,
# `lb` is the lower bound and `ub` is the upper bound.

# The function returns an exception if the label is not found in the model.

# ## Arguments

# - `model`: The model from which to retrieve the constraint.
# - `label`: The label of the constraint to retrieve.

# ## Returns

# - `Tuple`: A tuple containing the type, function, lower bound, and upper bound of the constraint.
# """
# constraint(ocp::Model, label::Symbol) = CTModels.constraint(ocp, label)

# """
# $(TYPEDSIGNATURES)

# See CTModels.constraint!.
# """
# function constraint!(ocp::PreModel, type::Symbol; kwargs...)
# CTModels.constraint!(ocp, type; kwargs...)
# end

# """
# $(TYPEDSIGNATURES)

# See CTModels.objective.
# """
# objective(ocp::Model) = CTModels.objective(ocp)

# """
# $(TYPEDSIGNATURES)

# Return the objective value.
# """
# objective(sol::Solution) = CTModels.objective(sol)

# export variable, constraint, objective
Loading
Loading