fstab
fstab

Reputation: 5029

parameter optimization of black-box function in MATLAB

I need an elegant, simple system to find out what is the highest value returned from a deterministic function given one, or more, parameters.

I know that there is a nice implementation of genetic algorithms in MATLAB, but actually, in my case this is an overkill. I need something simpler.

Any idea?

Upvotes: 0

Views: 1016

Answers (2)

Nras
Nras

Reputation: 4311

You cannot find a maximum with Matlab directly, but you can minimize something. Multiplying your function by -1 transformes your "find the maximum"-problem into a "find the minimum"-problem, which can be found with fminsearch

f = @(x) 2*x - 3*x.^2; % a simple function to find the maximum from
minusf = @(x) -1*f(x); % minus f, find minimum from this function
x = linspace(-2,2,100);
plot(x, f(x));
xmax = fminsearch(minusf, -1);
hold on
plot(xmax,f(xmax),'ro') % plot the minimum of minusf (maximum of f)

The result looks like this: this

Upvotes: 2

MeMyselfAndI
MeMyselfAndI

Reputation: 1320

A real simple idea is to use a grid search approach, maybe with mesh refinements. A better idea would be to use a more advanced derivative-free optimizer, such as the Nelder-Mead algorithm. This is available in fminsearch.

You could also try algorithms from the global optimization toolbox: for example patternsearch or the infamous simulannealbnd.

Upvotes: 1

Related Questions