Exemple #1
0
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
Exemple #4
0
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):
Exemple #5
0
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)