필터 지우기
필터 지우기

Low diversity of trial points produced by Global Search

조회 수: 1 (최근 30일)
Igor
Igor 2014년 1월 30일
편집: Igor 2014년 1월 31일
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
Igor
Igor 2014년 1월 31일
편집: Igor 2014년 1월 31일
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.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Surrogate Optimization에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by