I would also appreciate if someone could tell me whether there is a way to collect all start points used by Global Search for analysis (computing the score), not only those used for a local solver run. As far as I am concerned, there is no such way.
Low diversity of trial points produced by Global Search
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hello,
I have a question about the Global Search optimization algorithm, which I am currently dealing with, and I would like to kindly ask anyone to answer it.
Below is how I set up my optimization (the main things for Global Search; anything else is probably irrelevant):
problem = createOptimProblem( 'fmincon', 'objective', fun, ...
'lb', zeros(1,29), 'ub', ones(1,29), ...
'x0', guess_new, 'options', opts_fmincon );
gs = GlobalSearch( 'Display', 'iter', ...
'NumStageOnePoints', 2000, 'NumTrialPoints', 10000, ...
'PlotFcns', { @gsplotbestf, @gsplotfunccount }, 'StartPointsToRun', 'bounds' );
tic; [ param, fval, flag, out, solutions ] = run(gs, problem); toc
Although I am generally satisfied with how Global Search works out this problem, one thing does seem a bit weird to me: the start points generated by Global Search for analysis and, possibly, calling 'fmincon' are too close to each other. Please take a look at some of the 6 trial vectors below used for a local search:
solutions.X0
ans =
[1x29 double] [1x29 double] [1x29 double] [1x29 double]
ans =
[1x29 double] [1x29 double]
first_set = solutions(1).X0; second_set = solutions(2).X0;
all_vect = vertcat( first_set{1:4}, second_set{1:2} )'
all_vect =
0.4323 0.4401 0.4402 0.4410 0.1351 0.2463
0.7463 0.7458 0.7458 0.7461 0.2000 0.7443
0.2033 0.3309 0.3269 0.3123 0.4444 0.2136
0.3848 0.5466 0.5433 0.5355 0.5833 0.5105
0.7243 0.7205 0.7205 0.7210 0.8000 0.7220
0.9698 0.8098 0.8125 0.8219 0.5062 0.8163
0.4391 0.4858 0.4853 0.4809 0.5000 0.4531
0.5501 0.5735 0.5731 0.5716 0.5062 0.5673
0.2743 0.2750 0.2750 0.2750 0.5000 0.2745
0.6903 0.6819 0.6819 0.6825 0.5062 0.6853
0.2533 0.2530 0.2530 0.2531 0.5000 0.2529
0.4760 0.3708 0.3732 0.3788 0.5062 0.4180
0.3370 0.4148 0.4133 0.4075 0.5000 0.4043
0.3635 0.3687 0.3685 0.3677 0.5062 0.3675
0.5826 0.5729 0.5729 0.5740 0.5000 0.5732
0.4745 0.3576 0.3574 0.3694 0.5062 0.3021
0.4448 0.4992 0.4974 0.4934 0.5000 0.4741
0.5511 0.5516 0.5516 0.5516 0.5062 0.5512
0.3062 0.4108 0.4083 0.4058 0.5000 0.3878
0.2911 0.2910 0.2910 0.2910 0.5062 0.2907
0.3141 0.3919 0.3903 0.3864 0.5000 0.2854
0.7159 0.6909 0.6913 0.6918 0.5062 0.7069
0.4506 0.4471 0.4472 0.4474 0.5000 0.4483
0.6644 0.6813 0.6810 0.6801 0.5062 0.6777
0.3631 0.3070 0.3076 0.3175 0.5000 0.3265
0.5183 0.5438 0.5430 0.5419 0.5062 0.5609
0.3964 0.4566 0.4553 0.4542 0.5000 0.4041
0.5515 0.5654 0.5652 0.5637 0.7500 0.5621
0.5767 0 0.0114 0.0459 0.7500 0.0000
It can clearly be seen that the distances between the vectors are small. Only the 5th column is noticeably different, but that is my initial guess:
norm( guess_new' - all_vect(:,5) )
ans =
0
So, does Global Search really generate points that span my whole range from the lower bound to the upper one (that is [0;1] as you can see above in the problem structure)? Or, because of the scatter search algorithm, the points generated in the interval [0;1] just cannot be dispersed well enough?
The same issue emerges when setting
'StartPointsToRun', 'all'.
Thank you in advance for any help.
Risposte (0)
Vedere anche
Categorie
Scopri di più su Surrogate Optimization in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!