You could improve the while-loop:
You can shorten for example:
numberofgenerations =0 while numberofgenerations < 1000:to:
While True: ... if user press stop-key: break; if no changes any more: break;
You can shorten for example:
leki=len(killlist) for KI in range(0,leki): kill=(killlist)[KI] #select from killlist Object ID canvas.delete(kill)to
for kill in killlist: canvas.delete(kill)