def testXi(self): S5 = Shekel5() GP1 = GaussianProcess(GaussianKernel_iso([.2])) # self.failUnlessEqual(GP1.xi, 0.0) X = lhcSample(S5.bounds, 10, seed=0) Y = [S5.f(x) for x in X] GP1.addData(X, Y) ucbf1 = UCB(GP1, len(S5.bounds), scale=0.5) dopt1, _ = direct(ucbf1.negf, S5.bounds, maxiter=10) copt1, _ = cdirect(ucbf1.negf, S5.bounds, maxiter=10) mopt1, _ = maximizeUCB(GP1, S5.bounds, scale=0.5, maxiter=10) self.failUnlessAlmostEqual(dopt1, copt1, 4) self.failUnlessAlmostEqual(-dopt1, mopt1, 4) self.failUnlessAlmostEqual(-copt1, mopt1, 4) GP2 = GaussianProcess(GaussianKernel_iso([.3]), X, Y) ucbf2 = UCB(GP2, len(S5.bounds), scale=0.01) dopt2, _ = direct(ucbf2.negf, S5.bounds, maxiter=10) copt2, _ = cdirect(ucbf2.negf, S5.bounds, maxiter=10) mopt2, _ = maximizeUCB(GP2, S5.bounds, scale=.01, maxiter=10) self.failUnlessAlmostEqual(dopt2, copt2, 4) self.failUnlessAlmostEqual(-dopt2, mopt2, 4) self.failUnlessAlmostEqual(-copt2, mopt2, 4) self.failIfAlmostEqual(dopt1, dopt2, 4) self.failIfAlmostEqual(copt1, copt2, 4) self.failIfAlmostEqual(mopt1, mopt2, 4) GP3 = GaussianProcess(GaussianKernel_iso([.3]), X, Y) ucbf3 = UCB(GP3, len(S5.bounds), scale=.9) dopt3, _ = direct(ucbf3.negf, S5.bounds, maxiter=10) copt3, _ = cdirect(ucbf3.negf, S5.bounds, maxiter=10) mopt3, _ = maximizeUCB(GP3, S5.bounds, scale=0.9, maxiter=10) self.failUnlessAlmostEqual(dopt3, copt3, 4) self.failUnlessAlmostEqual(-dopt3, mopt3, 4) self.failUnlessAlmostEqual(-copt3, mopt3, 4) self.failIfAlmostEqual(dopt1, dopt3, 4) self.failIfAlmostEqual(copt1, copt3, 4) self.failIfAlmostEqual(mopt1, mopt3, 4) self.failIfAlmostEqual(dopt2, dopt3, 4) self.failIfAlmostEqual(copt2, copt3, 4) self.failIfAlmostEqual(mopt2, mopt3, 4)
def test1DcUCB(self): f = lambda x: float(sin(x * 5.)) X = lhcSample([[0., 1.]], 5, seed=22) Y = [f(x) for x in X] kernel = GaussianKernel_ard(array([1.0])) GP = GaussianProcess(kernel) GP.addData(X, Y) # should use optimizeGP.cpp ucbf = UCB(GP, 1) dopt, doptx = direct(ucbf.negf, [[0., 1.]], maxiter=10) copt, coptx = cdirect(ucbf.negf, [[0., 1.]], maxiter=10) mopt, moptx = maximizeUCB(GP, [[0., 1.]], maxiter=10) self.failUnlessAlmostEqual(dopt, copt, 4) self.failUnlessAlmostEqual(-dopt, mopt, 4) self.failUnlessAlmostEqual(-copt, mopt, 4) self.failUnless(sum(abs(doptx - coptx)) < .01) self.failUnless(sum(abs(moptx - coptx)) < .01) self.failUnless(sum(abs(moptx - doptx)) < .01)
def test1DcUCB(self): f = lambda x: float(sin(x*5.)) X = lhcSample([[0., 1.]], 5, seed=22) Y = [f(x) for x in X] kernel = GaussianKernel_ard(array([1.0])) GP = GaussianProcess(kernel) GP.addData(X, Y) # should use optimizeGP.cpp ucbf = UCB(GP, 1) dopt, doptx = direct(ucbf.negf, [[0., 1.]], maxiter=10) copt, coptx = cdirect(ucbf.negf, [[0., 1.]], maxiter=10) mopt, moptx = maximizeUCB(GP, [[0., 1.]], maxiter=10) self.failUnlessAlmostEqual(dopt, copt, 4) self.failUnlessAlmostEqual(-dopt, mopt, 4) self.failUnlessAlmostEqual(-copt, mopt, 4) self.failUnless(sum(abs(doptx-coptx)) < .01) self.failUnless(sum(abs(moptx-coptx)) < .01) self.failUnless(sum(abs(moptx-doptx)) < .01)