Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from graphics import *
- from random import randint,random
- from time import *
- from pyeasyga import pyeasyga
- arrivo = (10,3)
- def distEuclidea(p1,p2):
- x1=p1[0]
- y1=p1[1]
- x2=p2[0]
- y2=p2[1]
- return ((x2-x1)**2+(y2-y1)**2)**(1/2)
- def create_individual(data):
- a = [(randint(0,5),randint(0,5)) for n in range(len(data))]
- print(a)
- return a
- def fitness(individual, data):
- totX=0
- totY=0
- for elem in individual:
- totX+=elem[0]
- totY+=elem[1]
- tot = (totX,totY)
- return distEuclidea(arrivo,tot)
- def mutate(individual):
- mutate_index = randint(0,len(individual)-1)
- individual[mutate_index] = (randint(0,5),randint(0,5))
- colori = ["red","green","blue","grey","brown","black"]
- win = GraphWin("GeneticGraphics",500,500)
- win.setCoords(0,0,100,100)
- arrivoC = Circle(Point(arrivo[0],arrivo[1]),1)
- arrivoC.draw(win)
- data=[(0,0),(0,0),(0,0),(0,0)]
- ga = pyeasyga.GeneticAlgorithm(data,maximise_fitness=False,generations=10,population_size=5)
- ga.create_individual = create_individual
- ga.fitness_function = fitness
- ga.mutate_function = mutate
- ga.run()
- for elem in ga.logGenerations:
- colore = colori[randint(0,len(colori)-1)]
- for vect in elem:
- print(vect)
- vect = vect[1]
- #--------------
- #print(str(vect)+" "+str(fitness(p1,arrivo,vect))+" "+colore)
- #print(str(fitness(p1,arrivo,vect)))
- rect = Rectangle(Point(0,0), Point(1,1))
- rect.setOutline(colore)
- rect.draw(win)
- #--------------
- for elem in vect:
- rect.move(elem[0],elem[1])
- sleep(0.1)
- for elem in ga.last_generation():
- print(elem[0])
Add Comment
Please, Sign In to add comment