def createPopulation(lengthPopu, dephTree): population = [] numbOperators = int(helper.calculateNumberOfNodes(dephTree - 1)) numbLeaves = int( helper.calculateNumberOfNodes(dephTree)) - numbOperators for i in range(lengthPopu): chromOperators = helper.createRandomOperationList(numbOperators) chromNumbers = helper.createRandomNumbersList(numbLeaves) tree = Tree() tree.createFromList(chromOperators + chromNumbers) population.append(tree) return population
def crossover(tree_1, tree_2, depth): numbNodes = helper.calculateNumberOfNodes(depth) crossPoint = random.randint(2, numbNodes - 1) #print("CrossPoint:", crossPoint, "Number nodes:", numbNodes) #print("Tree_1:", tree_1.creationList) #print("Tree_2:", tree_2.creationList) list_1 = tree_1.creationList[0:crossPoint] + tree_2.creationList[ crossPoint:int(numbNodes)] list_2 = tree_2.creationList[0:crossPoint] + tree_1.creationList[ crossPoint:int(numbNodes)] #print() #print("List_1:", list_1) #print("List_2:", list_2) newTree_1 = Tree() newTree_2 = Tree() newTree_1.createFromList(list_1) newTree_2.createFromList(list_2) return newTree_1, newTree_2
from BinaryTree import Tree from BinaryTree import Node import math from Helper import helper import random print('-----Test generate a Tree-----') tree = Tree() data = [1, 2, 3, 4, 5, 6, 7, 8, 9] tree.createFromList(data) tree.printTree() print('-----Test find a node-----') node = tree.getListNodes()[7] print('Node: ', node) nodeFound = tree.find(node) print('Parent node found: ', nodeFound) nodeFound = tree.find(Node(6)) print('Parent node found: ', nodeFound) print('----c-Test eval()-----') x = 8 print(eval('((8)*(x))')) print(eval('((9)*(math.sin((7)*(x))))')) print(eval('(((8)*(x))+((0)*(x)*(1)*(x)))')) print('-----Test number of Nodes-----') print('Deph 1:', helper.calculateNumberOfNodes(1)) print('Deph 2:', helper.calculateNumberOfNodes(2)) print('Deph 3:', helper.calculateNumberOfNodes(3)) print('Deph 4:', helper.calculateNumberOfNodes(4))