Global optimization hybrid gamultiobj

Hello
I am using hybrid gamultiobj() to solve a optimization problem. As of now i am trying to reduce the execution time as much as possible without using parallelcomputing toolbox.
Hence i tried the below steps:
  • Call gamulitobj()
  • Call OutputFcns() - In this function, i am monitoring the intermediate states and calling a custom made decision making algorithm, which selects one optimal parameter from the set of optimal solutions with rank 1 at each iteration
  • Based on a custom made condition after analyzing past history, i terminate the global optimization using 'state.StopFlag'
  • Just before terminating the global optimization, I overwrite the state.Population, state.Score,state.Rank with only one optimal parameter.
state.Population = Top_Population; %decided by a utility function
state.Score = Top_Score; %decided by a utility function
state.Rank = 1; % Only one optimal parameter of rank 1.
  • Later algorithm switches over to a multiobjective local optimizer (fgoalattain). However when i monitor the iterations of fgoalattain using OutputFcns_hyb() i always get 'Hessian not updated'
I am sure that something is going wrong at this stage.
Bascially, I understand that 'fgoalattain' runs for all pareto optimal solutions. In my case i wish to run it for only one optimal solution that is with the return value (optimal parameter) of my custom made decision making algorithm.
In summary,
  • Can we overwrite the state structure as described above?
  • If i cannot overwrite, can i use gamultiobj() without hybrid function and later call fgoalattain with the single optimal parameter as initial condition?
  • Any simple example to call fgoalattain() as a stand alone function will be really helpful as i could not clearly understand the 'GOAL' and 'WEIGHT' input parameters. Any default setting can be used for GOAL and WEIGHT?
Thank you
Chris

1 comentario

Instead of overwriting the state structure, i called the fgoal attain with single optimal parameter as initial condition.
.....
Scaled_Init =[4.2743,0.8293,3.4810,4.7922,137.2542,0.6860,0.3834]; %Single optimal parameters [output of terminated global optimizer]
goal = [0.0661,0.1176]; %fval of single optimal parameters[Two objectives]
weight = abs(goal);
f=@(x)multiobjopt(x,Exp_Data,model,numel(d));
options = optimoptions(@fgoalattain,'Display','iter');
[x,fval,attainfactor,exitflag,output]= fgoalattain(f,Scaled_Init,goal,weight,[],[],[],[],LB,UB,[],options);
By doing it this way i avoided the execution of local optimizer for all the set of optimal solutions.

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Preguntada:

el 24 de Nov. de 2015

Comentada:

el 25 de Nov. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by