def setParameters(self, NP=25, C1=2.0, C2=2.0, w=0.7, vMin=-4, vMax=4, InitPopFunc=defaultNumPyInit, binary=False, **ukwargs): r"""Set Particle Swarm Algorithm main parameters. Args: NP (Optional[int]): Population size C1 (Optional[float]): Cognitive component C2 (Optional[float]): Social component w (Optional[float]): Inertial weight vMin (Optional[float]): Mininal velocity vMax (Optional[float]): Maximal velocity InitPopFunc (Optional(func)): Init functions as in Algorithm Base Class binary (Optional(bool)): If True, V is rounded and casted to int **ukwargs: Additional arguments See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, **ukwargs) self.C1, self.C2, self.w, self.vMin, self.vMax = C1, C2, w, vMin, vMax self.binary = binary if ukwargs: logger.info('Unused arguments: %s' % (ukwargs))
def setParameters(self, NP=25, SI_init=3, SI_final=10, SV_init=3, SV_final=13, min_w=0.3, w_scale=0.7, **ukwargs): r"""Set core arguments of FishSchoolSearch algorithm. Arguments: NP (Optional[int]): Number of fishes in school. SI_init (Optional[int]): Length of initial individual step. SI_final (Optional[int]): Length of final individual step. SV_init (Optional[int]): Length of initial volatile step. SV_final (Optional[int]): Length of final volatile step. min_w (Optional[float]): Minimum weight of a fish. w_scale (Optional[float]): Maximum weight of a fish. See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP) self.step_individual_init = SI_init self.step_individual_final = SI_final self.step_volitive_init = SV_init self.step_volitive_final = SV_final self.min_w = min_w self.w_scale = w_scale
def setParameters(self, N=25, phi=10, Fa=0.5, Fb=0.5, Fd=0.3, k=25, P_Cr=0.5, P_F=0.36, SexualCrossover=SexualCrossoverSimple, Brooding=BroodingSimple, Distance=euclidean, **ukwargs): r"""Set the parameters of the algorithm. Arguments: N (int): population size for population initialization. phi (int): TODO. Fa (float): TODO. Fb (float): Value $\in [0, 1]$ for Brooding size. Fd (float): Value $\in [0, 1]$ for Depredation. k (int): Trys for larvae setting. SexualCrossover (Callable[[numpy.ndarray, float, Task, mtrand.RandomState, Dict[str, Any]], Tuple[numpy.ndarray, numpy.ndarray[float]]]): Crossover function. P_Cr (float): Crossover rate $\in [0, 1]$. Brooding (Callable[[numpy.ndarray, float, Task, mtrand.RandomState, Dict[str, Any]], Tuple[numpy.ndarray, numpy.ndarray[float]]]): Brooding function. P_F (float): Crossover rate $\in [0, 1]$. Distance (Callable[[numpy.ndarray, numpy.ndarray], float]): Funciton for calculating distance between corals. See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, **ukwargs) self.phi, self.Fa, self.Fb, self.Fd, self.k, self.P_Cr, self.P_F = phi, Fa, Fb, Fd, k, P_Cr, P_F self.SexualCrossover, self.Brooding, self.Distance = SexualCrossover, Brooding, Distance if ukwargs: logger.info('Unused arguments: %s' % (ukwargs))
def setParameters(self, n=25, l0=5, nt=5, rho=0.4, gamma=0.6, beta=0.08, s=0.03, Distance=euclidean, **ukwargs): r"""Set the arguments of an algorithm. Arguments: n (Optional[int]): Number of glowworms in population. l0 (Optional[float]): Initial luciferin quantity for each glowworm. nt (Optional[float]): -- rs (Optional]float]): Maximum sensing range. rho (Optional[float]): Luciferin decay constant. gamma (Optional[float]): Luciferin enhancement constant. beta (Optional[float]): -- s (Optional[float]): -- Distance (Optional[Callable[[numpy.ndarray, numpy.ndarray], float]]]): Measure distance between two individuals. """ if "NP" in ukwargs: n = ukwargs["NP"] Algorithm.setParameters(self, **ukwargs) self.n, self.l0, self.nt, self.rho, self.gamma, self.beta, self.s, self.Distance = n, l0, nt, rho, gamma, beta, s, Distance if ukwargs: logger.info('Unused arguments: %s' % (ukwargs))
def setParameters(self, NP=30, MR=0.1, C1=2.05, SMP=3, SPC=True, CDC=0.85, SRD=0.2, vMax=1.9, **ukwargs): r"""Set the algorithm parameters. Arguments: NP (int): Number of individuals in population. MR (float): Mixture ratio. C1 (float): Constant in tracing mode. SMP (int): Seeking memory pool. SPC (bool): Self-position considering. CDC (float): Decides how many dimensions will be varied. SRD (float): Seeking range of the selected dimension. vMax (float): Maximal velocity. See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, **ukwargs) self.MR, self.C1, self.SMP, self.SPC, self.CDC, self.SRD, self.vMax = MR, C1, SMP, SPC, CDC, SRD, vMax
def setParameters(self, NP=25, Ts=5, Mr=0.25, Cr=0.25, Selection=TournamentSelection, Crossover=UniformCrossover, Mutation=UniformMutation, **ukwargs): r"""Set the parameters of the algorithm. Arguments: NP (Optional[int]): Population size. Ts (Optional[int]): Tournament selection. Mr (Optional[int]): Mutation rate. Cr (Optional[float]): Crossover rate. Selection (Optional[Callable[[numpy.ndarray[Individual], int, int, Individual, mtrand.RandomState], Individual]]): Selection operator. Crossover (Optional[Callable[[numpy.ndarray[Individual], int, float, mtrand.RandomState], Individual]]): Crossover operator. Mutation (Optional[Callable[[numpy.ndarray[Individual], int, float, Task, mtrand.RandomState], Individual]]): Mutation operator. See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` * Selection: * :func:`NiaPy.algorithms.basic.TournamentSelection` * :func:`NiaPy.algorithms.basic.RouletteSelection` * Crossover: * :func:`NiaPy.algorithms.basic.UniformCrossover` * :func:`NiaPy.algorithms.basic.TwoPointCrossover` * :func:`NiaPy.algorithms.basic.MultiPointCrossover` * :func:`NiaPy.algorithms.basic.CrossoverUros` * Mutations: * :func:`NiaPy.algorithms.basic.UniformMutation` * :func:`NiaPy.algorithms.basic.CreepMutation` * :func:`NiaPy.algorithms.basic.MutationUros` """ Algorithm.setParameters(self, NP=NP, itype=ukwargs.pop('itype', Individual), InitPopFunc=ukwargs.pop('InitPopFunc', defaultIndividualInit), **ukwargs) self.Ts, self.Mr, self.Cr = Ts, Mr, Cr self.Selection, self.Crossover, self.Mutation = Selection, Crossover, Mutation
class AlgorithBaseTestCase(TestCase): def setUp(self): self.a = Algorithm() def test_randint(self): o = self.a.randint(Nmax=20, Nmin=10, D=[10, 10]) self.assertEqual(o.shape, (10, 10)) o = self.a.randint(Nmax=20, Nmin=10, D=(10, 5)) self.assertEqual(o.shape, (10, 5)) o = self.a.randint(Nmax=20, Nmin=10, D=10) self.assertEqual(o.shape, (10, )) def test_setParameters(self): self.a.setParameters(t=None, a=20) self.assertRaises(AttributeError, lambda: self.assertEqual(self.a.a, None)) def test_randn(self): a = self.a.randn([1, 2]) self.assertEqual(a.shape, (1, 2)) a = self.a.randn(1) self.assertEqual(len(a), 1) a = self.a.randn(2) self.assertEqual(len(a), 2) a = self.a.randn() self.assertIsInstance(a, float)
def setParameters(self, NP=50, N_max=0.01, V_f=0.02, D_max=0.002, C_t=0.93, W_n=0.42, W_f=0.38, d_s=2.63, nn=5, Cr=0.2, Mu=0.05, epsilon=1e-31, **ukwargs): r"""Set the arguments of an algorithm. Arguments: NP (Optional[int]): Number of krill herds in population. N_max (Optional[float]): Maximum induced speed. V_f (Optional[float]): Foraging speed. D_max (Optional[float]): Maximum diffusion speed. C_t (Optional[float]): Constant $\in [0, 2]$. W_n (Optional[Union[int, float, numpy.ndarray]]): Intera weights of the motion induced from neighbors :math:`\in [0, 1]`. W_f (Optional[Union[int, float, numpy.ndarray]]): Intera weights of the motion induced from foraging :math:`\in [0, 1]`. d_s (Optional[float]): Maximum euclidean distance for neighbors. nn (Optional[int]): Maximum neighbors for neighbors effect. Cr (Optional[float]): Crossover probability. Mu (Optional[float]): Mutation probability. epsilon (Optional[float]): Small numbers for division. See Also: * :func:`NiaPy.algorithms.algorithm.Algorithm.setParameters` """ Algorithm.setParameters(self, **ukwargs) self.NP = NP self.N_max, self.V_f, self.D_max, self.C_t, self.W_n, self.W_f, self.d_s, self.nn, self._Cr, self._Mu, self.epsilon = N_max, V_f, D_max, C_t, W_n, W_f, d_s, nn, Cr, Mu, epsilon if ukwargs: logger.info('Unused arguments: %s' % (ukwargs))
def setParameters(self, NP=50, F=1, CR=0.8, CrossMutt=CrossRand1, **ukwargs): r"""Set the algorithm parameters. Arguments: NP (Optional[int]): Population size. F (Optional[float]): Scaling factor. CR (Optional[float]): Crossover rate. CrossMutt (Optional[Callable[[numpy.ndarray, int, numpy.ndarray, float, float, mtrand.RandomState, list], numpy.ndarray]]): Crossover and mutation strategy. ukwargs (Dict[str, Any]): Additional arguments. See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, InitPopFunc=ukwargs.pop( 'InitPopFunc', defaultIndividualInit), itype=ukwargs.pop('itype', Individual), **ukwargs) self.F, self.CR, self.CrossMutt = F, CR, CrossMutt if ukwargs: logger.info('Unused arguments: %s' % (ukwargs))
def setParameters(self, NP=43, alpha=(1, 0.83), gamma=(1.17, 0.56), theta=(0.932, 0.832), d=euclidean, dn=euclidean, nl=1, F=1.2, CR=0.25, Combination=Elitism, **ukwargs): r"""Set the parameters for the algorith. Arguments: alpha (Optional[List[float]]): Factor for fickleness index function :math:`\in [0, 1]`. gamma (Optional[List[float]]): Factor for external irregularity index function :math:`\in [0, \infty)`. theta (Optional[List[float]]): Factor for internal irregularity index function :math:`\in [0, \infty)`. d (Optional[Callable[[float, float], float]]): function that takes two arguments that are function values and calcs the distance between them. dn (Optional[Callable[[numpy.ndarray, numpy.ndarray], float]]): function that takes two arguments that are points in function landscape and calcs the distance between them. nl (Optional[float]): Normalized range for neighborhood search :math:`\in (0, 1]`. F (Optional[float]): Mutation parameter. CR (Optional[float]): Crossover parameter :math:`\in [0, 1]`. Combination (Optional[Callable[numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, float, float, float, float, float, float, Task, mtrand.RandomState]]): Function for combining individuals to get new position/individual. See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` * Combination methods: * :func:`NiaPy.algorithms.other.Elitism' * :func:`NiaPy.algorithms.other.Crossover` * :func:`NiaPy.algorithms.other.Sequential` """ Algorithm.setParameters(self, NP=NP, **ukwargs) self.alpha, self.gamma, self.theta, self.d, self.dn, self.nl, self.F, self.CR, self.Combination = alpha, gamma, theta, d, dn, nl, F, CR, Combination
def setParameters(self, NP=25, C1=2.0, C2=2.0, w=0.7, vMin=-1.5, vMax=1.5, Repair=repair.reflect, **ukwargs): r"""Set Particle Swarm Algorithm main parameters. Args: NP (int): Population size C1 (float): Cognitive component. C2 (float): Social component. w (Union[float, numpy.ndarray]): Inertial weight. vMin (Union[float, numpy.ndarray]): Minimal velocity. vMax (Union[float, numpy.ndarray]): Maximal velocity. Repair (Callable[[np.ndarray, np.ndarray, np.ndarray, dict], np.ndarray]): Repair method for velocity. **ukwargs: Additional arguments See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, **ukwargs) self.C1, self.C2, self.w, self.vMin, self.vMax, self.Repair = C1, C2, w, vMin, vMax, Repair
def setParameters(self, NP=50, omega=0.25, mu=0.5, alpha=0.5, S_init=10, E_init=10, T_min=-10, T_max=10, **ukwargs): r"""Set the arguments of an algorithm. Arguments: NP (Optional[int]): Population size :math:`\in [1, \infty)`. T_min (Optional[float]): Minimum temperature, must be true :math:`$T_{min} < T_{max}`. T_max (Optional[float]): Maximum temperature, must be true :math:`T_{min} < T_{max}`. omega (Optional[float]): Burden factor :math:`\in [0, 1]`. mu (Optional[float]): Dying rate :math:`\in [0, 1]`. S_init (Optional[float]): Initial supply :math:`\in (0, \infty)`. E_init (Optional[float]): Initial endurance :math:`\in (0, \infty)`. See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, itype=Camel, InitPopFunc=ukwargs.pop( 'InitPopFunc', self.initPop), **ukwargs) self.omega, self.mu, self.alpha, self.S_init, self.E_init, self.T_min, self.T_max = omega, mu, alpha, S_init, E_init, T_min, T_max
def setParameters(self, NP=None, alpha=0.1, gamma=0.3, rho=-0.2, sigma=-0.2, **ukwargs): r"""Set the arguments of an algorithm. Arguments: NP (Optional[int]): Number of individuals. alpha (Optional[float]): Reflection coefficient parameter gamma (Optional[float]): Expansion coefficient parameter rho (Optional[float]): Contraction coefficient parameter sigma (Optional[float]): Shrink coefficient parameter See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, InitPopFunc=ukwargs.pop( 'InitPopFunc', self.initPop), **ukwargs) self.alpha, self.gamma, self.rho, self.sigma = alpha, gamma, rho, sigma
def setParameters(self, NP=10, lt=3, al=10, lsc=1, gsc=1, tr=0.3, **ukwargs): r"""Set the parameters of the algorithm. Args: NP (Optional[int]): Population size. lt (Optional[int]): Life time parameter. al (Optional[int]): Area limit parameter. lsc (Optional[int]): Local seeding changes parameter. gsc (Optional[int]): Global seeding changes parameter. tr (Optional[float]): Transfer rate parameter. ukwargs (Dict[str, Any]): Additional arguments. See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP) self.lt, self.al, self.lsc, self.gsc, self.tr = lt, al, lsc, gsc, tr if ukwargs: logger.info('Unused arguments: %s' % (ukwargs))
def setParameters(self, NP=25, C1=2.0, C2=2.0, w=0.7, vMin=-4, vMax=4, **ukwargs): r"""Set Particle Swarm Algorithm main parameters. Args: NP (Optional[int]): Population size C1 (Optional[float]): Cognitive component C2 (Optional[float]): Social component w (Optional[float]): Inertial weight vMin (Optional[float]): Mininal velocity vMax (Optional[float]): Maximal velocity **ukwargs: Additional arguments See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, **ukwargs) self.C1, self.C2, self.w, self.vMin, self.vMax = C1, C2, w, vMin, vMax if ukwargs: logger.info('Unused arguments: %s' % (ukwargs))
def setParameters(self, M=40, NoLsTests=5, NoLs=5, NoLsBest=5, NoEnabled=17, BONUS1=10, BONUS2=1, LSs=(MTS_LS1v1, MTS_LS2, MTS_LS3v1), **ukwargs): r"""Set the arguments of the algorithm. Arguments: M (int): Number of individuals in population. NoLsTests (int): Number of test runs on local search algorithms. NoLs (int): Number of local search algorithm runs. NoLsBest (int): Number of locals search algorithm runs on best solution. NoEnabled (int): Number of best solution for testing. BONUS1 (int): Bonus for improving global best solution. BONUS2 (int): Bonus for improving self. LSs (Iterable[Callable[[numpy.ndarray, float, numpy.ndarray, float, bool, numpy.ndarray, Task, Dict[str, Any]], Tuple[numpy.ndarray, float, numpy.ndarray, float, bool, int, numpy.ndarray]]]): Local searches to use. See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=M) self.NoLsTests, self.NoLs, self.NoLsBest, self.NoEnabled, self.BONUS1, self.BONUS2 = NoLsTests, NoLs, NoLsBest, NoEnabled, BONUS1, BONUS2 self.LSs = LSs if ukwargs: logger.info('Unused arguments: %s' % (ukwargs))
def setParameters(self, epsilon=1e-20, **ukwargs): r"""Set core parameters of CovarianceMatrixAdaptionEvolutionStrategy algorithm. Args: epsilon (float): Small number. **ukwargs (Dict[str, Any]): Additional arguments. """ Algorithm.setParameters(self, **ukwargs) self.epsilon = epsilon
def setParameters(self, delta=0.5, Neighborhood=Neighborhood, **ukwargs): r"""Set the algorithm parameters/arguments. Args: * delta (Optional[float]): Change for searching in neighborhood. * Neighborhood (Optional[Callable[numpy.ndarray, float, Task], Tuple[numpy.ndarray, float]]]): Function for getting neighbours. """ Algorithm.setParameters(self, NP=1, **ukwargs) self.delta, self.Neighborhood = delta, Neighborhood
def setParameters(self): r"""Set the algorithm parameters/arguments. Arguments: See Also * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=1)
def setParameters(self, NP=25, **ukwargs): r"""Set the algorithm parameters. Arguments: NP (int): Number of individuals in population See Also: * :func:`NiaPy.algorithms.algorithm.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, **ukwargs)
def setParameters(self, **ukwargs): r"""Set the algorithm parameters/arguments. Arguments: See Also * :func:`NiaPy.algorithms.Algorithm.setParameters` """ ukwargs.pop('NP', None) Algorithm.setParameters(self, NP=1)
def setParameters(self, n=10, C_a=1.5, C_r=0.5, **ukwargs): r"""Set the arguments of an algorithm. Arguments: n (int): Number of sparks :math:`\in [1, \infty)`. C_a (float): Amplification coefficient :math:`\in [1, \infty)`. C_r (float): Reduction coefficient :math:`\in (0, 1)`. """ Algorithm.setParameters(self, **ukwargs) self.n, self.C_a, self.C_r = n, C_a, C_r if ukwargs: logger.info('Unused arguments: %s' % (ukwargs))
def setParameters(self, **ukwargs): r"""Set the parameters of the algorithm. Args: A (Optional[float]): Loudness. r (Optional[float]): Pulse rate. See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=80, **ukwargs) self.A, self.r = 0.9, 0.1
def setParameters(self, NP=40, levy=0.01, **ukwargs): r"""Set the parameters of the algorithm. Args: levy (Optional[float]): Levy factor. See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, **ukwargs) self.levy = levy
def setParameters(self, delta=0.5, Neighborhood=Neighborhood, **ukwargs): r"""Set the algorithm parameters/arguments. Args: * delta (float): TODO * Neighborhood (Callable[numpy.ndarray, float, Task], Tuple[numpy.ndarray, float]]): Function for getting neighbours. """ Algorithm.setParameters(self, **ukwargs) self.delta, self.Neighborhood = delta, Neighborhood if ukwargs: logger.info('Unused arguments: %s' % (ukwargs))
def setParameters(self, n=10, C_a=1.5, C_r=0.5, **ukwargs): r"""Set the arguments of an algorithm. Arguments: n (int): Number of sparks :math:`\in [1, \infty)`. C_a (float): Amplification coefficient :math:`\in [1, \infty)`. C_r (float): Reduction coefficient :math:`\in (0, 1)`. """ ukwargs.pop('NP', None) Algorithm.setParameters(self, NP=1, **ukwargs) self.n, self.C_a, self.C_r = n, C_a, C_r
def setParameters(self, NP=40, G_0=2.467, epsilon=1e-17, **ukwargs): r"""Set the algorithm parameters. Arguments: G_0 (float): Starting gravitational constant. epsilon (float): TODO. See Also: * :func:`NiaPy.algorithms.algorithm.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, **ukwargs) self.G_0, self.epsilon = G_0, epsilon
def setParameters(self, NP=10, Limit=100, **ukwargs): r"""Set the parameters of Artificial Bee Colony Algorithm. Parameters: Limit (Optional[Union[float, numpy.ndarray[float]]]): Limt **ukwargs (Dict[str, Any]): Additional arguments See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, InitPopFunc=defaultIndividualInit, itype=SolutionABC, **ukwargs) self.FoodNumber, self.Limit = int(self.NP / 2), Limit
def setParameters(self, NP=10, Limit=100, **ukwargs): r"""Set the parameters of Artificial Bee Colony Algorithm. Parameters: Limit (Optional[Union[float, numpy.ndarray[float]]]): Limt **ukwargs (Dict[str, Any]): Additional arguments See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, itype=SolutionABC, **ukwargs) self.FoodNumber, self.Limit = int(self.NP / 2), Limit if ukwargs: logger.info('Unused arguments: %s' % (ukwargs))
def setParameters(self, NP=40, A=0.5, r=0.5, Qmin=0.0, Qmax=2.0, **ukwargs): r"""Set the parameters of the algorithm. Args: A (Optional[float]): Loudness. r (Optional[float]): Pulse rate. Qmin (Optional[float]): Minimum frequency. Qmax (Optional[float]): Maximum frequency. See Also: * :func:`NiaPy.algorithms.Algorithm.setParameters` """ Algorithm.setParameters(self, NP=NP, **ukwargs) self.A, self.r, self.Qmin, self.Qmax = A, r, Qmin, Qmax