% Muller-Brown's Surface Function
% Range of initial points: -1.5 <= x1 <= 1 , -0.5 <= x2 <= 2.5
% Global minima: (x1,x2)=(-0.558223638251928,1.441725828290487)
% f(x1,x2)=-146.6995172099539
% Coded by: Ali R. Alroomi | Last Update: 24 March 2015 | www.al-roomi.org
   
clear
clc
warning off
    
x1min=-1.5;
x1max=1;
x2min=-0.5;
x2max=2.5;
R=1500; % steps resolution
x1=x1min:(x1max-x1min)/R:x1max;
x2=x2min:(x2max-x2min)/R:x2max;
    
for j=1:length(x1)
    
    for i=1:length(x2)
        f(i) =   ((-200)*exp( (  -1)*((x1(j)-  1).^2) +   0*((x1(j)-  1).*(x2(i)-  0))  + ( -10)*((x2(i) -   0).^2) ) ...
                  + (-100)*exp( (  -1)*((x1(j)-  0).^2) +   0*((x1(j)-  0).*(x2(i)-0.5))  + ( -10)*((x2(i) - 0.5).^2) ) ...
                  + (-170)*exp( (-6.5)*((x1(j)+0.5).^2) +  11*((x1(j)+0.5).*(x2(i)-1.5))  + (-6.5)*((x2(i) - 1.5).^2) ) ...
                  + (  15)*exp( ( 0.7)*((x1(j)+  1).^2) + 0.6*((x1(j)+  1).*(x2(i)-  1))  + ( 0.7)*((x2(i) -   1).^2) ));
    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');