Example #1
0
def gpmapasrecc(optstate, **para):
    if para["onlyafter"] > len(optstate.y) or not len(optstate.y) % para["everyn"] == 0:
        return [sp.NaN for i in para["lb"]], {"didnotrun": True}
    logger.info("gpmapas reccomender")
    d = len(para["lb"])

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

    y = sp.vstack(optstate.y)
    s = sp.vstack([e["s"] for e in optstate.ev])
    dx = [e["d"] for e in optstate.ev]
    MAP = GPdc.searchMAPhyp(x, y, s, dx, para["mprior"], para["sprior"], para["kindex"])
    logger.info("MAPHYP {}".format(MAP))
    G = GPdc.GPcore(x, y, s, dx, GPdc.kernel(para["kindex"], d + 1, MAP))

    def directwrap(xq, y):
        xq.resize([1, d])
        xe = sp.hstack([xq, sp.array([[0.0]])])
        # print xe
        a = G.infer_m(xe, [[sp.NaN]])
        return (a[0, 0], 0)

    [xmin, ymin, ierror] = DIRECT.solve(
        directwrap, para["lb"], para["ub"], user_data=[], algmethod=1, volper=para["volper"], logfilename="/dev/null"
    )
    logger.info("reccsearchresult: {}".format([xmin, ymin, ierror]))
    return [i for i in xmin], {"MAPHYP": MAP, "ymin": ymin}
Example #2
0
def gpmapasrecc(optstate, **para):
    if para['onlyafter'] > len(
            optstate.y) or not len(optstate.y) % para['everyn'] == 0:
        return [sp.NaN for i in para['lb']], {'didnotrun': True}
    logger.info('gpmapas reccomender')
    d = len(para['lb'])

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

    y = sp.vstack(optstate.y)
    s = sp.vstack([e['s'] for e in optstate.ev])
    dx = [e['d'] for e in optstate.ev]
    MAP = GPdc.searchMAPhyp(x, y, s, dx, para['mprior'], para['sprior'],
                            para['kindex'])
    logger.info('MAPHYP {}'.format(MAP))
    G = GPdc.GPcore(x, y, s, dx, GPdc.kernel(para['kindex'], d + 1, MAP))

    def directwrap(xq, y):
        xq.resize([1, d])
        xe = sp.hstack([xq, sp.array([[0.]])])
        #print xe
        a = G.infer_m(xe, [[sp.NaN]])
        return (a[0, 0], 0)

    [xmin, ymin, ierror] = DIRECT.solve(directwrap,
                                        para['lb'],
                                        para['ub'],
                                        user_data=[],
                                        algmethod=1,
                                        volper=para['volper'],
                                        logfilename='/dev/null')
    logger.info('reccsearchresult: {}'.format([xmin, ymin, ierror]))
    return [i for i in xmin], {'MAPHYP': MAP, 'ymin': ymin}
Example #3
0
def EIMAPaq(optstate,persist,ev=None, ub = None, lb=None, nrandinit=None, mprior=None,sprior=None,kindex = None,directmaxiter=None):
    para = copy.deepcopy(para)
    if persist==None:
        persist = {'n':0,'d':len(ub)}
    n = persist['n']
    d = persist['d']
    if n<nrandinit:
        persist['n']+=1
        return randomaq(optstate,persist,ev=ev,lb=lb,ub=ub)
    logger.info('EIMAPaq')
    #logger.debug(sp.vstack([e[0] for e in optstate.ev]))
    #raise
    x=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]
    MAP = GPdc.searchMAPhyp(x,y,s,dx,mprior,sprior, kindex)
    logger.info('MAPHYP {}'.format(MAP))

    G = GPdc.GPcore(x,y,s,dx,GPdc.kernel(kindex,d,MAP))
    def directwrap(xq,y):
        xq.resize([1,d])
        a = G.infer_lEI(xq,[ev['d']])
        return (-a[0,0],0)
    
    [xmin,ymin,ierror] = DIRECT.solve(directwrap,lb,ub,user_data=[], algmethod=0, maxf = directmaxiter, logfilename='/dev/null')
    #logger.debug([xmin,ymin,ierror])
    persist['n']+=1
    return [i for i in xmin],ev,persist,{'MAPHYP':MAP,'logEImin':ymin,'DIRECTmessage':ierror}
