Correct implementation of multi start option with pre-specified starters

11 views (last 30 days)
Hello,
I need to solve an optimization problem with multi start option in which I supply the initial points completely. However, I got stocked and I really do not understand how it works. In this regard, I havw 2 questuions. Just consider the example in MATLAB as bellow:
fun = @(x) x.^2 + 4*sin(5*x);
rng default % For reproducibility
opts = optimoptions(@fmincon,'Algorithm','sqp');
problem = createOptimProblem('fmincon','objective',...
fun,'x0',3,'lb',-5,'ub',5,'options',opts);
ms = MultiStart;
[x,f] = run(ms,problem,20)
My first question is this:
What is the meaning of number 20 in the last command [x,f] = run(ms,problem,20)? Does it mean that the
fmincon algorithm is going to try a fixed starting points x0=3, 20 times? This makes no sense to me as one try with one starter is fine. Does it mean that fmincon is going to try 20 different starting points? This also does not make sense to me since it clearly does not respect MY STARTINF point(s).
My second question:
Now, imagine that I would like to try 3 starting points x0=-4,x0=-3,x0=-2 at the same time. I troed the following
fun = @(x) x.^2 + 4*sin(5*x);
N=3;x0=[-4;-3;-2];
lb1=-5.*ones(N,1);ub1=5.*ones(N,1);
opts = optimoptions(@fmincon,'Algorithm','sqp');
problem = createOptimProblem('fmincon','objective',...
fun,'x0',x0,'lb',lb1,'ub',ub1,'options',opts);
ms = MultiStart;[x,f] = run(ms,problem,1)
I really do not get why it throws error message. I did try a to write starting points and bounds in row vector form but it failed. I did try number '3' in the last command ms = MultiStart;[x,f] = run(ms,problem,1) but this also failed. I did try different combinations of these tries which also failed. Now, I have no idea why it does not work.
I need to solve a multidimensional optimization problem using several startes which I want to choose and have no idea to correctly implement it.
Thanks for your kind help in advance!
Babak

Accepted Answer

Alan Weiss
Alan Weiss on 14 Apr 2023
Edited: Alan Weiss on 14 Apr 2023
If you read the description of MultiStart run, you see that calling run(ms,problem,k)) uses k - 1 random points in addition to the given x0. If you want to supply your own set of start points, create a CustomStartPointSet and pass it to run. OK?
Alan Weiss
MATLAB mathematical toolbox documentation

More Answers (0)

Community Treasure Hunt

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

Start Hunting!