I'm working with a finite element model in which I'm interested to minimize the average temperature at a surface. I have 15 independent variables in my model, including geometry, materials, flows, process times, etc. Most of my variables are continuous but some are discrete; and it takes me ~10 mins to run one simulation.

I'm not well educated on what optimization algorithms are available and how they work, so I was wondering if you can help me out to find which optimization techniques are suitable for this kind of situation: in which I have a (relatively) expensive function to evaluate as well as (relatively) many variables.

  • $\begingroup$ You've already identified a weakness in your knowledge -- it might be useful to pick up a book on optimization :-) $\endgroup$ – Wolfgang Bangerth Mar 20 at 16:09
  • $\begingroup$ Optimization is a huge topic to study, at this point I rather deep dive in a few suggestion of people more experienced than me than trying to understand all the methods out there. But be sure that I'll be educating myself eventually. $\endgroup$ – Ricardo Magallanes Mar 22 at 4:35

One commonly used approach is the "Response Surface Method" in which you sample the feasible region, running the full simulation at the sample points, then use regression techniques to fit a surrogate model to these points. You'll be assuming that the response in between your sample points is relatively smooth. Once you've fit that surrogate model, you optimize over the surrogate model to find its minimum. Then go back to the full simulation and verify that the surrogate model made a good prediction of the value at that point.

One advantage of this approach is that the simulations can be run at the various sample points in parallel, completely independent of each other.


You're asking for a method, but let me point you to a specific software package - SNOBFIT. I don't think it can handle discrete variables, but it does handle noisy cost function evaluations, which is critical when optimizing using numerical methods.

This is a Matlab package. It doesn't look like it's been updated recently. There is a Python port as well as a link to a paper describing the method and implementation.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.