Example #4
0
    def run_search(self):

        MAP = GPdc.searchMAPhyp(self.X, self.Y, self.S, self.D, self.mprior,
                                self.sprior, self.kindex)
        try:
            del (self.G)
        except:
            pass
        self.G = GPdc.GPcore(self.X, self.Y, self.S, self.D,
                             GPdc.kernel(self.kindex, self.d, MAP))

        def directwrap(x, y):
            x.resize([1, self.d])

            a = self.G.infer_lEI(x, [[sp.NaN]])
            #print [x,a]
            #print G.infer_diag_post(x,[[sp.NaN]])
            return (-a[0, 0], 0)

        [xmin, ymin, ierror] = DIRECT.solve(directwrap,
                                            self.lb,
                                            self.ub,
                                            user_data=[],
                                            algmethod=1,
                                            volper=self.volper,
                                            logfilename='/dev/null')

        return [xmin, self.s, [sp.NaN]]
Example #5
0
def EIMAPaq(optstate,
            persist,
            ev=None,
            ub=None,
            lb=None,
            nrandinit=None,
            mprior=None,
            sprior=None,
            kindex=None,
            directmaxiter=None):
    para = copy.deepcopy(para)
    if persist == None:
        persist = {'n': 0, 'd': len(ub)}
    n = persist['n']
    d = persist['d']
    if n < nrandinit:
        persist['n'] += 1
        return randomaq(optstate, persist, ev=ev, lb=lb, ub=ub)
    logger.info('EIMAPaq')
    #logger.debug(sp.vstack([e[0] for e in optstate.ev]))
    #raise
    x = 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]
    MAP = GPdc.searchMAPhyp(x, y, s, dx, mprior, sprior, kindex)
    logger.info('MAPHYP {}'.format(MAP))

    G = GPdc.GPcore(x, y, s, dx, GPdc.kernel(kindex, d, MAP))

    def directwrap(xq, y):
        xq.resize([1, d])
        a = G.infer_lEI(xq, [ev['d']])
        return (-a[0, 0], 0)

    [xmin, ymin, ierror] = DIRECT.solve(directwrap,
                                        lb,
                                        ub,
                                        user_data=[],
                                        algmethod=0,
                                        maxf=directmaxiter,
                                        logfilename='/dev/null')
    #logger.debug([xmin,ymin,ierror])
    persist['n'] += 1
    return [i for i in xmin], ev, persist, {
        'MAPHYP': MAP,
        'logEImin': ymin,
        'DIRECTmessage': ierror
    }
Example #6
0
 def run_search(self):
     
     MAP = GPdc.searchMAPhyp(self.X,self.Y,self.S,self.D,self.mprior,self.sprior, self.kindex)
     try:
         del(self.G)
     except:
         pass
     self.G = GPdc.GPcore(self.X,self.Y,self.S,self.D,GPdc.kernel(self.kindex,self.d,MAP))
     def directwrap(x,y):
         x.resize([1,self.d])
         
         a = self.G.infer_LCB(x,[[sp.NaN]],1.)[0,0]
         return (a,0)
     [xmin,ymin,ierror] = DIRECT.solve(directwrap,self.lb,self.ub,user_data=[], algmethod=1, volper=self.volper, logfilename='/dev/null')
     return [xmin,self.s,[sp.NaN]]
Example #7
0
                                   GPdc.SQUEXP,
                                   sp.array([0.9, 0.25]),
                                   s=1e-8)
S *= 0.
f0 = plt.figure()
a0 = plt.subplot(111)
a0.plot(sp.array(X[:, 0]).flatten(), Y, 'g.')

lb = sp.array([-2., -2., -9])
ub = sp.array([2., 2., -1])
MLEH = GPdc.searchMLEhyp(X, Y, S, D, lb, ub, GPdc.SQUEXPCS, mx=10000)

mprior = sp.array([0., -1., -5.])
sprior = sp.array([1., 1., 3.])

MAPH = GPdc.searchMAPhyp(X, Y, S, D, mprior, sprior, GPdc.SQUEXPCS, mx=10000)
print "MLEH: " + str(MLEH)
print "MAPH: " + str(MAPH)
G = GPdc.GPcore(X, Y, S, D, GPdc.kernel(GPdc.SQUEXPCS, 1, sp.array(MLEH)))

