Here is a list of typical problems and recommendations for dealing
with them.

Problem

Recommendation

The solution found by fminbnd or fminsearch does
not appear to be a global minimum.

There is no guarantee that you have a global minimum
unless your problem is continuous and has only one minimum. Starting
the optimization from a number of different starting points (or intervals
in the case of fminbnd) may help to locate the
global minimum or verify that there is only one minimum. Use different
methods, where possible, to verify results.

Sometimes an optimization problem has values of x for
which it is impossible to evaluate f.

Modify your function to include a penalty function to
give a large positive value to f when infeasibility
is encountered.

The minimization routine appears to enter an infinite
loop or returns a solution that is not a minimum (or not a zero in
the case of fzero).

Your objective function (fun) may
be returning NaN or complex values. The optimization
routines expect only real numbers to be returned. Any other values
may cause unexpected results. To determine whether this is the case,
set

options = optimset('FunValCheck', 'on')

and call the optimization function with options as
an input argument. This displays an error when the objective function
returns NaN or complex values.

Optimization problems may take many iterations to converge.
Most optimization problems benefit from good starting guesses. Providing
good starting guesses improves the execution efficiency and may help
locate the global minimum instead of a local minimum.

Sophisticated problems are best solved by an evolutionary approach,
whereby a problem with a smaller number of independent variables is
solved first. Solutions from lower order problems can generally be
used as starting points for higher order problems by using an appropriate
mapping.

The use of simpler cost functions and less stringent termination
criteria in the early stages of an optimization problem can also reduce
computation time. Such an approach often produces superior results
by avoiding local minima.