Example #1
0
File: pso.py Project: sisco0/NiaPy
    def init(self, task):
        r"""Initialize dynamic arguments of Particle Swarm Optimization algorithm.

		Args:
			task (Task): Optimization task.

		Returns:
			Dict[str, np.ndarray]:
			* vMin: Mininal velocity.
			* vMax: Maximal velocity.
			* V: Initial velocity of particle.
			* flag: Refresh gap counter.
		"""
        return {
            'vMin':
            full_array(self.vMin, task.D),
            'vMax':
            full_array(self.vMax, task.D),
            'V':
            np.full([self.NP, task.D], 0.0),
            'flag':
            np.full(self.NP, 0),
            'Pc':
            np.asarray([
                .05 + .45 * (np.exp(10 * (i - 1) / (self.NP - 1)) - 1) /
                (np.exp(10) - 1) for i in range(self.NP)
            ])
        }
Example #2
0
File: kh.py Project: sisco0/NiaPy
    def initWeights(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.D), full_array(self.W_f, task.D)
Example #3
0
File: aso.py Project: sisco0/NiaPy
    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.NP), full_array(
            self.gamma, self.NP), full_array(self.theta, self.NP)
Example #4
0
File: pso.py Project: sisco0/NiaPy
    def init(self, task):
        r"""Initialize dynamic arguments of Particle Swarm Optimization algorithm.

		Args:
			task (Task): Optimization task.

		Returns:
			Dict[str, Union[float, np.ndarray]]:
				* w (numpy.ndarray): Inertial weight.
				* vMin (numpy.ndarray): Mininal velocity.
				* vMax (numpy.ndarray): Maximal velocity.
				* V (numpy.ndarray): Initial velocity of particle.
		"""
        return {
            'w': full_array(self.w, task.D),
            'vMin': full_array(self.vMin, task.D),
            'vMax': full_array(self.vMax, task.D),
            'V': np.full([self.NP, task.D], 0.0)
        }
Example #5
0
File: task.py Project: sisco0/NiaPy
    def __init__(self,
                 D=0,
                 optType=OptimizationType.MINIMIZATION,
                 benchmark=None,
                 Lower=None,
                 Upper=None,
                 frepair=repair.limit,
                 **kwargs):
        r"""Initialize task class for optimization.

        Arguments:
                D (Optional[int]): Number of dimensions.
                optType (Optional[OptimizationType]): Set the type of optimization.
                benchmark (Union[str, Benchmark]): Problem to solve with optimization.
                Lower (Optional[numpy.ndarray]): Lower limits of the problem.
                Upper (Optional[numpy.ndarray]): Upper limits of the problem.
                frepair (Optional[Callable[[numpy.ndarray, numpy.ndarray, numpy.ndarray, Dict[str, Any]], numpy.ndarray]]): Function for reparing individuals components to desired limits.

        See Also:
                * `func`:NiaPy.util.Utility.__init__`
                * `func`:NiaPy.util.Utility.repair`

        """

        # dimension of the problem
        self.D = D
        # set optimization type
        self.optType = optType
        # set optimization function
        self.benchmark = Utility().get_benchmark(
            benchmark) if benchmark is not None else None

        if self.benchmark is not None:
            self.Fun = self.benchmark.function(
            ) if self.benchmark is not None else None

        # set Lower limits
        if Lower is not None:
            self.Lower = full_array(Lower, self.D)
        elif Lower is None and benchmark is not None:
            self.Lower = full_array(self.benchmark.Lower, self.D)
        else:
            self.Lower = full_array(0, self.D)

        # set Upper limits
        if Upper is not None:
            self.Upper = full_array(Upper, self.D)
        elif Upper is None and benchmark is not None:
            self.Upper = full_array(self.benchmark.Upper, self.D)
        else:
            self.Upper = full_array(0, self.D)

        # set range
        self.bRange = self.Upper - self.Lower
        # set repair function
        self.frepair = frepair
Example #6
0
	def generateIndividual(self, D, upper, lower):
		u, l = full_array(upper, D), full_array(lower, D)
		return default_rng().uniform(l, u, D)
Example #7
0
	def test_a_int_list3_fine(self):
		a = [25 + i for i in range(10)]
		A = full_array(a, 9)
		a.remove(34)
		self.assertTrue(np.array_equal(A, np.asarray(a)))
Example #8
0
	def test_a_int_array2_fine(self):
		a = [25 + i for i in range(10)]
		A = full_array(np.asarray(a), 13)
		a.extend([25 + i for i in range(3)])
		self.assertTrue(np.array_equal(A, np.asarray(a)))
Example #9
0
	def test_a_float_array1_fine(self):
		a = [25.25 + i for i in range(10)]
		A = full_array(np.asarray(a), 15)
		a.extend([25.25 + i for i in range(5)])
		self.assertTrue(np.array_equal(A, np.asarray(a)))
Example #10
0
	def test_a_int_array_fine(self):
		a = np.asarray([25 for i in range(10)])
		A = full_array(a, 10)
		self.assertTrue(np.array_equal(A, np.full(10, 25)))
Example #11
0
	def test_a_float_list_fine(self):
		a = [25.25 for i in range(10)]
		A = full_array(a, 10)
		self.assertTrue(np.array_equal(A, np.full(10, 25.25)))
Example #12
0
	def test_a_int_fine(self):
		A = full_array(25, 10)
		self.assertTrue(np.array_equal(A, np.full(10, 25)))
Example #13
0
	def test_lower(self):
		self.assertTrue(np.array_equal(full_array(self.Lower, self.D), self.task.Lower))
		self.assertTrue(np.array_equal(full_array(self.Lower, self.D), self.task.bcLower()))
Example #14
0
	def setUp(self):
		self.D = 10
		self.Upper, self.Lower = full_array(10, self.D), full_array(-10, self.D)
		self.met = repair.limit
Example #15
0
	def test_a_float_array3_fine(self):
		a = [25.25 + i for i in range(10)]
		A = full_array(np.asarray(a), 9)
		a.remove(34.25)
		self.assertTrue(np.array_equal(A, np.asarray(a)))
Example #16
0
	def test_upper(self):
		self.assertTrue(np.array_equal(full_array(self.Upper, self.D), self.task.Upper))
		self.assertTrue(np.array_equal(full_array(self.Upper, self.D), self.task.bcUpper()))
Example #17
0
	def test_is_feasible(self):
		self.assertFalse(self.task.isFeasible(full_array([1, 2, 3], self.D)))
Example #18
0
	def test_range(self):
		self.assertTrue(np.array_equal(full_array(self.Upper, self.D) - full_array(self.Lower, self.D), self.task.bRange))
		self.assertTrue(np.array_equal(full_array(self.Upper, self.D) - full_array(self.Lower, self.D), self.task.bcRange()))