def addpoints(xk, fxk, D, Y2, krig, index, theta, delta, pmax, opt_theta): points = krig.points # index(find(index=-1,1)) = length(fvals) + 1 # hard code WARNING point = Point(2) point.x = xk.x point.fval = fxk points.append(point) Y2_0 = Y2 index_0 = index if opt_theta: raise AssertionError("Optimization of hyperparameters not implemented.") else: ntest = 0 psi = 1.0 thetagauss = krig.params[0] L = [] Y2 = Y2_0 index = index_0 return krig
def rbfmodel(objective, fid, xk, fxk, krig, theta_1, theta_2, theta_3, theta_4, \ delta, deltamax, pmax, optTheta): deltamax = delta D = krig.points Y2, linear, Z, index = affpoints(xk, D, theta_1, theta_3*delta) if not linear: Z = Z*delta for i in range(len(Z[0,:])): # Hard code alert point = Point(2) point.x = xk.x + Z.view(np.ndarray)[:,i] Y2.append(point) D.append(point) f_high = objective(point, fid[1]) point.fval = f_high - objective(point, fid[0]) krig.points.append(point) index.append(len(krig.points)-1) linear = True krig = addpoints(xk, fxk[1]-fxk[0], D, Y2, krig, index, theta_2, theta_4*deltamax, pmax, optTheta) return krig, linear
def init_models(self): if self.LHS == 0: point = Point(self.n) point.x = np.array([-2.0, 2.0]) f_low = self.objective(point, self.fid[0]) f_high = self.objective(point, self.fid[1]) point.fval = f_high - f_low self.low_fid_eval += 1 elif self.LHS == 1: raise AssertionError("Latin hypercube not implemented. Set LHS = 0") else: raise AssertionError("LHS can be either 1 or 0") krig = Kriging(self.corr, self.params, [point]) print point.fval xk = point fk = f_high f_low = f_low mk = f_high delta = self.delta_0 krig, linear = rbfmodel(self.objective, self.fid, xk, [f_low, fk], krig,\ self.theta_1, self.theta_2, self.theta_3, self.theta_4,\ delta, self.delta_max, self.pmax, self.optTheta)