Minimizing discontinuous 5-dfunction using fminsearch()

Hi all,
I am minimizing a scalar function of 5 variables which looks something like:
f(x1,...x5) = -x1*x2, if g(x1,...x5)=1; infinity, if g(x1,...x5)=0
where g is can only take on two values, and cannot be expressed in closed-form. Because of the essential discontinuities in the domain, I figured I better try a derivative-free method like Nelder-Mead Simplex (fminsearch). It is not performing very well. While it does converge (even for very low tolerances) it is not reaching the local minima. The function changes very little, if at all, between iterations. See the end of the post for a history of a typical optimization. Does anybody have any idea how to adjust fminsearch() for this problem, or suggest an alternative optimizer?
Many thanks,
s.
EDIT: I think the problem might be that the discontinuity occurs very close to the stationary point, which fminsearch() reportedly does not handle well. Any ideas about how to solve this?
Iteration Func-count min f(x) Procedure
0 1 -0.00157673
1 6 -0.00165556 initial simplex
2 7 -0.00165556 reflect
3 9 -0.00171195 expand
4 11 -0.00172117 reflect
5 13 -0.00188736 expand
6 14 -0.00188736 reflect
7 15 -0.00188736 reflect
8 17 -0.00194533 reflect
9 19 -0.00194533 contract inside
10 21 -0.00214186 expand
11 22 -0.00214186 reflect
12 24 -0.00215877 reflect
13 26 -0.00242805 expand
14 28 -0.00272589 expand
15 30 -0.00272589 contract inside
16 31 -0.00272589 reflect
17 33 -0.00272589 contract inside
18 35 -0.00272589 contract inside
19 37 -0.00274379 reflect
20 39 -0.00274379 contract inside
21 41 -0.00274379 contract inside
22 43 -0.00274379 contract inside
23 45 -0.00274379 contract inside
24 47 -0.00274379 contract inside
25 49 -0.00274379 contract inside
26 51 -0.00274379 contract inside
27 53 -0.00274379 contract inside
28 55 -0.00274379 contract inside
29 56 -0.00274379 reflect
30 58 -0.00278432 reflect

Answers (0)

Categories

Find more on Optimization in Help Center and File Exchange

Asked:

on 22 Aug 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!