how to Plot convergence of Simulated annealing optimization problem?

8 vues (au cours des 30 derniers jours)
Aqsa Ghafar
Aqsa Ghafar le 8 Avr 2022
Commenté : Aqsa Ghafar le 8 Avr 2022
I want to pot convergence of best costs obtained from simulated annealing optimization algorithm. i want a vector of best costs for plotting. would you help me out in this regard?
here is my code for main file.
function [xnew, newcost, ]=simu_my2(l,u,xsol,Maxiter,CostFunction)
%%%%%%%%%%for first test function sphere%%%%%%%%
%nd= 5;
%l=-5.12*ones(1,nd);
%u=5.12*ones(1,nd);
%xsol=[0.01 0.01]; % it can be random(1e-10)*(l+rand(1,nd).*(u-l));
To=1;%0.5
%Maxiter=100;
% CostFunction = @cost1;% Cost Function
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for camel hump
%% Initialization
alpha=0.1;
T=To;
cost11 = CostFunction(xsol);%%%%%%%%%%%%first cost
%% SA Main Loop
for k=1: Maxiter
% Create and Evaluate New Solution
dx=0.01*(l+(rand(size(l)).*(u-l)));% step size * neighbour
xnew=xsol+dx;
newcost = CostFunction(xnew);%%%%%%%%%%%second cost
diff=newcost-cost11;
if diff<0 % If NEWSOL is better than SOL
xnew;
newcost;
elseif rand <exp(-diff/T)%=P %%%%%%%%%%%%% nature inspired optmization algorithm
xnew;
newcost;
end
if newcost<cost11
xnew;
end
T=(1-0.1).^(k);
end
newcost
xnew
end
%% Results
% function f=cost1(x)
% f=sum(x.^2);
% end
% function f= cost2(x)
% f=(4-2.1*x(1).^2+x(1).^4/3).*x(1).^2+x(1).*x(2)+4*(x(2).^2-1).*x(2).^2;
% end
% function f = ackley(xx, a, b, c)
%

Réponses (1)

Alan Weiss
Alan Weiss le 8 Avr 2022
Perhaps you want to collect the cost as a vector that you can then plot. Something like this:
% Put this line immediately after %% SA Main Loop
costs = zeros(Maxiter,1);
cost(1) = cost11;
% Just below for k=1: Maxiter put
if k > 1
cost(k) = cost(k-1);
end
end
% Where you have
if diff<0 % If NEWSOL is better than SOL
xnew;
newcost;
% Instead put
if diff<0 % If NEWSOL is better than SOL
xsol = xnew;
costs(k) = newcost;
% Similarly, where you have
elseif rand <exp(-diff/T)%=P %%%%%%%%%%%%% nature inspired optmization algorithm
xnew;
% Instead put
elseif rand <exp(-diff/T)%=P %%%%%%%%%%%%% nature inspired optmization algorithm
xsol = xnew;
costs(k) = newcost;
This should leave you with an array costs that you can then plot.
Alan Weiss
MATLAB mathematical toolbox documentation
  2 commentaires
Aqsa Ghafar
Aqsa Ghafar le 8 Avr 2022
do i have to change the output names in existing function?
Aqsa Ghafar
Aqsa Ghafar le 8 Avr 2022
after replacing these commands. it gives an error

Connectez-vous pour commenter.

Catégories

En savoir plus sur Surrogate Optimization dans Help Center et File Exchange

Produits


Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by