Low diversity of trial points produced by Global Search

1 visualizzazione (ultimi 30 giorni)
Igor
Igor il 30 Gen 2014
Modificato: Igor il 31 Gen 2014
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.
  1 Commento
Igor
Igor il 31 Gen 2014
Modificato: Igor il 31 Gen 2014
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.

Accedi per commentare.

Risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by