control-toolbox / control-toolbox/CTDirect.jl

Stage-wise controls for IRK methods

Open
#583 3 comments 1 reaction 1 assignee Claimed by @PierreMartinon View on GitHub
Dominant language
Julia
Stars
12
Forks
5
Avg merge
2h 44m
Merged PRs (30d)
1

Description

A big thanks to @vmerc !
- stagewise control is now the default for GL2 and GL3 scheme, with the stepwise control still available through options `gauss_legendre_2|3_constant_control`
- [DONE] manual sparsity patterns are not available yet, but should not be too difficult to adapt from the stepwise control formulation
- solution currently outputs the 'averaged' control at each step, not the individual stage controls (which could be retrieved with a bit of work in the high-level generic getter). The averaged control uses the same weights `b_j` as the slopes in the discretized dynamics `x_i+1 = x_i + h_i sum_j b_j f_ij`. Recall that the `f_ij` are part of the NLP unknown, and subject to the equations `f_ij = f(t_ij, x_ij, u_ij)`. The state values at the stages are treated as internal variables and computed via `x_ij = x_i + sum_k a_jk f_ik`. Alternately, it may be possible to use the `x_ij` as NLP unknowns and compute the `f_ij` instead with proper buffering. To be investigated.
- another related question would be the handling of path constraints, which are currently evaluated at time steps using the first stage controls, ie `g(t_i, x_i, u_i1)`. We could use the averaged control instead of the first one, or conversely evaluate the constraint at the stage times, reusing the `x_ij` from the dynamics part.

@ocots @jbcaillau @joseph-gergaud this version will be the 1.0.9 release

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.