Rapid-Design-of-Systems-Laboratory / beluga

General purpose indirect trajectory optimization
Other
25 stars 6 forks source link

Implement BDF method to observe its ability to bypass solving for control law explicitly #54

Open SeanMatthewNolan opened 6 years ago

SeanMatthewNolan commented 6 years ago

I have been reading online about solving DAE problems. It appears that BDF (Backward differentiation formula) implicit methods are able to be able to handle the incorporation of algebraic equations in an efficient way. It may still result in slowing the solver to much, but in my opinion, it is worth checking out to enable solving some problems where both explicit solving and index reduction fail. Collocation may be used to bypass the requirement also.

msparapa commented 6 years ago

Continuing my thought from when I closed #83. To implement BDF methods I think there'd be two main steps in your journey.

  1. You'll need to implement an implicit solver. This will probably go in a TimeStepper() subclass similar to how I have the RK() time stepper subclassed but it raises a NotImplementedError when you try to solve an implicit problem with it.
  2. I think the BDF methods are handled differently than the RK family, so the time stepper logic will also be different. The one primary difference between normal ode solvers and what we I have set up now is that instead of adding infinitesimal EOM outputs to your state, you always have to use a lie group's left action. But I mentioned before that you can always define a trivial lie group with some random system on real space together with addition, so the left action works out the same.