def PESFS(ojf, lb, ub, ki, s, b, fname): overridemaxsteps = 200 sp.random.seed(int(os.urandom(4).encode('hex'), 16)) para = dict() para['kindex'] = ki[0] para['mprior'] = ki[1] para['sprior'] = ki[2] para['s'] = s para['ninit'] = 10 para['volper'] = 1e-6 para['DH_SAMPLES'] = 12 para['DM_SAMPLES'] = 12 para['DM_SUPPORT'] = 2000 para['DM_SLICELCBPARA'] = 20. para['SUPPORT_MODE'] = [ESutils.SUPPORT_UNIFORM, ESutils.SUPPORT_LAPAPR] if os.path.exists(fname): print "starting from " + str(fname) OE = OPTutils.PESFS(ojf, lb, ub, para, initstate=pickle.load(open(fname, 'rb'))) else: print "fresh start" OE = OPTutils.PESFS(ojf, lb, ub, para) if sum(OE.C) >= b: print "no further steps needed" k = 0 while sum(OE.C[:k]) < b: k += 1 print "used {0} of {1} eval budget".format(sum(OE.C), b) 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 and len(OE.C) < overridemaxsteps: 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 ] pickle.dump(state, open(fname, 'wb')) return state
lb = sp.array([[-1.] * d]) ub = sp.array([[1.] * d]) [ojf, truexmin] = [lambda x, s, d: [-1., -1.], None] para = dict() para['kindex'] = GPdc.SQUEXP para['mprior'] = sp.array([0.] + [-1.] * d) para['sprior'] = sp.array([1.] * (d + 1)) para['s'] = 1e-6 para['ninit'] = 10 #para['maxf'] = 2500 para['volper'] = 1e-6 para['DH_SAMPLES'] = 8 para['DM_SAMPLES'] = 8 para['DM_SUPPORT'] = 400 para['DM_SLICELCBPARA'] = 0.025 para['SUPPORT_MODE'] = ESutils.SUPPORT_SLICEPM OP = OPTutils.PESFS(ojf, lb, ub, para) import pickle [OP.X, OP.Y, OP.S, OP.D, OP.R, OP.C, OP.T, OP.Tr, OP.Ymin] = pickle.load(open('state.p', 'rb')) OP.pcs() #OP.step() plt.figure(1) #plt.plot(OP.R[-1,0],OP.R[-1,1],'r.') plt.plot(OP.X[:, 0], OP.X[:, 1], 'b.') plt.show()
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 para['DH_SAMPLES'] = 8 para['DM_SAMPLES'] = 8 para['DM_SUPPORT'] = 1200 para['DM_SLICELCBPARA'] = 1. para['SUPPORT_MODE'] = [ESutils.SUPPORT_SLICELCB,ESutils.SUPPORT_SLICEPM] OP = OPTutils.PESFS(ojf,lb,ub,para,initstate=copy.deepcopy(initstate)) #[OP.X,OP.Y,OP.S,OP.D,OP.R,OP.C,OP.T,OP.Tr,OP.Ymin,OP.Xmin,OP.Yreg,OP.Rreg] = copy.deepcopy(initstate) for i in tqdm_gui(xrange(runn),gui=True): state = [OP.X,OP.Y,OP.S,OP.D,OP.R,OP.C,OP.T,OP.Tr,OP.Ymin] try: pass #OP.step() except: import pickle pickle.dump(state,open('state.p','wb')) raise OE.step() O.step() #OL.step()