예제 #1
0
파일: search.py 프로젝트: markm541374/GPc
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
예제 #2
0
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")