An issue related to the starting points in MultiStart

Hello there,
I am using the "MultiStart" algorithm, in conjunction with the local solver 'fmincon', for my optimization problem. I have created a “RandomStartPointSet” object to produce 3 random start points. Below is my set-ups.
%-- opts = optimset('Algorithm','interior-point');
problem = createOptimProblem('fmincon','objective',fh,'x0',x0,'lb',lb,'ub',ub,'options',opts); % “fh” is my %customized function handle that depends on the parameter values
ms=MultiStart('StartPointsToRun','bounds','Display','iter','MaxTime',3600);
rs = RandomStartPointSet('NumStartPoints',3); %
allpts = {rs};
[x fval eflag output manymins] = run(ms,problem,allpts); %--
The optimization procedure is fine, but I observed the following phenomenon:
The parameter values (which need to be optimized) in these 3 start points are identical, for instance, start points 1, 2 and 3 have the same parameter values [0.55 0.55], and the optimization processes return the same cost function values by running optimizations w.r.t. start points 1, 2 and 3. After executing the optimization (or searching) w.r.t points 1, 2 and 3, the parameter values do change then, for instance, from [0.55 0.55] to [0.1 0.8], but again they are kept identical for points 1, 2 and 3, and so on. The above phenomenon means that, say, start points 2 and 3 are simply repeating what start point 1 is doing, and this is a waste of the computing resources.
I wonder what the possible reason is for this phenomenon, and how I can avoid it.
Many thanks for your attention and look forward to hearing from you.
Best regards,
Xiaodong

Answers (1)

I suggest you try generating the random start points using the list method:
pts = list(rs,problem)
Are all three points identical?
Also, you don't have to use allpts, you can pass rs to MultiStart directly.
Alan Weiss
MATLAB mathematical toolbox documentation

3 Comments

Hi Alan,
Thank you for your suggestion. I actually have an additional segment of code (which I did not include in the post earlier) like
ptmatrix = list(rs,problem)
to check the generated start points. They are indeed different as implied by the name "RandomStartPointSet". But interestingly, it seems that MultiStart does not use these generated random points neither. I got something else recorded in the optimization process, which is another strange thing that I could not figure out (I, however, have to admit that I have very limited experience with the "MultiStart" algorithm).
I am not sure if this is somehow related to the customized function handle in my codes, which is used to call an .exe program written in c++. However, as I have observed, parameter values are indeed updated and passed to the program, and the cost function values will change after all 3 (identical) start points are tried. The optimization process goes OK actually, but in a kind of inefficient way, as if running with only 1 start point :(.
Best regards,
Xiaodong
It sounds to me as if your code is indeed doing something mysterious. I have no idea what might be going on.
However, you are free to choose any start points for MultiStart. So, for example, you can take ptmatrix, set it as a CustomStartPointSet, and then pass that as the start points for MultiStart. Whatever your code is doing, it won't be able to change those points.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
Thank you. I will try it.
Best,
Xiaodong

Sign in to comment.

Categories

Asked:

on 4 Apr 2013

Community Treasure Hunt

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

Start Hunting!