def top(n,members,cityList): fitnessList = [] for member in members: fitnessList.append(fitnessFunction.fitnessFunction(member, cityList)) # print fitnessFunction.fitnessFunction(member, cityList), " ", member # print fitnessList ans = [] ansFitness = [] insertedMembers = 0 memberCount = len(members) for i in range(n): ans.append(members[i]) ansFitness.append(fitnessList[i]) (ansFitness,ans) = quickSort(ansFitness, ans) threshold = ansFitness[n - 1] for j in range(n, memberCount): if fitnessList[j] < threshold: insertAtPosition(fitnessList[j], members[j], ansFitness, ans) threshold = ansFitness[n - 1] return ans
def createFitnessArray(pop, popSize, fitness): i = 0 fitnessArray = [] while i < popSize: function = fitnessFunction.fitnessFunction(pop[i]) fitness = function.run() fitnessArray.append([pop[i], fitness]) print("Combined Fitness: " + str(fitness)) i += 1 return fitnessArray
def main(popSize, numOfIterations, mutationRate): print('--------------------') print('Creating Population') print('--------------------') bestFitness = [] fitnessArray = [] fitness = 0 #initialise population pop = createNewPop(popSize) fitnessArray = createFitnessArray(pop, popSize, fitness) #fitnessArray = [[[1.77, 0.9], 0.55],[[4.54, 0.9], 0.55], [[4.54, 0.9], 0.5], [[1.77, 1.6], 0.38], [[1.77, 1.6], 0.38], [[4.66, 1.6], 0.35], [[0.83, 2.55], 0.33], [[4.66, 1.6], 0.33], [[4.66, 1.6], 0.33], [[1.77, 2.55], 0.3]] #main loop print('--------------------') print('Starting Iterations') print('--------------------') i = 0 while i < numOfIterations: crossoverPair = getTournamentPair(fitnessArray) newMember = crossover(crossoverPair) newMember = mutate(newMember, mutationRate) del fitnessArray[-1] function = fitnessFunction.fitnessFunction(newMember) fitness = function.run() newArr = [newMember, fitness] fitnessArray.append(newArr) fitnessArray = sort(fitnessArray) bestFitness = fitnessArray[0] for x in fitnessArray: print(x) print('--------------------') print('Count: ' + str(i)) print('Best: ' + str(bestFitness)) print('--------------------') i += 1 return bestFitness
pm_1 = 0.15 pm_2 = 0.01 # 种群初始化 chrom = [] fitness = 0 total = 0 pop = {} for i in range(0, nPop): pop[i] = Chrom(chrom, fitness, total) for i in range(nPop): pop[i].chrom = getIndividual(GeneSize, NodeSize, nodesInd) pop[i].fitness, pop[i].total = fitnessFunction(pop[i].chrom, extra, Velocities, ConductivityMatrix, pipes, nodesInd, con, demand) # 保存最优 最差个体 pop = sorted(pop.iteritems(), key=lambda x: x[1].fitness, reverse=True) bestIndividual = pop[0] worstIndividual = pop[-1] BestSolution = [] print bestIndividual[1].fitness # 遗传操作 for it in range(0, MaxIt): pop_c = {} # 交叉种群 for j in range(0, nc):
populationLimit = 100 population = [] population = randomLists.randomLists(populationLimit,cityCount) for i in range(runs): j = i + 1 print "Run#: ", j print bestVal newGeneration=[] for j in range(populationLimit): fitnessVal = fitnessFunction.fitnessFunction(population[j],city) if fitnessVal < bestVal: bestVal = fitnessVal bestAns = population[j] for k in range(populationLimit): for l in range((k+1), populationLimit): # child = population[k] child = crossover.crossover(population[k],population[l],city) newGeneration.append(child) for member in newGeneration: member = mutation.mutate(member) for m in range(populationLimit): newGeneration.append(population[m])
f = open('./ALL_tsp/a280.opt.tour') line = f.readline() while ((not(line is '')) and (line.find('TOUR_SECTION'))<0): line=f.readline() line=f.readline() r=0 L=list() L=line.split() print L val = int(L[0]) while(val > 0): city.append(val) line=f.readline() L=line.split() r = r+1 val = int(L[0]) coordinates = [] city = [] readFile(city) print city readInput.readFile(coordinates) print coordinates print "Optimum tour length is: ", fitnessFunction.fitnessFunction(city, coordinates)