tudat-team / tudatpy

A Python platform to perform astrodynamics and space research.
https://tudat-space.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
29 stars 29 forks source link

Allow pickling of `TransferTrajectory` #162

Open Pocket-titan opened 3 weeks ago

Pocket-titan commented 3 weeks ago

Hi!

I noticed that a lot of the examples using pygmo for optimization have to rely on some "hacks" (re-initializing the object for every thread: can be expensive and clunky) (one, two) to make the object pickle-able so the optimization can be parallelized. The fundamental issue as I understand it is the TransferTrajectory class: cloudpickle can't pickle this, and for me the lambda trick also doesn't circumvent this.

However, pybind11 offers pickling support if you define the appropriate methods on the C++ side. Is this something that's maybe desirable?

DominicDirkx commented 1 week ago

This would definitely be good to have, we just have not yet gotten around to it yet :) Can you explain why the lambda trick does not circumvent the issue in this case?