Source code for svcco.implicit.kernel.kernel
import numpy as np
from .kernel_functions.fitness import fitness
from .kernel_functions.grad import grad
from .kernel_functions.hess import hess
#import sys #should remove
#sys.path.append('..')
from ..core.m_matrix import M
from ..core.n_matrix import N
from ..core.a_matrix import A
from ..core.h_matrix import H
from ..core.utils import norm
[docs]class kernel:
def __init__(self,points):
self.ndim = points.shape[0]
self.ddim = points.shape[1]
self.A_inv,self.K00,self.K01,self.K11 = A(points)
self.H_0 = H(self.K00,self.K01,self.K11,0)
self.fit = lambda x: fitness(x,self.H_0)
self.jac = lambda x: grad(x,self.H_0,n=points.shape[0])
self.hess = lambda x: hess(x,self.H_0,n=points.shape[0])
[docs] def fitness(self,x):
return self.fit(x)
[docs] def get_bounds(self):
bounds = []
lb = []
ub = []
for i in range(self.ndim):
for j in range(self.ddim-1):
if j < self.ddim-2:
lb.append(-2*np.pi)
ub.append(2*np.pi)
else:
lb.append(-2*np.pi)
ub.append(2*np.pi)
bounds.append(lb)
bounds.append(ub)
return tuple(bounds)
[docs] def gradient(self,x):
return self.jac(x)
[docs] def hessian(self,x):
return self.hess(x)