In the PYCYCLE's off-design points, I wanted to control with N1 instead of thrust and T4, so I changed the balance module as follows: balance.add_balance('FAR_core', eq_units='rpm', lower=1e-4, val=.017) self.connect('balance.FAR_core', 'burner.Fl_I:FAR') self.connect('LP_Nmech', 'balance.lhs:FAR_core') The error is as follows: RuntimeError: Collected errors for problem 'problem79': 'case1' : Attempted to connect from 'LP_Nmech' to 'balance.lhs:FAR_core', but 'LP_Nmech' is an input. All connections must be from an output to an input. How can I change it
As an undergrad student of engineering here in Kenya i just stumbled across this concept of OpenMDAO and from these presentarions there's really alot to learn. My passion for aerospace has even been accelerated.
Hi sir, for the study i am conducting right now in high school, i have only one decision variable that correlates to two conflicting functions that i want to minimize. this means the objective space would only have a Pareto front and not any "surfaces" of different combinations of the two objectives, because defining the value of one function immediately locks my only variable and hence the second function as well. my question is... in such cases, is it reasonable to approach these situations with the same MOO techniques? or if not, could you please guide me to some other ways that I can achieve such MOO with only one decision variable? Thanks in advance.
Thanks for explaining your situation well! This is a sort of special case because you have only one design variable and two functions of interest. If you only have one design variable, you're pretty limited in how much optimization you can do in that space. If possible, reformulating your problem to have more design freedom would be helpful, otherwise there's not much to do to explore the space.
Hi, thank you for this excellent video! I have a quick question. If we have three blocks (like input1, input2, input3 from left to right) in horizontal direction, which are inputs to three analysis blocks (like module1, module2, module3), respectively. Does it mean input1 leads to input2, and input2 leads to input3? Or the three inputs can be in random order? Thanks!
Hi there, I'm not sure if I interpreted your question correctly, but you can have an input that feeds into multiple components downstream of the first component. The order matters because if the flow loops back to an earlier component then there is an analysis cycle which must be resolved with a solver.
How would you recommend developing these partials and handing them over to OpenMDAO? Would you suggest a symbolci python package to compute them? Equally, I have run a few loops in OpenMDAO without informing the partials at all, and it still solves the problem. Is it developing partials for me automatically? Thanks!
Hey, sorry for the delay! You could absolutely use a symbolic tool to get the derivatives, or recently we've had good success with the tool Jax. Without seeing your model, I'm not certain about the details. You might've been using finite difference approximated derivatives, which OpenMDAO can compute, but that's not the default. Alternatively, maybe the problem appeared to solve correctly but actually didn't converge to the right answer.
@OpenMDAO Do you have any suggestions for adjoint solver tools? And what is the default partials method withing OpenMDAO? I do not recall telling my model to use FD
@@AeroStark What sort of adjoint solver tools are you looking for? OpenMDAO can combine the partials in both the forward (direct) and reverse (adjoint) modes. If you're talking about linear system solvers, OpenMDAO works with a few. If you're talking about defining partial derivatives, check out Jax or similar AD tools. The default behavior for partials if not defined is that they are 0. Here's more info about approximating partials: openmdao.org/newdocs/versions/latest/features/core_features/working_with_derivatives/approximating_partial_derivatives.html
I second @flourishomotola5306, there are paid videos FAR from the quality of this content. Straight to the point, clear, well explained, and high quality content overall. Thanks @OpenMDAO
This is an excellent overview with real-world engineering. Courses on optimization can get extremely theoretical and abstract. The examples and plots help me understand it a lot better. I am a PhD student in data science at Arizona State with five masters degrees - mostly in engineering (lol).
OpenMDAO is indeed used in industry, across different fields, such as aerospace vehicle design, wind energy, financial markets, and others. That being said, OpenMDAO is a tool to help you perform MDO. If you're looking for a career in this space, it makes sense to learn MDO in general, and you can use OpenMDAO to help you solve complicated problems. I acknowledge I'm biased too as I've made a career out of doing MDO using OpenMDAO. :)
secondly if you find yourself optimizing multiple outcomes you might want to think about your optimization space. for example: maybe you dont want to optimize fuel burn and zero-fuel weight but want to optimize ROI on that plane for your given business model. answering that question will give you weights or a greater function that you might want to optimize.
That's another way to combine objectives. What that means is that each objective would be weighted by the current value of the other, whereas adding them together assumes no such weighting. The most common type of multiobjective optimization adds the objectives together with different pre-defined weights, as shown in the latter part of this lesson.
Thanks for your kind words! I'm mostly using Manim Community (www.manim.community/) for the math and graphs and Adobe Premiere Pro for the video editing.
Hey. Im working on a project in which myself and other 15 engineering students are going to develope a hydrogen powered airplane. I cam across this technique in a paper and want to learn to adapt it to our problem. That should happen quite fast, because our design freeze is in december and the important design decisions are going to happen in the next month or two. What is the best literature you would recommend for me to be able to apply this as soon as possible? thanks :)
@@-.-.2272 That's a great place to start! It really comes down to how involved you want to do your optimization and what kind of models you already have. If you decide to do multidisciplinary design optimization, checking out the OpenMDAO docs is a must: openmdao.org/twodocs/versions/latest/main.html And for more of a theoretical treatment beyond what the Practical MDO course shows, I'd recommend this book: mdobook.github.io/ Best of luck!
@@OpenMDAO i have read quite alot about the topic of mdo now. But i feel like i won't be able to master open mdao within the next two weeks. Do you maybe know an alternative software that is a bit simpler. In our systems we have rather simple and alot of linear equations connecting weight, range and efficiency. Maybe open mdao is abit overpowered for this application
@@-.-.2272 I understand your considerations. I'd suggest simply constructing your models by hand and using a simpler package, like Scipy's optimize methods (docs.scipy.org/doc/scipy/reference/optimize.html) to control the model. You won't be able to model or optimize complicated multidisciplinary models with as much control, but if you're able to parameterize and understand your model, that's a good simple approach.
Hi, Thank for discussing XDSM. My Professor always admire when I go with XDSM of the problem to him. One more con of pyXDSM is that it ignores characters after a underscore in variable names, and now I got a habit of naming variables as: MyVariableName. 1. What are your thoughts on XDSMjs? I don't have js background, so your inputs would really help. 2. The animations you showed were really awesome. I believe those were done in power-point!? Also the INTRO beatbox is the best
Hi, thanks for your kind comments and discussion! I'm glad to hear you're using XDSM diagrams. I just checked and you can use underscores in your variable names if you escape it beforehand, like: "D_1" becomes "D\_1". It will then display at "D_1". 1. I haven't personally used XDSMjs, but I generally like the tools that ONERA develops. I think if I wasn't used to pyXDSM, I'd might use XDSMjs. 2. Thank you! The majority of the figure graphics are done in Manim (manim.community/) and the intro graphics were done in Adobe After Effects.
I am getting this error for a project I am doing - "Positive directional derivative for linesearch". Is it because a solver is not converging or the optimizer is not converging...looking deeper I found that for some iterations derivative is 'None' and it was 'None' at least few times before it threw this error. For gradient calcualtions, I am using 'fd' as one of the discipline specific solver I am using do not provide derivatives out of the box. I am wrapping this blackbox solver as explicit component. Thank you !
Hey Kapil, thanks for your comment. That could be caused by a few different reasons and without looking at code it's challenging to diagnose what's going on. Could you please post a question to StackOverflow with the `openmdao` tag with a code snippet so we can better help you? Thanks! stackoverflow.com/questions/tagged/openmdao
Thanks for the question! It's usually best practice to add a nonlinear and linear solver at the lowest level possible that resolves the coupling, so it'd be for each of the cycles. You could do it just once at the problem.model level, but that means that the entire model is within the solver, which may lead to unnecessary computational overhead. If you're running into solver convergence issues, it might make sense to have solvers at the cycle level and at the top level too; it's certainly problem dependent.
Thank you for your interest! Late next week we will release the first batch of lessons and Python notebooks. I'll comment here when those are publicly available.
Here is the website for the course: openmdao.github.io/PracticalMDO/intro.html We will be rapidly updating it with new notebooks and other video lessons (which will also be on this RU-vid page). Please let us know if you have any questions!