Example #1
0
 def run_search(self):
     print "begin PES:"
     try:
         del (self.pesobj)
     except:
         pass
     self.pesobj = PES.PES_inplane(
         self.X,
         self.Y,
         self.S,
         self.D,
         self.lb.flatten(),
         self.ub.flatten(),
         self.para['kindex'],
         self.para['mprior'],
         self.para['sprior'],
         self.para['axis'],
         self.para['value'],
         DH_SAMPLES=self.para['DH_SAMPLES'],
         DM_SAMPLES=self.para['DM_SAMPLES'],
         DM_SUPPORT=self.para['DM_SUPPORT'],
         DM_SLICELCBPARA=self.para['DM_SLICELCBPARA'],
         mode=self.para['SUPPORT_MODE'],
         noS=True)
     self.train_costest()
     [Qmin, ymin,
      ierror] = self.pesobj.search_acq(self.costest,
                                       self.para['sfn'],
                                       volper=self.para['volper'])
     return [Qmin, 0., [sp.NaN]]
Example #2
0
def PESbsaq(optstate, persist, **para):
    para = copy.deepcopy(para)
    if persist == None:
        persist = {'n': 0, 'd': len(para['ub'])}
    n = persist['n']
    d = persist['d']
    if n < para['nrandinit']:
        persist['n'] += 1
        para['ev']['xa'] = sp.random.uniform(para['xal'], para['xau'])
        return randomaq(optstate, persist, **para)
    logger.info('PESssaq')

    x = sp.hstack(
        [sp.vstack([e['xa'] for e in optstate.ev]),
         sp.vstack(optstate.x)])

    y = sp.vstack(optstate.y)
    s = sp.vstack([e['s'] for e in optstate.ev])
    dx = [e['d'] for e in optstate.ev]
    print "\n at pesinplane x {} axis 0".format(x)
    pesobj = PES.PES_inplane(x,
                             y,
                             s,
                             dx, [para['xal']] + para['lb'],
                             [para['xau']] + para['ub'],
                             para['kindex'],
                             para['mprior'],
                             para['sprior'],
                             0,
                             0,
                             DH_SAMPLES=para['DH_SAMPLES'],
                             DM_SAMPLES=para['DM_SAMPLES'],
                             DM_SUPPORT=para['DM_SUPPORT'],
                             DM_SLICELCBPARA=para['DM_SLICELCBPARA'],
                             mode=para['SUPPORT_MODE'])
    if para['traincfn']:  #
        #print "XXXXXXXXXXXXXXx"
        cx = sp.vstack([e['xa'] for e in optstate.ev])
        cc = sp.vstack([e for e in optstate.c])
        #print cx
        #print cc
        #print optstate.ev
        #print optstate.x
        cfn = objectives.traincfn(cx, cc)
        """
        if len(cc)%5==0:
            from matplotlib import pyplot as plt
            f,a = plt.subplots(1)
            xt = sp.linspace(0,1,100)
            m = sp.empty(100)
            for i in xrange(100):
                m[i]=cfn(0.,**{'xa':xt[i]})
            a.plot(xt,m,'b')
            for i in xrange(len(optstate.c)):
                a.plot(cx[i,0],cc[i,0],'ro')
            plt.show()
        """
    else:
        cfn = para['cfn']

    [xmin, ymin, ierror] = pesobj.search_acq(cfn,
                                             lambda s: para['ev']['s'],
                                             volper=para['volper'])
    logger.debug([xmin, ymin, ierror])
    para['ev']['xa'] = xmin[0]
    xout = [i for i in xmin[1:]]
    return xout, para['ev'], persist, {
        'HYPdraws': [k.hyp for k in pesobj.G.kf],
        'mindraws': pesobj.Z,
        'DIRECTmessage': ierror,
        'PESmin': ymin
    }
Example #3
0
                                   sp.array([1.5, 0.55, 0.25]))

kindex = GPdc.SQUEXP
mprior = sp.array([0.] + [-1.] * d)
sprior = sp.array([1.] * (d + 1))
axis = 0
value = 0.
pesobj = PES.PES_inplane(X,
                         Y,
                         S,
                         D,
                         lb,
                         ub,
                         kindex,
                         mprior,
                         sprior,
                         axis,
                         value,
                         DH_SAMPLES=8,
                         DM_SAMPLES=8,
                         DM_SUPPORT=400,
                         DM_SLICELCBPARA=1.,
                         AM_POLICY=PES.NOMIN,
                         mode=ESutils.SUPPORT_SLICEEI)


def cfn(x):
    return 1. - (0.6 * x[0])**0.1


def sfn(x):