% Branin's RCOS Function # 2
% Range of initial points: -5 <= xj <= 10 , 0 <= xj <= 15
% Global minima: (x1,x2)=(-3.196988423389338,12.526257883092258)
% f(x1,x2)=-0.179891239069905
% Coded by: Ali R. Alroomi | Last Update: 26 May 2015 | www.al-roomi.org

clear
clc
warning off
    
x1min=-5;
x1max=10;
x2min=0;
x2max=15;
R=1500; % steps resolution
x1=x1min:(x1max-x1min)/R:x1max;
x2=x2min:(x2max-x2min)/R:x2max;

% constants
a=1;
b=5.1/(4*pi^2);
c=5/pi;
d=6;
e=10;
g=1/(8*pi);
    
for j=1:length(x1)
    
    for i=1:length(x2)
        f1=a*(x2(i)-b*x1(j).^2+c*x1(j)-d)^2;
        f2=e*(1-g)*cos(x1(j))*cos(x2(i));
        f3=log(x1(j).^2+x2(i).^2+1);
        f(i)=-1/(f1+f2+f3+e);
    end
        
    f_tot(j,:)=f;

end

figure(1)
meshc(x1,x2,f_tot);colorbar;set(gca,'FontSize',12);
xlabel('x_2','FontName','Times','FontSize',20,'FontAngle','italic');
set(get(gca,'xlabel'),'rotation',25,'VerticalAlignment','bottom');
ylabel('x_1','FontName','Times','FontSize',20,'FontAngle','italic');
set(get(gca,'ylabel'),'rotation',-25,'VerticalAlignment','bottom');
zlabel('f(X)','FontName','Times','FontSize',20,'FontAngle','italic');
title('3D View','FontName','Times','FontSize',24,'FontWeight','bold');

figure(2)
mesh(x1,x2,f_tot);view(0,90);colorbar;set(gca,'FontSize',12);
xlabel('x_2','FontName','Times','FontSize',20,'FontAngle','italic');
ylabel('x_1','FontName','Times','FontSize',20,'FontAngle','italic');
zlabel('f(X)','FontName','Times','FontSize',20,'FontAngle','italic');
title('X-Y Plane View','FontName','Times','FontSize',24,'FontWeight','bold');

figure(3)
mesh(x1,x2,f_tot);view(90,0);colorbar;set(gca,'FontSize',12);
xlabel('x_2','FontName','Times','FontSize',20,'FontAngle','italic');
ylabel('x_1','FontName','Times','FontSize',20,'FontAngle','italic');
zlabel('f(X)','FontName','Times','FontSize',20,'FontAngle','italic');
title('X-Z Plane View','FontName','Times','FontSize',24,'FontWeight','bold');

figure(4)
mesh(x1,x2,f_tot);view(0,0);colorbar;set(gca,'FontSize',12);
xlabel('x_2','FontName','Times','FontSize',20,'FontAngle','italic');
ylabel('x_1','FontName','Times','FontSize',20,'FontAngle','italic');
zlabel('f(X)','FontName','Times','FontSize',20,'FontAngle','italic');
title('Y-Z Plane View','FontName','Times','FontSize',24,'FontWeight','bold');