def gensquexpdraw(d, lb, ub, ignores=-1): nt = 14 [X, Y, S, D] = ESutils.gen_dataset(nt, d, lb, ub, GPdc.SQUEXP, sp.array([1.5] + [0.30] * d)) G = GPdc.GPcore(X, Y, S, D, GPdc.kernel(GPdc.SQUEXP, d, sp.array([1.5] + [0.30] * d))) def obj(x, s, d, override=False): #print [x,s,d] if ignores > 0: s = ignores if s == 0. or override: noise = 0. else: noise = sp.random.normal(scale=sp.sqrt(s)) print "EVAL WITH NOISE: " + str(noise) + "FROM S= " + str(s) return [G.infer_m(x, [d])[0, 0] + noise, 1.] def dirwrap(x, y): z = G.infer_m(x, [[sp.NaN]])[0, 0] #z = obj(x,0.,[sp.NaN]) return (z, 0) [xmin, ymin, ierror] = DIRECT.solve(dirwrap, lb, ub, user_data=[], algmethod=1, maxf=89000, logfilename='/dev/null') return [obj, xmin, ymin]
def gensquexpIPdraw(d,lb,ub,sl,su,sfn,sls,cfn): #axis = 0 value = sl #d dimensional objective +1 for s nt=25 #print sp.hstack([sp.array([[sl]]),lb]) #print sp.hstack([sp.array([[su]]),ub]) [X,Y,S,D] = ESutils.gen_dataset(nt,d+1,sp.hstack([sp.array([[sl]]),lb]).flatten(),sp.hstack([sp.array([[su]]),ub]).flatten(),GPdc.SQUEXP,sp.array([1.5]+[sls]+[0.30]*d)) G = GPdc.GPcore(X,Y,S,D,GPdc.kernel(GPdc.SQUEXP,d+1,sp.array([1.5]+[sls]+[0.30]*d))) def obj(x,s,d,override=False): x = x.flatten() if sfn(x)==0. or override: noise = 0. else: noise = sp.random.normal(scale=sp.sqrt(sfn(x))) return [G.infer_m(x,[d])[0,0]+noise,cfn(x)] def dirwrap(x,y): z = obj(sp.array([[sl]+[i for i in x]]),sl,[sp.NaN],override=True) return (z,0) [xmin0,ymin0,ierror] = DIRECT.solve(dirwrap,lb,ub,user_data=[], algmethod=1, maxf=89000, logfilename='/dev/null') lb2 = xmin0-sp.ones(d)*1e-4 ub2 = xmin0+sp.ones(d)*1e-4 [xmin,ymin,ierror] = DIRECT.solve(dirwrap,lb2,ub2,user_data=[], algmethod=1, maxf=89000, logfilename='/dev/null') #print "RRRRR"+str([xmin0,xmin,ymin0,ymin,xmin0-xmin,ymin0-ymin]) return [obj,xmin,ymin]
def makeG(X,Y,S,D,kindex,mprior,sprior,nh): #draw hyps based on plk #print "RRRRRRRRRRRRRR"+str([X,Y,S,D,kindex,mprior,sprior,nh]) H = ESutils.drawhyp_plk(X,Y,S,D,kindex,mprior,sprior,nh) G = GPdc.GPcore(X,Y,S,D,[GPdc.kernel(kindex,X.shape[1],i) for i in H]) return G
def drawmins(G,n,lb,ub,SUPPORT=300,mode = [ESutils.SUPPORT_SLICELCB],SLICELCB_PARA=1.): #draw support points W = sp.vstack([ESutils.draw_support(G, lb,ub,SUPPORT/len(mode),m, para = SLICELCB_PARA) for m in mode]) if False: print 'how did I get here' plt.figure() plt.plot(W[:,0],W[:,1],'g.') plt.show() #draw in samples on the support print "drawing mins from support" R = ESutils.draw_min(G,W,n) if False: plt.figure() plt.plot(R[:,0],R[:,1],'r.') plt.show() #plt.show() return R
def gensquexpIPdraw(d, lb, ub, sl, su, sfn, sls, cfn): #axis = 0 value = sl #d dimensional objective +1 for s nt = 25 #print sp.hstack([sp.array([[sl]]),lb]) #print sp.hstack([sp.array([[su]]),ub]) [X, Y, S, D] = ESutils.gen_dataset(nt, d + 1, sp.hstack([sp.array([[sl]]), lb]).flatten(), sp.hstack([sp.array([[su]]), ub]).flatten(), GPdc.SQUEXP, sp.array([1.5] + [sls] + [0.30] * d)) G = GPdc.GPcore( X, Y, S, D, GPdc.kernel(GPdc.SQUEXP, d + 1, sp.array([1.5] + [sls] + [0.30] * d))) def obj(x, s, d, override=False): x = x.flatten() if sfn(x) == 0. or override: noise = 0. else: noise = sp.random.normal(scale=sp.sqrt(sfn(x))) return [G.infer_m(x, [d])[0, 0] + noise, cfn(x)] def dirwrap(x, y): z = obj(sp.array([[sl] + [i for i in x]]), sl, [sp.NaN], override=True) return (z, 0) [xmin0, ymin0, ierror] = DIRECT.solve(dirwrap, lb, ub, user_data=[], algmethod=1, maxf=89000, logfilename='/dev/null') lb2 = xmin0 - sp.ones(d) * 1e-4 ub2 = xmin0 + sp.ones(d) * 1e-4 [xmin, ymin, ierror] = DIRECT.solve(dirwrap, lb2, ub2, user_data=[], algmethod=1, maxf=89000, logfilename='/dev/null') #print "RRRRR"+str([xmin0,xmin,ymin0,ymin,xmin0-xmin,ymin0-ymin]) return [obj, xmin, ymin]
def makedata(self,n,d,ki,hy,lb,ub): self.n=n self.d=d self.ki=ki self.hy=hy self.nhy = hy.size self.lb=lb self.ub=ub t0 = time.time() [X,Y,S,D] = ESutils.gen_dataset(n,d,lb,ub,ki,hy,s=hy[-1]) t1 = time.time() print "Setuptime: "+str(t1-t0) S = sp.zeros(S.shape) self.X=X self.Y=Y self.S=S self.D=D return
def makedata(self, n, d, ki, hy, lb, ub): self.n = n self.d = d self.ki = ki self.hy = hy self.nhy = hy.size self.lb = lb self.ub = ub t0 = time.time() [X, Y, S, D] = ESutils.gen_dataset(n, d, lb, ub, ki, hy, s=hy[-1]) t1 = time.time() print "Setuptime: " + str(t1 - t0) S = sp.zeros(S.shape) self.X = X self.Y = Y self.S = S self.D = D return
def gensquexpdraw(d,lb,ub,ignores=-1): nt=14 [X,Y,S,D] = ESutils.gen_dataset(nt,d,lb,ub,GPdc.SQUEXP,sp.array([1.5]+[0.30]*d)) G = GPdc.GPcore(X,Y,S,D,GPdc.kernel(GPdc.SQUEXP,d,sp.array([1.5]+[0.30]*d))) def obj(x,s,d,override=False): #print [x,s,d] if ignores>0: s=ignores if s==0. or override: noise = 0. else: noise = sp.random.normal(scale=sp.sqrt(s)) print "EVAL WITH NOISE: "+str(noise) + "FROM S= "+str(s) return [G.infer_m(x,[d])[0,0]+noise,1.] def dirwrap(x,y): z = G.infer_m(x,[[sp.NaN]])[0,0] #z = obj(x,0.,[sp.NaN]) return (z,0) [xmin,ymin,ierror] = DIRECT.solve(dirwrap,lb,ub,user_data=[], algmethod=1, maxf=89000, logfilename='/dev/null') return [obj,xmin,ymin]
import scipy as sp from scipy import linalg as spl from matplotlib import pyplot as plt import GPdc import OPTutils import ESutils import DIRECT #base dimension d = 2 kindex = GPdc.MAT52 nt = 34 lb = sp.array([0.] + [-1.] * d) ub = sp.array([5.] + [1.] * d) Htrue = sp.array([1.4, 4.] + [0.25] * d) [X, Y, S, D] = ESutils.gen_dataset(nt, d + 1, lb, ub, kindex, Htrue, s=1e-8) G = GPdc.GPcore(X, Y, S, D, GPdc.kernel(kindex, d + 1, Htrue)) def ojfaugnn(x): return G.infer_m(x, [[sp.NaN]])[0, 0] def opt_ip(s): def dwrap(x, y): X = sp.hstack([[s], x]) return (ojfaugnn(X), 0) [xm, ym, ierror] = DIRECT.solve(dwrap, lb[1:], ub[1:],
import ESutils import scipy as sp from scipy import linalg as spl from scipy import stats as sps from matplotlib import pyplot as plt import GPdc import PES #------------------------------------------------------------------------- #2d nt=30 d=2 lb = sp.array([0.]+[-1.]*(d-1)) ub = sp.array([1.]*d) [X,Y,S,D] = ESutils.gen_dataset(nt,d,lb,ub,GPdc.SQUEXP,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): return 1e-4 [xmin,ymin,ierror] = pesobj.search_acq(cfn,sfn)
# 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 ESutils import GPdc nt=80 d=1 lb = sp.array([-1.]*d) ub = sp.array([1.]*d) [X,Y,S,D] = ESutils.gen_dataset(nt,d,lb,ub,GPdc.SQUEXP,sp.array([0.9,0.25]),s=0.) S*=0. for i in xrange(nt): 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])
import ESutils import GPdc nt = 5 X = sp.matrix(sp.linspace(-1, 1, nt)).T D = [[sp.NaN]] * (nt) hyp = sp.array([1.5, 0.15]) kf = GPdc.kernel(GPdc.SQUEXP, 1, hyp) Kxx = GPdc.buildKsym_d(kf, X, D) Y = spl.cholesky(Kxx, lower=True) * sp.matrix(sps.norm.rvs(0, 1.0, nt)).T + sp.matrix(sps.norm.rvs(0, 1e-3, nt)).T S = sp.matrix([1e-2] * nt).T g = GPdc.GPcore(X, Y, S, D, kf) f, a = plt.subplots(2) Xe = sp.array([-0.25, 0.25]) De = [[sp.NaN]] * 2 [m0, V0] = g.infer_full(Xe, De) Ye = sp.array([2.0, -2.0]) Ze = sp.array([1.0, -1.0]) Fe = sp.array([(1e-6) ** 2, (1e-6) ** 2]) mt, vt = eprop.expectation_prop(m0, V0, Ye, Ze, Fe, 20) print D + De g2 = GPdc.GPcore( sp.vstack([X, sp.array([Xe]).T]), sp.vstack([Y, sp.array([Ye]).T]), sp.vstack([S, sp.array([Fe]).T]), D + De, kf ) ESutils.plot_gp(g, a[0], sp.linspace(-1, 1, 100), [[sp.NaN]] * 100) ESutils.plot_gp(g2, a[1], sp.linspace(-1, 1, 100), [[sp.NaN]] * 100) plt.show()
# and open the template in the editor. import ESutils import scipy as sp from scipy import linalg as spl from scipy import stats as sps from matplotlib import pyplot as plt #uniform test class bob: def __init__(self,D): self.D=D return X = ESutils.draw_support_inplane(bob(2), sp.array([-2,-1]),sp.array([0,3]),500,ESutils.SUPPORT_UNIFORM,1,0.5) for i in xrange(X.shape[0]): plt.plot(X[i,0],X[i,1],'r.') plt.axis([-5,5,-5,5]) #2d gp test import GPdc nt=34 X = ESutils.draw_support(bob(2), sp.array([-1.,-1.]),sp.array([1.,1.]),nt,ESutils.SUPPORT_UNIFORM) D = [[sp.NaN]]*(nt) hyp = sp.array([1.5,0.15,0.15]) kf = GPdc.gen_sqexp_k_d(hyp) Kxx = GPdc.buildKsym_d(kf,X,D)
import scipy as sp from scipy import linalg as spl from scipy import stats as sps from matplotlib import pyplot as plt import GPdc import ESutils nt = 2 d = 1 lb = sp.array([-1.]) ub = sp.array([1.]) [X, Y, S, D] = ESutils.gen_dataset(nt, d, lb, ub, GPdc.SQUEXP, sp.array([1.5, 0.35]), s=1e-3) g = GPdc.GPcore(X, Y, S, D, GPdc.kernel(GPdc.SQUEXP, 1, sp.array([1.5, 0.35]))) np = 100 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_post(Xp, Dp) f, a = plt.subplots(3) s = sp.sqrt(V[0, :]) a[0].fill_between(sup,
from scipy import stats as sps from scipy import linalg as spl import scipy as sp from matplotlib import pyplot as plt import ESutils import GPdc nt = 22 d = 1 lb = sp.array([-1.] * d) ub = sp.array([1.] * d) [X, Y, S, D] = ESutils.gen_dataset(nt, d, lb, ub, 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.])
#!/usr/bin/env python2 #encoding: UTF-8 #Draw 200 hyperparameters from the posterior, plot the draws on a countour plot, first for very few points, then a large number import ESutils import scipy as sp from scipy import linalg as spl from scipy import stats as sps from matplotlib import pyplot as plt import GPdc #test on a single point nt = 3 X = ESutils.draw_support(1, sp.array([-1.]), sp.array([1.]), nt, ESutils.SUPPORT_UNIFORM) D = [[sp.NaN]] * (nt) hyp = sp.array([1.5, 0.15]) kf = GPdc.gen_sqexp_k_d(hyp) Kxx = GPdc.buildKsym_d(kf, X, D) Y = spl.cholesky(Kxx, lower=True) * sp.matrix(sps.norm.rvs( 0, 1., nt)).T + sp.matrix(sps.norm.rvs(0, 1e-3, nt)).T S = sp.matrix([1e-6] * nt).T G = GPdc.GPcore(X, Y, S, D, GPdc.kernel(GPdc.SQUEXP, 2, hyp)) ng = 40 A = sp.empty([ng, ng]) print 'startimage1' sup = sp.logspace(-3, 2, ng) for i, hi in enumerate(sup):
import ESutils import scipy as sp from scipy import linalg as spl from scipy import stats as sps from matplotlib import pyplot as plt #uniform test class bob: def __init__(self, D): self.D = D return X = ESutils.draw_support_inplane(bob(2), sp.array([-2, -1]), sp.array([0, 3]), 500, ESutils.SUPPORT_UNIFORM, 1, 0.5) for i in xrange(X.shape[0]): plt.plot(X[i, 0], X[i, 1], 'r.') plt.axis([-5, 5, -5, 5]) #2d gp test import GPdc nt = 34 X = ESutils.draw_support(bob(2), sp.array([-1., -1.]), sp.array([1., 1.]), nt, ESutils.SUPPORT_UNIFORM) D = [[sp.NaN]] * (nt) hyp = sp.array([1.5, 0.15, 0.15]) kf = GPdc.gen_sqexp_k_d(hyp) Kxx = GPdc.buildKsym_d(kf, X, D)
import scipy as sp from scipy import linalg as spl from matplotlib import pyplot as plt import GPdc import OPTutils import ESutils import DIRECT #base dimension d = 2 kindex = GPdc.MAT52 nt = 34 lb = sp.array([0.]+[-1.]*d) ub = sp.array([5.]+[1.]*d) Htrue = sp.array([1.4,4.]+[0.25]*d) [X,Y,S,D] = ESutils.gen_dataset(nt,d+1,lb,ub,kindex,Htrue, s=1e-8) G = GPdc.GPcore(X,Y,S,D,GPdc.kernel(kindex,d+1,Htrue)) def ojfaugnn(x): return G.infer_m(x,[[sp.NaN]])[0,0] def opt_ip(s): def dwrap(x,y): X = sp.hstack([[s],x]) return (ojfaugnn(X),0) [xm,ym,ierror] = DIRECT.solve(dwrap,lb[1:],ub[1:], user_data=[], algmethod=1, maxf=12000, logfilename='/dev/null') print "DIRECT found: " +str([xm,ym,ierror]) return xm mintrue = opt_ip(0.) minaug = sp.hstack([[0.],mintrue])
# 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. import ESutils import scipy as sp from scipy import linalg as spl from scipy import stats as sps from matplotlib import pyplot as plt #uniform test import GPdc X = ESutils.draw_support(2, sp.array([-2,-1]),sp.array([0,3]),500,ESutils.SUPPORT_UNIFORM) for i in xrange(X.shape[0]): plt.plot(X[i,0],X[i,1],'r.') plt.axis([-5,5,-5,5]) #2d gp test nt=34 X = ESutils.draw_support(2, sp.array([-1.,-1.]),sp.array([1.,1.]),nt,ESutils.SUPPORT_UNIFORM) D = [[sp.NaN]]*(nt) hyp = sp.array([1.5,0.25,0.25]) kf = GPdc.gen_sqexp_k_d(hyp) Kxx = GPdc.buildKsym_d(kf,X,D) Y = spl.cholesky(Kxx,lower=True)*sp.matrix(sps.norm.rvs(0,1.,nt)).T+sp.matrix(sps.norm.rvs(0,1e-3,nt)).T S = sp.matrix([1e-6]*nt).T
def drawmins_inplane(G,n,lb,ub,axis,value, SUPPORT=300, mode=ESutils.SUPPORT_SLICELCB, SLICELCB_PARA=1.): W = sp.vstack([ESutils.draw_support_inplane(G, lb,ub,SUPPORT/len(mode),m, axis,value,para = SLICELCB_PARA) for m in mode]) #draw in samples on the support R = ESutils.draw_min(G,W,n) return R
ax[i].plot(sup,sps.norm.pdf(sup,loc=mu[i],scale=sp.sqrt(vu[i,i])),'r') ax[i].twinx().plot(sup,sps.norm.cdf(Z[i]*(sup-Y[i])/max(F[i],1e-20))*sps.norm.pdf(sup,loc=m[i],scale=sp.sqrt(v[i,i])),'g') #est on a gp import ESutils import GPdc nt=5 X = sp.matrix(sp.linspace(-1,1,nt)).T D = [[sp.NaN]]*(nt) hyp = sp.array([1.5,0.15]) kf = GPdc.kernel(GPdc.SQUEXP,1,hyp) Kxx = GPdc.buildKsym_d(kf,X,D) Y = spl.cholesky(Kxx,lower=True)*sp.matrix(sps.norm.rvs(0,1.,nt)).T+sp.matrix(sps.norm.rvs(0,1e-3,nt)).T S = sp.matrix([1e-2]*nt).T g = GPdc.GPcore(X,Y,S,D,kf) f,a = plt.subplots(2) Xe = sp.array([-0.25,0.25]) De = [[sp.NaN]]*2 [m0,V0] = g.infer_full(Xe,De) Ye = sp.array([2.,-2.]) Ze = sp.array([1.,-1.]) Fe = sp.array([(1e-6)**2,(1e-6)**2]) mt,vt = eprop.expectation_prop(m0,V0,Ye,Ze,Fe,20) print D+De g2 = GPdc.GPcore(sp.vstack([X,sp.array([Xe]).T]),sp.vstack([Y,sp.array([Ye]).T]),sp.vstack([S,sp.array([Fe]).T]),D+De,kf) ESutils.plot_gp(g,a[0],sp.linspace(-1,1,100),[[sp.NaN]]*100) ESutils.plot_gp(g2,a[1],sp.linspace(-1,1,100),[[sp.NaN]]*100) plt.show()
#!/usr/bin/env python2 #encoding: UTF-8 #Draw 200 hyperparameters from the posterior, plot the draws on a countour plot, first for very few points, then a large number import ESutils import scipy as sp from scipy import linalg as spl from scipy import stats as sps from matplotlib import pyplot as plt import GPdc #test on a single point nt=3 X = ESutils.draw_support(1, sp.array([-1.]),sp.array([1.]),nt,ESutils.SUPPORT_UNIFORM) D = [[sp.NaN]]*(nt) hyp = sp.array([1.5,0.15]) kf = GPdc.gen_sqexp_k_d(hyp) Kxx = GPdc.buildKsym_d(kf,X,D) Y = spl.cholesky(Kxx,lower=True)*sp.matrix(sps.norm.rvs(0,1.,nt)).T+sp.matrix(sps.norm.rvs(0,1e-3,nt)).T S = sp.matrix([1e-6]*nt).T G = GPdc.GPcore(X,Y,S,D,GPdc.kernel(GPdc.SQUEXP,2,hyp)) ng = 40 A = sp.empty([ng,ng]) print 'startimage1' sup = sp.logspace(-3,2,ng) for i,hi in enumerate(sup): for j,hj in enumerate(sup):
import ESutils import scipy as sp from scipy import linalg as spl from scipy import stats as sps from matplotlib import pyplot as plt import GPdc import PES #------------------------------------------------------------------------- #2d nt = 30 d = 2 lb = sp.array([-1.] * d) ub = sp.array([1.] * d) [X, Y, S, D] = ESutils.gen_dataset(nt, d, lb, ub, GPdc.SQUEXP, sp.array([1.5, 0.35, 0.30])) kindex = GPdc.SQUEXP mprior = sp.array([0.] + [-1.] * d) sprior = sp.array([1.] * (d + 1)) pesobj = PES.PES(X, Y, S, D, lb, ub, kindex, mprior, sprior, DH_SAMPLES=8,
# 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. import scipy as sp from scipy import linalg as spl from scipy import stats as sps from matplotlib import pyplot as plt import GPdc import ESutils nt=2 d=1 lb = sp.array([-1.]) ub = sp.array([1.]) [X,Y,S,D] = ESutils.gen_dataset(nt,d,lb,ub,GPdc.SQUEXP,sp.array([1.5,0.35]),s=1e-3) g = GPdc.GPcore(X,Y,S,D,GPdc.kernel(GPdc.SQUEXP,1,sp.array([1.5,0.35]))) np=100 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_post(Xp,Dp) f,a = plt.subplots(3) s = sp.sqrt(V[0,:]) a[0].fill_between(sup,sp.array(m[0,:]-2.*s).flatten(),sp.array(m[0,:]+2.*s).flatten(),facecolor='lightblue',edgecolor='lightblue') a[0].plot(sup,m[0,:].flatten()) a[0].plot(sp.array(X[:,0]).flatten(),Y,'g.')