print G.llk()

np = 180
sup = sp.linspace(-1, 1, np)
Dp = [[sp.NaN]] * np
Xp = sp.vstack([sp.array([i]) for i in sup])

[m, v] = G.infer_diag(Xp, Dp)
a0.plot(sup, m.flatten())
sq = sp.sqrt(v)
Example #8
0
# To change this license header, choose License Headers in Project Properties.
# To change this template file, choose Tools | Templates
# and open the template in the editor.

from scipy import stats as sps
from scipy import linalg as spl
import scipy as sp
from matplotlib import pyplot as plt

import GPdc

ni = 100
kf = GPdc.kernel(GPdc.SQUEXP,2,sp.array([1.3,0.3,0.2]))
X = sp.random.uniform(-1,1,size=[ni,2])
D = [[sp.NaN]]*ni
Kxx = GPdc.buildKsym_d(kf,X,D)
s = 1e-2
Y = spl.cholesky(Kxx,lower=True)*sp.matrix(sps.norm.rvs(0,1.,ni)).T+sp.matrix(sps.norm.rvs(0,s,ni)).T
S = sp.ones(ni)*s
print Y
MLEHYP = GPdc.searchMLEhyp(X,Y,S,D,sp.array([2.,2.,2.]),sp.array([-2.,-2.,-2.]), GPdc.SQUEXP)
print MLEHYP

MAPHYP = GPdc.searchMAPhyp(X,Y,S,D,sp.array([0.,0.,0.]),sp.array([1.,1.,1.]), GPdc.SQUEXP)
print MAPHYP
Example #9
0
    x = X[i,0]
    s = -(1e-2)*(x-1.)*(x+1.1)
    Y[i,0]+= sps.norm.rvs(0,sp.sqrt(s))

f0 = plt.figure()
a0 = plt.subplot(111)
a0.plot(sp.array(X[:,0]).flatten(),Y,'g.')

lb = sp.array([-2.,-2.,-9,-2.,-2.])
ub = sp.array([2.,2.,-1,2.,2.])
MLEH =  GPdc.searchMLEhyp(X,Y,S,D,lb,ub,GPdc.SQUEXPPS,mx=20000)

mprior = sp.array([0.,-1.,-5.,-0.5,0.5])
sprior = sp.array([1.,1.,3.,1.,1.])

MAPH = GPdc.searchMAPhyp(X,Y,S,D,mprior,sprior,GPdc.SQUEXPPS,mx=20000)
print "MLEH: "+str(MLEH)
print "MAPH: "+str(MAPH)
G = GPdc.GPcore(X,Y,S,D,GPdc.kernel(GPdc.SQUEXPPS,1,sp.array(MAPH)))



print G.llk()

np=180
sup = sp.linspace(-1,1,np)
Dp = [[sp.NaN]]*np
Xp = sp.vstack([sp.array([i]) for i in sup])

[m,v] = G.infer_diag(Xp,Dp)
sq = sp.sqrt(v)
Example #10
0
# To change this license header, choose License Headers in Project Properties.
# To change this template file, choose Tools | Templates
# and open the template in the editor.

from scipy import stats as sps
from scipy import linalg as spl
import scipy as sp
from matplotlib import pyplot as plt

import GPdc

ni = 100
kf = GPdc.kernel(GPdc.SQUEXP, 2, sp.array([1.3, 0.3, 0.2]))
X = sp.random.uniform(-1, 1, size=[ni, 2])
D = [[sp.NaN]] * ni
Kxx = GPdc.buildKsym_d(kf, X, D)
s = 1e-2
Y = spl.cholesky(Kxx, lower=True) * sp.matrix(sps.norm.rvs(
    0, 1., ni)).T + sp.matrix(sps.norm.rvs(0, s, ni)).T
S = sp.ones(ni) * s
print Y
MLEHYP = GPdc.searchMLEhyp(X, Y, S, D, sp.array([2., 2., 2.]),
                           sp.array([-2., -2., -2.]), GPdc.SQUEXP)
print MLEHYP

MAPHYP = GPdc.searchMAPhyp(X, Y, S, D, sp.array([0., 0., 0.]),
                           sp.array([1., 1., 1.]), GPdc.SQUEXP)
print MAPHYP