for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
# Author: Simon Blanke
# Email: [email protected]
# License: MIT License
import numpy as np
class BasePositioner:
def __init__(self, *args, **kwargs):
self._pos_new = None
self._score_new = -np.inf
self.pos_current = None
self.score_current = -np.inf
self.pos_best = None
self.score_best = -np.inf
self.pos_new_list = []
self.score_new_list = []
@property
def pos_new(self):
return self._pos_new
@pos_new.setter
def pos_new(self, value):
self.pos_new_list.append(value)
self._pos_new = value
def score_new(self):
return self._score_new
@score_new.setter
def score_new(self, value):
self.score_new_list.append(value)
self._score_new = value
def move_climb(self, _cand_, pos, epsilon_mod=1):
sigma = 3 + _cand_._space_.dim * self.epsilon * epsilon_mod
pos_normal = self.climb_dist(pos, sigma, pos.shape)
pos_new_int = np.rint(pos_normal)
n_zeros = [0] * len(_cand_._space_.dim)
pos = np.clip(pos_new_int, n_zeros, _cand_._space_.dim)
return pos.astype(int)
def move_random(self, _cand_):
return _cand_._space_.get_random_pos()