eq1 = y3 + Log[y1/y2]; eq2 = y3 - y1 - 1; eq3 = y2 + y1 + 2 y3^2; f = (eq1)^2 + (eq2)^2 + (eq3)^2; yvars={y1,y2,y3}; yrules={0<=y1<=1, 0<=y2<=1, 0<=y3<=1}; methods={"DifferentialEvolution","NelderMead","RandomSearch","SimulatedAnnealing"}; (*This will run NMinimize using the specified method: specified as an index into the methods list above. It will output the Method name, result of running NMinimize and time taken*) nm1[method_, suppress_:0]:=Module[{r, TIMESTART, TIMEFINISH, RUNTIME, OUT}, TIMESTART=Date[]; If[suppress==0,{Print["Using ", methods[[method]]," :"]}]; OUT=Timing[r=NMinimize[{f,yrules},yvars,Method->methods[[method]]]]; RUNTIME=OUT[[1]]; If[suppress==0,{Print[r]}]; TIMEFINISH=Date[]; If[suppress==0,{Print["Total Run time: ", RUNTIME]}]; Return[Append[r, RUNTIME]]; ] nm1a[]:=Module[{ct1, ResList}, ct1=0; ResList={}; Label[o1]; ct1=ct1+1; r=nm1[ct1,1]; AppendTo[ResList,r]; If[ct1==1, SMALLEST=1]; If[ResList[[ct1]][[1]]