def MLEFS(ojf, lb, ub, ki, s, b, fname): #use kernel ki and evaluate ojf with variance s at step for a budget b sp.random.seed(int(os.urandom(4).encode('hex'), 16)) d = lb.size volper = 1e-8 ninit = 10 para = [ki[0], ki[1], ki[2], volper, s, ninit] if os.path.exists(fname): print "starting from " + str(fname) OE = OPTutils.EIMLE(ojf, lb, ub, para, initstate=pickle.load(open(fname, 'rb'))) else: print "fresh start" OE = OPTutils.EIMLE(ojf, lb, ub, para) if sum(OE.C) >= b: print "no further steps needed" k = 0 while sum(OE.C[:k]) < b: k += 1 state = [ OE.X[:k, :], OE.Y[:k, :], OE.S[:k, :], OE.D[:k], OE.R[:k, :], OE.C[:k], OE.T[:k], OE.Tr[:k], OE.Ymin[:k], OE.Xmin[:k, :], OE.Yreg[:k, :], OE.Rreg[:k, :] ] else: while sum(OE.C) < b: print "used {0} of {1} eval budget".format(sum(OE.C), b) OE.step() state = [ OE.X, OE.Y, OE.S, OE.D, OE.R, OE.C, OE.T, OE.Tr, OE.Ymin, OE.Xmin, OE.Yreg, OE.Rreg ] print "saving as " + str(fname) pickle.dump(state, open(fname, 'wb')) return state
[ojf, truexmin, trueymin] = OPTutils.gensquexpdraw(d, sp.array([-1.] * d), sp.array([1.] * d)) kindex = GPdc.SQUEXP mprior = sp.array([0.] + [-1.] * d) sprior = sp.array([1.] * (d + 1)) maxf = 4000 volper = 1e-7 s = 1e-5 ninit = 10 #para = [kindex,hlb,hub,maxf,s,ninit] para = [kindex, mprior, sprior, volper, s, ninit] OE = OPTutils.EIMLE(ojf, lb, ub, para) para = dict() para['kindex'] = GPdc.SQUEXP para['mprior'] = sp.array([0.] + [-1.] * d) para['sprior'] = sp.array([1.] * (d + 1)) para['s'] = 1e-2 para['ninit'] = 10 #para['maxf'] = 2500 para['volper'] = 1e-7 para['DH_SAMPLES'] = 8 para['DM_SAMPLES'] = 8 para['DM_SUPPORT'] = 800 para['DM_SLICELCBPARA'] = 1. para['SUPPORT_MODE'] = [ESutils.SUPPORT_SLICELCB, ESutils.SUPPORT_SLICEPM] para['cfn'] = lambda x, s: ((1e-6) / s)**0.2
#trueymin=0. O = OPTutils.opt(ojf,lb,ub) for i in tqdm(xrange(10)): O.step() initstate = copy.deepcopy([O.X,O.Y,O.S,O.D,O.R,O.C,O.T,O.Tr,O.Ymin,O.Xmin,O.Yreg,O.Rreg]) kindex = GPdc.MAT52 mprior = sp.array([0.]+[-1.]*d) sprior = sp.array([1.]*(d+1)) volper=1e-8 s = 1e-9 ninit = 10 para = [kindex,mprior,sprior,volper,s,ninit] OE = OPTutils.EIMLE(ojf,lb,ub,para,initstate=copy.deepcopy(initstate)) #OL = OPTutils.LCBMLE(ojf,lb,ub,para) #[OL.X,OL.Y,OL.S,OL.D,OL.R,OL.C,OL.T,OL.Tr,OL.Ymin] = initstate #[OE.X,OE.Y,OE.S,OE.D,OE.R,OE.C,OE.T,OE.Tr,OE.Ymin,OE.Xmin,OE.Yreg,OE.Rreg] = copy.deepcopy(initstate) para = dict() para['kindex'] = GPdc.MAT52 para['mprior'] = sp.array([0.]+[-1.]*d) para['sprior'] = sp.array([1.]*(d+1)) para['s'] = 1e-9 para['ninit'] = 10 #para['maxf'] = 2500 para['volper'] = 1e-6