E1=1;E2=1.4;E3=-1;E4=-2;E5=10;iter=2;mastertr[E1_,E2_,E3_,E4_,E5_]:=Sin[E1+E2]/(E1E2+1)+E1+2E2+3E1^2-4E2^2+(E3-1)^2+(E4-2)^2-0.01(E5+1)^2+Cos[10E1E3]-2E2(E4+E5);dertrain00[E1_,E2_,E3_,E4_,E5_]:={Derivative[1,0,0,0,0][mastertr][E1,E2,E3,E4,E5],Derivative[0,1,0,0,0][mastertr][E1,E2,E3,E4,E5]};dertrain01[E1_,E2_,E3_,E4_,E5_]:={Derivative[0,0,1,0,0][mastertr][E1,E2,E3,E4,E5],Derivative[0,0,0,1,0][mastertr][E1,E2,E3,E4,E5],Derivative[0,0,0,0,1][mastertr][E1,E2,E3,E4,E5]};fmin[a_,b_,c_,x_]:=a+bx+cx^2;gmin[a_,b_,c_,x_]:=bSin[x]+aCos[x]+cSin[2x];masterfmin[a_,b_,c_,d_,e_,f_,x_,y_]:=a+bx+cx^2+dy+ey^2+fxy;mastergmin[a_,b_,c_,d_,e_,f_,x_,y_]:=0.5a(Cos[x]+Cos[y])+bSin[x]+cSin[2x]+dSin[y]+eSin[2y]+fSin[x]Sin[y];f00[E10_,E20_,E30_,E40_,E50_,maxdif_]:=(fac00=0.001;ref=mastertr[E10,E20,E30,E40,E50];dermat00=dertrain00[E10,E20,E30,E40,E50];While[Abs[(ref-mastertr[E10+fac00dermat00[[1]],E20+fac00dermat00[[2]],E30,E40,E50])/ref]<maxdif;fac00=fac00*2];tab00=Table[mastertr[E10+ifac00dermat00[[1]],E20+ifac00dermat00[[2]],E30,E40,E50],{i,-5,5}]);f01[E10_,E20_,E30_,E40_,E50_,maxdif_]:=(fac01=0.001;ref=mastertr[E10,E20,E30,E40,E50];dermat01=dertrain01[E10,E20,E30,E40,E50];While[Abs[(ref-mastertr[E10,E20,E30+fac01dermat01[[1]],E40+fac01dermat01[[2]],E50+fac01dermat01[[3]]])/ref]<maxdif,fac01=fac01*2];tab01=Table[mastertr[E10,E20,E30+ifac01dermat01[[1]],E40+ifac01dermat01[[2]],E50+ifac01dermat01[[3]]],{i,-5,5}]);f0[E10_,E20_,E30_,E40_,E50_]:=(tab0=Table[mastertr[E10+ifac00dermat00[[1]],E20+ifac00dermat00[[2]],E30+jfac01dermat01[[1]],E40+jfac01dermat01[[2]],E50+jfac01dermat01[[3]]],{i,-5,5},{j,-5,5}];);f1[whichf_,whichmasterf_,maxfac_]:=(f00[E1,E2,E3,E4,E5,maxfac];For[i=1;chisq=0,i<=11,i++,chisq=chisq+(tab00[[i]]-whichf[ref,b00,c00,i-6])^2];{B00,C00}=NArgMin[chisq,{b00,c00}];f01[E1,E2,E3,E4,E5,maxfac];For[i=1;chisq=0,i<=11,i++,chisq=chisq+(tab01[[i]]-whichf[ref,b01,c01,i-6])^2];{B01,C01}=NArgMin[chisq,{b01,c01}];f0[E1,E2,E3,E4,E5];For[i=1;chisq=0,i<=11,i++,For[j=1,j<=11,j++,chisq=chisq+(tab0[[i,j]]-whichmasterf[ref,b00,c00,b01,c01,d00,i-6,j-6])^2]];val=FindMinimum[chisq,{{b00,B00},{c00,C00},{b01,B01},{c01,C01},{d00,0}}];val[[1]]+1/maxfac^2(*lossfunctionforlevel1*));f2[flag_]:=(Which[flag==1,val21=NArgMin[{f1[fmin,masterfmin,maxfacc],0.6>maxfacc>0.01},maxfacc,Method"RandomSearch"],flag==2,val22=NArgMin[{f1[gmin,mastergmin,maxfacc],0.6>maxfacc>0.01},maxfacc,Method->"DifferentialEvolution"]]);For[ii=1,ii≤iter,ii++,f2[ii] ]
In[]:=
val21
Out[]=
0.6
In[]:=
Plot[f1[fmin,masterfmin,x],{x,0.01,0.6}]
Out[]=