One of our project partners suggested to use GitHub - OpenMDAO/OpenMDAO: OpenMDAO repository. for control co-design, which is based on Python.
Is this a good framework, or are there better alternatives using Julia?
One of our project partners suggested to use GitHub - OpenMDAO/OpenMDAO: OpenMDAO repository. for control co-design, which is based on Python.
Is this a good framework, or are there better alternatives using Julia?
InfiniteOpt.jl is much more performant than OpenMDAO on the (very few) problems I have compared.
I have 0 experience with Julia, but quite a lot with OpenMDAO, which I think is a great tool
It particularly shines for:
It’s been developed by NASA for several years, so it’s a mature product.
Sorry to necro the thread here, just wanted to chime in. I have been using OpenMDAO since 2020, and for a good number of years I spent 90% of my time developing optimization models of launch vehicles and tactical missiles with it. I could say I know it from a user perspective very well.
It’s really a good piece of software, and NASA has been continuously developing since the early 2010s.
You can build up big, non trivial models with it due to the hierarchical way you define things in term of groupings of components, and each group can be assigned solvers. So if you had implicit relationships, for say, an engine cycle balance, you can have a solve for that subsystem while integrating it into a trajectory optimization problem. And another group for mass calculations, and another structural calcs, etc etc.
Can get a bit unwieldy when you want to make things highly configurable, with varying numbers and types of components, building the model at runtime from config files with lots of options.
The debugging tools in OpenMDAO are great too. You can see everything that is happening in your system with the N^2 matrix visualizer, and there are tools to check partial and total derivatives, record solver and optimizer iterations and so on.
Lately I have been working with ModelingToolkit and the SciML ecosystem. Not doing optimization so much but simulation.
Very different in how they work, but it got me thinking about how you could have something like OpenMDAO in Julia integrated in the SciML ecosystem without re-inventing the wheel, leveraging MTK.