What's the best method to maximize the value of slow multivariate function? Here is what I know about the function:

  1. Number of parameters is ~ 10.
  2. It takes considerable amount of time to compute the value of the function for single variable set. Let's say 30 minutes.
  3. Function seems to be concave against every individual parameter.
  4. I can run computation in parallel.

All my code is in Java and I'm interested in coding crude version of the optimization algorithm myself rather than using some industry solver.

  • 1
    $\begingroup$ Here's a related question I posted a while back, but most of the answers were about existing packages: scicomp.stackexchange.com/questions/10068/… $\endgroup$ – AJK Aug 9 '15 at 3:41
  • $\begingroup$ If you can do computations in parallel then scan parameters and generate a look-up table of values; then use the table and interpolation to solve the optimization problem. $\endgroup$ – Maxim Umansky Aug 9 '15 at 5:18
  • $\begingroup$ What does "slow multivariate function" mean? $\endgroup$ – nicoguaro Aug 9 '15 at 6:35
  • 1
    $\begingroup$ slow multivariate function - f(x1, x2, x3, ...) that takes a long time to compute, e.g. 30 minutes. To contrast here is fast multivariate function: f(x, y, z) = x + y * z^2 $\endgroup$ – ak. Aug 9 '15 at 7:15
  • 2
    $\begingroup$ If the underlying function is reasonably smooth, then finite difference derivative approximations can be effective. If the underlying function is inherently non-smooth, then you don't want to use any optimization method that assumes smoothness. It sounds as though you could get away with finite difference approximations to the gradient (with 10 parameters, you can get a finite difference gradient with 11 function evaluations in paralllel.) $\endgroup$ – Brian Borchers Aug 11 '15 at 3:51

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.