def init(self, task): r"""Initialize dynamic arguments of Particle Swarm Optimization algorithm. Args: task (Task): Optimization task. Returns: Dict[str, numpy.ndarray]: * vMin: Minimal velocity. * vMax: Maximal velocity. * V: Initial velocity of particle. * flag: Refresh gap counter. """ return { 'min_velocity': full_array(self.min_velocity, task.dimension), 'max_velocity': full_array(self.max_velocity, task.dimension), 'v': np.full([self.population_size, task.dimension], 0.0), 'flag': np.full(self.population_size, 0), 'pc': np.asarray([ .05 + .45 * (np.exp(10 * (i - 1) / (self.population_size - 1)) - 1) / (np.exp(10) - 1) for i in range(self.population_size) ]) }
def init_weights(self, task): r"""Initialize weights. Args: task (Task): Optimization task. Returns: Tuple[numpy.ndarray, numpy.ndarray]: 1. Weights for neighborhood. 2. Weights for foraging. """ return full_array(self.W_n, task.dimension), full_array(self.W_f, task.dimension)
def init(self, _task): r"""Initialize dynamic parameters of algorithm. Args: _task (Task): Optimization task. Returns: Tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray] 1. Array of `self.alpha` propagated values 2. Array of `self.gamma` propagated values 3. Array of `self.theta` propagated values """ return full_array(self.alpha, self.population_size), full_array( self.gamma, self.population_size), full_array(self.theta, self.population_size)
def init(self, task): r"""Initialize dynamic arguments of Particle Swarm Optimization algorithm. Args: task (Task): Optimization task. Returns: Dict[str, Union[float, numpy.ndarray]]: * w (numpy.ndarray): Inertial weight. * min_velocity (numpy.ndarray): Minimal velocity. * max_velocity (numpy.ndarray): Maximal velocity. * v (numpy.ndarray): Initial velocity of particle. """ return { 'w': full_array(self.w, task.dimension), 'min_velocity': full_array(self.min_velocity, task.dimension), 'max_velocity': full_array(self.max_velocity, task.dimension), 'v': np.zeros((self.population_size, task.dimension)) }
def test_a_float_array3(self): a = [25.25 + i for i in range(10)] arr = full_array(np.asarray(a), 9) a.remove(34.25) self.assertTrue(np.array_equal(arr, np.asarray(a)))
def test_a_int_list3(self): a = [25 + i for i in range(10)] arr = full_array(a, 9) a.remove(34) self.assertTrue(np.array_equal(arr, np.asarray(a)))
def test_a_int_array2(self): a = [25 + i for i in range(10)] arr = full_array(np.asarray(a), 13) a.extend([25 + i for i in range(3)]) self.assertTrue(np.array_equal(arr, np.asarray(a)))
def test_a_float_array1(self): a = [25.25 + i for i in range(10)] arr = full_array(np.asarray(a), 15) a.extend([25.25 + i for i in range(5)]) self.assertTrue(np.array_equal(arr, np.asarray(a)))
def test_a_int_array(self): a = np.asarray([25] * 10) arr = full_array(a, 10) self.assertTrue(np.array_equal(arr, np.full(10, 25)))
def test_a_float_list(self): a = [25.25] * 10 arr = full_array(a, 10) self.assertTrue(np.array_equal(arr, np.full(10, 25.25)))
def test_a_int(self): arr = full_array(25, 10) self.assertTrue(np.array_equal(arr, np.full(10, 25)))
def setUp(self): self.D = 10 self.Upper, self.Lower = full_array(10, self.D), full_array(-10, self.D) self.met = repair.limit
def generate_individual(dim, upper, lower): upp, low = full_array(upper, dim), full_array(lower, dim) return default_rng().uniform(low, upp, dim)