def PESIPS(ojf, lb, ub, ki, b, fname): 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['d'] = lb.size + 1 para['ninit'] = 10 para['volper'] = 1e-7 para['DH_SAMPLES'] = 12 para['DM_SAMPLES'] = 12 para['DM_SUPPORT'] = 1200 para['DM_SLICELCBPARA'] = 1. para['SUPPORT_MODE'] = [ ESutils.SUPPORT_LAPAPR ] #[ESutils.SUPPORT_SLICELCB,ESutils.SUPPORT_SLICEEI] para['sl'] = 0. para['su'] = 1. para['s'] = 0. para['sfn'] = None para['axis'] = 0 para['value'] = para['sl'] if os.path.exists(fname): print "starting from " + str(fname) OE = OPTutils.PESIPS(ojf, lb, ub, para, initstate=pickle.load(open(fname, 'rb'))) else: print "fresh start" OE = OPTutils.PESIPS(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: pbar = tqdm(total=(b - sum(OE.C))) while sum(OE.C) < b: print "used {0} of {1} eval budget".format(sum(OE.C), b) pbar.update(OE.C[-1]) 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
para['d'] = d+1 para['ninit'] = 10 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] #para['cfn'] = lambda x,s: sp.exp(-0.5*x.flatten()[0]) para['sl'] = 0. para['su'] = 1. para['s'] = 0. para['sfn'] = None para['axis'] = 0 para['value'] = para['sl'] OI = OPTutils.PESIPS(ojf,lb,ub,para) for i in tqdm(xrange(2)): OI.step() print OI.X print OI.R print OI.Y print OI.Ymin print OI.Rreg #f,a = plt.subplots(7) OI.plot(sp.hstack([para['sl'],truexmin]),ymin) #f.savefig("../../figs/testIPopt.pdf")