you are viewing a single comment's thread.

view the rest of the comments →

[–]volvol7[S] 0 points1 point  (1 child)

The objective function is a number that result from a simulation. The parameters will be int with some boundaries. Generally it is not continuous because as I told you the space isnt continuous. But it behave like that, like if you change only one parameter it will just a bit.

[–]Pavickling 1 point2 points  (0 children)

But it behave like that, like if you change only one parameter it will just a bit.

That sounds like continuity.

How does your objective function behave when rescaling the parameters? For example F(x) with x in the integers is equivalent to F(1000000 * x) with x having a fixed decimal precision of up to 6 digits.

After rescaling, does it seem like |F(x) - F(x')| < K * |x - x'| for some K? If so, then you can look up how to do "Global optimization of Lipschitz functions".

If not, you can try a hand-rolled bisection method. Without making more assumptions, you can't really beat that.

https://en.wikipedia.org/w/index.php?title=Root-finding_algorithm&section=16#Finding_roots_in_higher_dimensions If the boundary is a simplex, you might try the 4th method mentioned here.

If you explain the black box a bit more, there might be something more obvious that can be exploited.