0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 function [p,dp]=funHartmann6(xx)
0031
0032 ma=[10.00, 0.05, 3.00, 17.00;
0033 3.00, 10.00, 3.50, 8.00;
0034 17.00, 17.00, 1.70, 0.05;
0035 3.50, 0.10, 10.00, 10.00;
0036 1.70, 8.00, 17.00, 0.10;
0037 8.00, 14.00, 8.00, 14.00];
0038 mp=[0.1312, 0.2329, 0.2348, 0.4047;
0039 0.1696, 0.4135, 0.1451, 0.8828;
0040 0.5569, 0.8307, 0.3522, 0.8732;
0041 0.0124, 0.3736, 0.2883, 0.5743;
0042 0.8283, 0.1004, 0.3047, 0.1091;
0043 0.5886, 0.9991, 0.6650, 0.0381];
0044 c=[1.0, 1.2, 3.0, 3.2];
0045 b=4;
0046 dim=6;
0047
0048
0049
0050 sX=size(xx);
0051 p=zeros(sX(1),sX(2));
0052 for it=1:b
0053 pa=bsxfun(@minus,xx,reshape(mp(:,it),1,1,dim));
0054 pb=bsxfun(@times,reshape(ma(:,it),1,1,dim),pa.^2);
0055 p=p-c(it)*exp(-sum(pb,3));
0056 end
0057
0058 if nargout==2
0059 dp=zeros(sX);
0060
0061 for it=1:b
0062 pa=bsxfun(@minus,xx,reshape(mp(:,it),1,1,dim));
0063 pb=bsxfun(@times,reshape(ma(:,it),1,1,dim),pa.^2);
0064 pc=exp(-sum(pb,3));
0065 pe=bsxfun(@times,reshape(ma(:,it),1,1,dim),pa);
0066
0067 for itD=1:dim
0068 dp(:,:,itD)=dp(:,:,itD)+2*c(it)*pe(:,:,itD).*pc;
0069 end
0070 end
0071 end
0072 end