control-toolbox / CTDirect.jl

Direct transcription of an optimal control problem and resolution
http://control-toolbox.org/CTDirect.jl/
MIT License
9 stars 5 forks source link

Basic grid refinement #119

Open jbcaillau opened 3 months ago

jbcaillau commented 3 months ago

@PierreMartinon now that it is possible to pass a time_grid, we can rather easily combine solve with grid refinement and warm start to solve iteratively on a adaptive discretisation.

ocots commented 3 months ago

@PierreMartinon @jbcaillau @0yassine0 In the Space shuttle problem from JuMP tutorial, the time steps are considered as variables to optimize. Do we agree that we cannot do that for the moment?

PierreMartinon commented 3 months ago

We can do

We cannot do

On the other hand, we could try to do that by using a fixed grid on [0,1] with a series of n positive optimization variables Dt_i, and manually rescale the dynamics. I expect the numerical cost to be horrendous though.

jbcaillau commented 3 months ago

@ocots @PierreMartinon @0Yassine0 yes, the usual manual trick works to glue things (e.g. multidynamics with unknown switching time). Actually, it is interesting and not completely standard to optimise the grid points themselves: interesting to compare with a uniform grid size (should be better, but price to pay = more vars).

@ocots I remember that you did sth similar, no?

@PierreMartinon @joseph-gergaud not very difficult to add this possibility in the transcription process (enforcing a lower bound on each $t_{i+1}-t_i$ to avoid stupid things), provided there is a demonstrated advantage.

PierreMartinon commented 3 months ago

I think I can do a simple example for this. @jbcaillau, you typically take positive Dt_i instead of the t_i themselves, easier constraint ;-)

PierreMartinon commented 2 months ago

@PierreMartinon now that it is possible to pass a time_grid, we can rather easily combine solve with grid refinement and warm start to solve iteratively on a adaptive discretisation.

A basic illustration here https://github.com/control-toolbox/CTDirect.jl/pull/158 (on uniform grids, but still passed as explicit grids...)

PierreMartinon commented 2 months ago

@ocots @PierreMartinon @0Yassine0 yes, the usual manual trick works to glue things (e.g. multidynamics with unknown switching time). Actually, it is interesting and not completely standard to optimise the grid points themselves: interesting to compare with a uniform grid size (should be better, but price to pay = more vars).

@ocots I remember that you did sth similar, no?

@PierreMartinon @joseph-gergaud not very difficult to add this possibility in the transcription process (enforcing a lower bound on each ti+1−ti to avoid stupid things), provided there is a demonstrated advantage.

Added an example in https://github.com/control-toolbox/CTDirect.jl/pull/158