Source code for pyJaya.variants.clasic

# -*- coding: utf-8 -*-
from pyJaya.variants.base import JayaBase
from pyJaya.solution import Solution
import numpy as np


[docs]class JayaClasic(JayaBase): """Jaya clasic class Args: numSolutions (int): Number of solutions of population. listVars (list): Range list. functionToEvaluate (funtion): Function to minimize or maximize. listConstraints (list, optional): Constraint list. Defaults to []. population (Population, optional): Population. Defaults to None. """
[docs] def run(self, number_iterations, rn=[]): """Run method Args: number_iterations (int): Number of iterations. Returns: Population: Final population. """ if len(rn) == 0: self.rn = self.generate_rn(number_iterations) else: assert number_iterations == len(rn) assert len(rn[0]) == self.cantVars assert len(rn[0][0]) == 2 self.rn = rn for i in range(number_iterations): result = self.population.getBestAndWorst() for solution in self.population.solutions: solt = [] for v_item, v_value in enumerate(solution.solution): solt.append(self.listVars[v_item].convert( ( v_value + self.rn[i][v_item][0] * (result['best_solution'][v_item] - abs(v_value)) - self.rn[i][v_item][1] * (result['worst_solution'][v_item]-abs(v_value))) )) auxSolution = Solution( self.listVars, self.functionToEvaluate, self.listConstraints) auxSolution.setSolution(np.array(solt)) if self.minimax: if (auxSolution.value > solution.value) and \ (auxSolution.constraintsOK(np.array(solt))): solution.setSolution(auxSolution.solution) else: if (auxSolution.value < solution.value) and \ (auxSolution.constraintsOK(np.array(solt))): solution.setSolution(auxSolution.solution) return self.population