0
$\begingroup$

If this question is out of scope for this forum, before closing it please advise me on a better platform to ask my question!

I'm very new to this field so apologies if my questions are not clear. I am fitting a known model to my data, and looking to obtain 3 parameters from 2 different functions simultaneously, which necessitates the use of multi-objective optimization algorithms.

I tried simply to minimize norm(error_fcn(1)) + norm(error_fcn(2))^2 using a simple scalar minimizer (from Python's scipy package) but often the output is so huge, that overflow occurs, crashing the programme. (where err_fnc is the difference between the real data and the model)

So after some research I decided to try a Python package (pymoo) offering evolutionary algorithms, specifically NSGA-II is the one I used. I optimized the parameters manually and the results seem promising (Close to what I expect the 3 parameters to be). Of course it outputs several solutions, depending on the population size, and in my case for my specific problem, I only need one solution for each parameter. Funnily enough running it with a population size of 1 and off-spring of about 10 (yeah, I am desperate) also gave a decent output on a quick test run, but my gut tells me this approach is wrong and should not be done, given the mechanism by which such algorithms work.

I tried the other algorithms in the package, but they seem to be for single-objective optimization or also producing a set of solutions (the other evolutionary algorithms I guess).

Can anyone point me in the right direction in terms of either what to read, or what kind of algorithms to search, where multiple objectives can be used to output a single best solution?

$\endgroup$
3
  • 1
    $\begingroup$ It seems like you're confused about what multiobjective optimization is. MOO is about finding multiple candidate solutions balancing multiple conflicting objectives. I want cars that are cheap and fast. Cheap and fast are often conflicting. A Ferrari is very fast, but not very cheap. A Focus is cheap but not that fast. Which is the "better" solution? There isn't one. They're both valid solutions along the Pareto front of cars. That's what MOO is for. If you just have one function to minimize (as in your sum of squared errors), you shouldn't reach for something like NSGA-II. $\endgroup$
    – deong
    Jul 19 at 14:47
  • $\begingroup$ Thank you for the reply! I was advised to use MOO in another forum, because I need to optimize two objective functions simultaneously. Ideally I would do some curve fitting / non-linear least squares, but it is important the parameters are optimized for both functions simultaneously (and no, they are not conflicting). As I said, just summing the norms usually gives me huge values and hence overflow errors, so I can't finish even a single 'experiment'. Can you kindly recommend some other method I can try out ? $\endgroup$
    – Isquare1
    Jul 19 at 16:45
  • 1
    $\begingroup$ From your description, I think what you’re trying to do by ‘optimize two functions simultaneously’ is define some scalarization of the two functions and then find the one set of parameters that minimizes that scalarization. The scalarization gives you one objective function, and you need a single objective optimizer. If your two functions are f(x,y,z) and g(x,y,z), NSGA-II is trying to find 100 or whatever different (x,y,z) tuples that together cover the Pareto front of f and g. Both scenarios have their uses. Which one addresses what you need to do should drive which approach you use. $\endgroup$
    – deong
    Jul 20 at 4:09

Your Answer

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

Browse other questions tagged or ask your own question.