def _evalfull(self, x):
fadd = self.fopt
curshape, dim = self.shape_(x)
# it is assumed x are row vectors
if self.lastshape != curshape:
self.initwithsize(curshape, dim)
fadd = fadd + 5 * np.sum(np.abs(self.scales))
# BOUNDARY HANDLING
# move "too" good coordinates back into domain
x = np.array(x) # convert x and make a copy of x.
# The following may modify x directly.
idx_out_of_bounds = (x * self.arrxopt) > 25 # 25 == 5 * 5
x[idx_out_of_bounds] = sign(x[idx_out_of_bounds]) * 5
# TRANSFORMATION IN SEARCH SPACE
# COMPUTATION core
ftrue = dot(x, self.scales)
fval = self.noise(ftrue)
# FINALIZE
ftrue += fadd
fval += fadd
return fval, ftrue
评论列表
文章目录