Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
35 changes: 35 additions & 0 deletions .github/workflows/JOSS.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Compile JOSS paper

on:
push:
paths:
- 'joss/**' # Se déclenche uniquement pour les changements dans le dossier joss

jobs:
paper:
runs-on: ubuntu-latest
name: Paper Draft
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build draft PDF
uses: openjournals/openjournals-draft-action@master
with:
journal: joss
# This should be the path to the paper within your repo.
paper-path: joss/paper.md
- name: Upload PDF
uses: actions/upload-artifact@v4
with:
name: paper
path: joss/paper.pdf

- name: Commit PDF
uses: EndBug/add-and-commit@v9
with:
add: 'joss/paper.pdf'
message: 'chore: update paper.pdf'
author_name: 'GitHub Actions'
author_email: 'actions@github.com'
committer_name: 'GitHub Actions'
committer_email: 'actions@github.com'
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ pkg> add OptimalControl
>[!NOTE]
>The package requires Julia version 1.10 or later.

## Motivation

The guiding philosophy of OptimalControl.jl is to offer, to our knowledge, the only Julia package that unifies both direct and indirect methods for optimal control within a single, coherent framework. This fills a gap in a landscape where existing tools are fragmented across programming languages and paradigms, and are usually restricted to a single family of methods. The package provides a domain-specific language that closely matches mathematical notation, together with multiple discretization schemes and shooting methods, and planned support for homotopy continuation methods. Its modeler–solver separation makes it agnostic to the underlying NLP modeling backend and optimization solver, and enables seamless execution on both CPU and GPU with minimal user intervention. Combined with an ecosystem of domain-specific applications, tutorials, and benchmarking tools, this design targets researchers and engineers working in optimal control, control theorists developing new algorithms, and students learning the field through interactive tutorials.

## Basic usage

Let us model and solve a simple optimal control problem, then plot the solution:
Expand All @@ -85,6 +89,10 @@ plot(sol)

For more details about this problem, please check the basic example presented in the [documentation](https://control-toolbox.org/OptimalControl.jl).

## Testing

OptimalControl.jl is the umbrella package of a multi-repository ecosystem with a layered testing strategy: each sub-package has its own suite combining unit tests, integration tests, and code-quality checks, while the umbrella package adds strong end-to-end tests solving complete problems by both direct and indirect methods. Continuous integration runs on Linux, macOS, and Windows, on both CPU and GPU, through reusable workflows centralized in [CTActions](https://github.com/control-toolbox/CTActions), with code coverage tracked on Codecov and downstream packages guarded against regressions through breakage tests. Part of the test code is written with AI assistance, always under human review.

## Citing us

If you use OptimalControl.jl in your work, please cite us:
Expand Down
8 changes: 8 additions & 0 deletions README.template.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ The OptimalControl.jl package is part of the [control-toolbox ecosystem](https:/

<!-- INCLUDE_INSTALL -->

## Motivation

The guiding philosophy of OptimalControl.jl is to offer, to our knowledge, the only Julia package that unifies both direct and indirect methods for optimal control within a single, coherent framework. This fills a gap in a landscape where existing tools are fragmented across programming languages and paradigms, and are usually restricted to a single family of methods. The package provides a domain-specific language that closely matches mathematical notation, together with multiple discretization schemes and shooting methods, and planned support for homotopy continuation methods. Its modeler–solver separation makes it agnostic to the underlying NLP modeling backend and optimization solver, and enables seamless execution on both CPU and GPU with minimal user intervention. Combined with an ecosystem of domain-specific applications, tutorials, and benchmarking tools, this design targets researchers and engineers working in optimal control, control theorists developing new algorithms, and students learning the field through interactive tutorials.

## Basic usage

Let us model and solve a simple optimal control problem, then plot the solution:
Expand All @@ -39,6 +43,10 @@ plot(sol)

For more details about this problem, please check the basic example presented in the [documentation](https://control-toolbox.org/OptimalControl.jl).

## Testing

OptimalControl.jl is the umbrella package of a multi-repository ecosystem with a layered testing strategy: each sub-package has its own suite combining unit tests, integration tests, and code-quality checks, while the umbrella package adds strong end-to-end tests solving complete problems by both direct and indirect methods. Continuous integration runs on Linux, macOS, and Windows, on both CPU and GPU, through reusable workflows centralized in [CTActions](https://github.com/control-toolbox/CTActions), with code coverage tracked on Codecov and downstream packages guarded against regressions through breakage tests. Part of the test code is written with AI assistance, always under human review.

## Citing us

If you use OptimalControl.jl in your work, please cite us:
Expand Down
1 change: 1 addition & 0 deletions _typos.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
locale = "en"
extend-ignore-re = [
"ded",
"ois",
]

[files]
Expand Down
8 changes: 8 additions & 0 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

The OptimalControl.jl package is the root package of the [control-toolbox ecosystem](https://github.com/control-toolbox). The control-toolbox ecosystem gathers Julia packages for mathematical control and applications. It aims to provide tools to model and solve optimal control problems with ordinary differential equations by direct and indirect methods, both on CPU and GPU.

## Motivation

The guiding philosophy of OptimalControl.jl is to offer, to our knowledge, the only Julia package that unifies both direct and indirect methods for optimal control within a single, coherent framework. This fills a gap in a landscape where existing tools are fragmented across programming languages and paradigms, and are usually restricted to a single family of methods. The package provides a domain-specific language that closely matches mathematical notation, together with multiple discretization schemes and shooting methods, and planned support for homotopy continuation methods. Its modeler–solver separation makes it agnostic to the underlying NLP modeling backend and optimization solver, and enables seamless execution on both CPU and GPU with minimal user intervention. Combined with an ecosystem of domain-specific applications, tutorials, and benchmarking tools, this design targets researchers and engineers working in optimal control, control theorists developing new algorithms, and students learning the field through interactive tutorials.

## Installation

To install OptimalControl.jl, please [open Julia's interactive session (known as REPL)](https://docs.julialang.org/en/v1/manual/getting-started) and use the Julia package manager:
Expand Down Expand Up @@ -124,6 +128,10 @@ If you want to ask a question, feel free to start a discussion [here](https://gi

If you want to add an application or a package to the control-toolbox ecosystem, please follow this [set up tutorial](https://github.com/orgs/control-toolbox/discussions/65).

## Testing

OptimalControl.jl is the umbrella package of a multi-repository ecosystem, and testing is organized in layers. Each sub-package (`CTBase`, `CTParser`, `CTModels`, `CTDirect`, `CTSolvers`, `CTFlows`) has its own test suite combining unit tests, integration tests, and code-quality checks (e.g. with [Aqua.jl](https://github.com/JuliaTesting/Aqua.jl)). At the umbrella level, OptimalControl.jl adds strong end-to-end integration tests that solve complete optimal control problems with both direct and indirect methods. Continuous integration runs on Linux, macOS, and Windows, on both CPU and GPU (via a self-hosted CUDA runner), through reusable workflows centralized in [CTActions](https://github.com/control-toolbox/CTActions). Code coverage is tracked on [Codecov](https://codecov.io), downstream packages are guarded against regressions through dedicated breakage tests, and beta versions are distributed during development via a local registry, [ct-registry](https://github.com/control-toolbox/ct-registry). Part of the test code is written with the help of AI agents, always under human review.

## Reproducibility

```@setup main
Expand Down
Loading