how to Plot convergence of Simulated annealing optimization problem?

17 views (last 30 days)
Aqsa Ghafar on 8 Apr 2022
Commented: Aqsa Ghafar on 8 Apr 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)
%

Alan Weiss on 8 Apr 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;
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;
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
Aqsa Ghafar on 8 Apr 2022
after replacing these commands. it gives an error

Categories

Find more on Support Vector Machine Regression in Help Center and File Exchange

R2022a

Community Treasure Hunt

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

Start Hunting!