Exemple #1
0
def best_permutation(spectrogram, norm=1):
    similarities = get_relative_similarities(spectrogram, norm)
    TSPpb = TSP.TSP(points=spectrogram, distances=-similarities)
    solution, _ = TSP_MIP_solving.solveIterativeSubtourEliminationGurobi(TSPpb)
    permutation = []
    #for i in range(len(solution)) :
    #print(solution[i])
    for j in range(len(solution[0])):
        if solution[0][j] == 1:
            permutation.append(j)
            break
    while len(permutation) < len(solution):
        #print(permutation)
        i = permutation[-1]
        for j in range(len(solution[i])):
            if solution[i][j] == 1:
                permutation.append(j)
                break
    best_starting_point = permutation[0]
    worst_similarity = similarities[permutation[-1]][permutation[0]]
    for i in range(len(permutation) - 1):
        if similarities[permutation[i]][permutation[i + 1]] < worst_similarity:
            best_starting_point = i + 1
            worst_similarity = similarities[permutation[i]][permutation[i + 1]]
    permutation = permutation[
        best_starting_point:] + permutation[:best_starting_point]
    return permutation
Exemple #2
0
    def __calculate_fitness(self, route_class, generation):
        individual_number = route_class.number
        route = route_class.route
        t = tsp.TSP(route, individual_number, generation)
        result = t.cal_total_distanse()

        return result
def main():
    filePath = os.path.join(os.getcwd(), "hard.txt")
    data = Datas.fileData(filePath)

    popSize = 100
    generations = 500
    tsp = TSP.TSP(data, popSize)
    tsp.createPop()

    globalC = None
    localC = None

    generatonCount = 1
    while generatonCount < generations:
        generatonCount += 1
        tsp.newGeneration()

        localC = tsp.best()

        if globalC is None:
            globalC = localC
        elif globalC.fitness > localC.fitness:
            globalC = localC

        print("<------------------->")
        print(generatonCount)
        print(globalC.fitness)
        print(localC.fitness)
    Datas.save(globalC)
Exemple #4
0
def findShortestPath(markers, robotID):
    tsp = TSP()
    # <-- Write a function for calculating the shortest path using the TSP library.
    # Use the robotID given to the function to determine which point is the start
    # of the path

    return path
Exemple #5
0
def generate_path(cluster, algorithm='greedy', it=100, lifeCount=20):
    t = TSP()
    t.cluster = cluster
    t.it = it
    t.lifeCount = lifeCount
    path, diss = t.cal_cluster_path(algorithm=algorithm)
    path_position = []
    for i in range(len(cluster)):
        path_position.append(cluster[path[i]])
    return path, path_position, diss
Exemple #6
0
 def __init__(self, gamma=0.99):
     super(TSPSolver_SA, self).__init__()
     self.tsp = TSP.TSP()
     self.cur_state = None  # state = [1,3,5,2,4], that is the traveling node order.
     self.cur_score = None
     self.temperature = 1.0
     self.stop_temperature = 0.0001
     self.gamma = gamma
     self.iter_per_temp = 100
     return
def main():
    tsp = TSP.TSP()

    # Creat a list of cities
    cities = [
        City.City("1", "20833.3333", "17100.0000"),
        City.City("2", "20900.0000", "17066.6667"),
        City.City("3", "21300.0000", "13016.6667")
    ]

    tsp.plot_cities(cities)

    pdb.set_trace()
Exemple #8
0
def main():
    print("hello home")

    tsp = TSP(0)
    tsp.readFromFile()
    globalBest = 5000
    globalAvg = 0
    N = 10
    M = 50
    for i in range(10):
        best, avg = tsp.run(N, M)
        if (best < globalBest):
            globalBest = best
        globalAvg = globalAvg + avg

    print("results: ", globalBest, " ", globalAvg / 10)
Exemple #9
0
def main():

    '''
        Definicao inicial de um vetor de heuristicas
        Definicao das matrizes [vizinhos] [distancia]--> uma para cada cidade
        Definicao de um vetor com os nomes das cidades
    '''
    cityNames,heuristicValues,cityANeighbors,cityBNeighbors,cityCNeighbors= configureValues()

    cityArray=[]
    counter=0

    for i in range(4):
        counter=0
        city= None
        if i == 0:
            city=createCity(cityNames[i],cityANeighbors,heuristicValues[i])
        elif i==1:
            city=createCity(cityNames[i], cityBNeighbors, heuristicValues[i])
        elif i==2:
            city=createCity(cityNames[i], cityCNeighbors, heuristicValues[i])
        elif i==3:
            city=createCity(cityNames[i], [], heuristicValues[i])
        else:
            counter=1

        if counter==0:
            cityArray.append(city)

    for i in range(4):
        print(cityArray[i])

    '''
    Criacao do meu objeto TSP--> representante do problema em questao, agregando as cidades existentes 
    '''

    problema=TSP.TSP(cityArray)

    '''
    Implementacao do método do Trepa Colinas
    '''
    hillClimb=HillClimbing.HillClimbing(problema)

    bestCost,percurso=hillClimb.hillClimbing('A')

    print(bestCost,percurso)
Exemple #10
0
def main():
    parser = argparse.ArgumentParser(description="run a genetic algorithm to solve the travelling salesman problem")
    req = parser.add_argument_group("required arguments")
    req.add_argument("-i", "--input_file", help="the input .tsp file", required=True)
    parser.add_argument("-o", "--output_file", help="optional output file for the bests and averages", default=None)
    parser.add_argument("-mx", "--max_gen", help="the maximum number of generations to run for (default=1000)",
                        type=int, default=1000)
    parser.add_argument("-ps", "--pop_size", help="the population size (default=50)", default=50, type=int)
    parser.add_argument("-cr", "--cross_rate", help="the crossover rate (default=1.0)", type=float, default=1.0)
    parser.add_argument("-mr", "--mut_rate", help="the mutation rate (default=0.1)", type=float, default=0.1)
    parser.add_argument("-cm", "--cross_mode", help="the mode of crossover, 0 for uox, 1 for pmx  (default=0)",
                        choices=[0, 1], type=int, default=0)
    args = parser.parse_args()

    try:
        fh = GraphHandler(args.input_file)
    except IOError as err:
        print(err)
        sys.exit(0)

    tsp = TSP(fh, args.output_file, args.max_gen, args.pop_size, args.cross_rate, args.mut_rate, args.cross_mode)
    tsp.genetic_algorithm()
Exemple #11
0
import TSP
from Algorithms import SwitchTwo, EHBSA, EDA_2OPT_LS
import visualization
import time

# Start timer
# startTime = time.time()

# Get TSP instance
TSPInstance = TSP.TSP()
TSPInstance = TSPInstance.loadProblem("TSP_instances/ulysses22.txt")

# Optmize using EHBSA
# bestSolution, bestDistance = EDA_2OPT_LS.optimize(TSPInstance, 1000, 6, startTime)
# print("Best solution:",bestSolution)
# print("Best distance:",bestDistance)

# # End timer

# endTime = time.time()
# print("Total time:",(time.time()-startTime)//60,":",(time.time()-startTime)%60)

# # Visualize
# visualization.visualize(TSPInstance,bestSolution,bestDistance)
# opt_sol = [x-1 for x in [1,14,13,12,7,6,15,5,11,9,10,19,20,21,16,3,2,17,22,4,18,8]]
# print(opt_sol)
# opt_dist = TSPInstance.tourLength(opt_sol)
# visualization.visualize(TSPInstance,opt_sol,opt_dist)

# # Plot time taken to find best solution as function of number of individuals in population
import matplotlib.pyplot as plt
Exemple #12
0
# -*- coding: utf-8 -*-
import node
import MultiTaskingGA as mul
import sys
sys.path.append(
    'C:\\Users\\Laptop NamPhong\\python file\\laboratory\\situation2_wrsn_mfea\\task'
)
import Situation2 as sit
import TSP as tsp

set_of_city = []
f = open("data.txt")
for i in range(21):
    b = f.readline()
    b = list(b.split("\n"))
    c = [float(i) for i in list(b[0].split(" "))]
    city = node.Node(c[0], c[1], c[2], c[3], c[4])
    set_of_city.append(city)

task1 = sit.Situation2(21)
task2 = tsp.TSP(20, set_of_city)
tasks = []
tasks.append(task1)
tasks.append(task2)

mfea = mul.MultiTasking(tasks, 100, 0.5, 50)
mfea.run(100, set_of_city)
Exemple #13
0
import numpy as np
import random
from TSP import *
from Solution import *


if __name__ == '__main__':
    tsp = TSP(10,1,20)
    print(tsp.getCouts())
    sol = tsp.glouton1()
    print(sol.getChemin())
    print(sol.getFct())
    
    
    
Exemple #14
0
 def __init__(self, newGene):
     self.tsp = TSP.TSP("tsp.csv")
     self.gene = newGene
     self.cost = self.calculateCost(newGene)
Exemple #15
0
import sys
import os
sys.path.append(os.path.pardir)
sys.path.append(os.path.join(os.path.pardir, 'Instances'))
import TSP as TSP
from Neighborhood import Neighborhoods, varClusterFromMPS
from VMNDproc import solver
from Cuts import Cut
from ConComp import getSubsets

##### The loading of the model and creation of the mps file #####

# The instance is loaded from the MPS File
nodes = 60

tspInst = TSP.TSP(nodes)

# The model is created and written as a mps file in the folder MIPLIB
tspInst.exportMPS()
"""
The variables are set as x_i_j with i < j, for this is an
undirected formulation of TSP.
"""

# We save the path of the mps file
pathTSPInst = tspInst.pathMPS

# We shall see ..\MIPLIB\randomTSP60nodes.mps
#print(pathTSP)

##### The creation of the Neighborhoods #####
Exemple #16
0
 Route_list = [[i for i in range(20)] for j in range(N)]
 random.shuffle(Route_list)
 for l in Route_list: random.shuffle(l)# シャッフル
 # 初期RouteのN個を基に集団生成
 population = [Person(Route) for Route in Route_list]# 初期の集団作成
 
 fitness_list = []# min適応度リスト for figure
 min_fitness = 10000# 適応度が最も良いもの
 fig_num = 0#図の数,名前用
 for num_gen in range(max_generation):
     print('generation {}'.format(num_gen))
     person_num = 0
     #個体ごとに適応度計算
     for person in population:
         if person_num % 6 == 0:
             fitness = TSP.TSP(person.Route, True, num_gen, person_num, fig_num, 'graph')
         else:
             fitness = TSP.TSP(person.Route, False, num_gen, person_num, fig_num, 'graph')
         
         person.fitness = fitness
         if min_fitness > fitness:
             min_fitness = fitness
             min_Route = person.Route
             min_num_gen = num_gen
             min_person_num = person_num
         if person_num % 6 == 0:
             # fitness = TSP.TSP(person.Route, True, min_num_gen, person_num, fig_num)
             TSP.TSP(min_Route, True, min_num_gen, min_person_num, fig_num, 'graph_best')
             fig_num += 1
         person_num += 1
     
Exemple #17
0
                f"--Result--\nFitness\nAverage: {ave_fitness}\nMinimum: {min_fitness}"
            )

            # 次のpopulationを作る
            # 選択
            new_route_list = []
            for i in range(self.N):
                new_route_list.append(self.__selection())

            self.__set_route(new_route_list)  # 新しいRouteオブジェクト生成
            self.__crossover()  # 巡回路の交叉
            self.__mutation()  # 突然変異

            print()

        return route_class_min_fitness.route


if __name__ == '__main__':
    n_node = 20  # ノードの数
    population_size = 35
    max_generation = 5000
    GA = GeneticAlgorithm(n_node, population_size, max_generation)
    best_route = GA.run_evolve()

    # 最終結果 表示
    print(best_route)
    t = tsp.TSP(best_route, 0, 0)
    print(t.cal_total_distanse())
    t.plot_route()
Exemple #18
0
import numpy as np
import random
from TSP import *
from Solution import *
import time

if __name__ == '__main__':
    tsp = TSP(280, 1, 100)
    # print(tsp.getCouts())

    # print("*******glouton**********")
    # start_time10 = time.time()
    # sol = tsp.glouton1(2)
    # # print(sol.getChemin())
    # print(sol.getFct())
    # print("glouton : " + str(time.time() - start_time10))
    # print("*******descente*********")
    # start_time11 = time.time()
    # desc = tsp.descente(2)
    # # print(desc.getChemin())
    # print(desc.getFct())
    # print("descente : " + str(time.time() - start_time11))
    # print("******recuit************")
    # start_time13 = time.time()
    # rec = tsp.recuit(2)
    # # print(rec.getChemin())
    # print(rec.getFct())
    # print("recuit : " + str(time.time() - start_time13))
    # print("*******tabouOPT*******")
    # start_time1 = time.time()
    # tabOPT = tsp.optimizedTabou(2,2)
Exemple #19
0
import numpy as np
import random
from TSP import *
from Solution import *

if __name__ == '__main__':
    tsp = TSP(10, 1, 100)
    # print(tsp.getCouts())
    print()
    print("*******glouton**********")
    print()
    sol = tsp.glouton1(2)
    print(sol.getChemin())
    print(sol.getFct())
    print()
    print("*******descente*********")
    print()
    desc = tsp.descente(2)
    print(desc.getChemin())
    print(desc.getFct())
    print()
    print("******recuit************")
    print()
    rec = tsp.recuitSimule(2, 1000)
    print(rec.getChemin())
    print(rec.getFct())
    print()
    print("**********************")
    print(tsp.getCouts())
Exemple #20
0
import csv
import time
from TSP import *

num_of_points = 10
MaxIterations = 100
C = 1e-2
M = 10

list_of_coords = [[4, 0], [2, 2], [5, 3], [5, 6], [1, 6], [4, 9], [9, 5]]

problem_ = TSP(list_of_coords, num_of_points, MaxIterations, C, M)
min_d, fun_evals, probs, dists = problem_.best_tour_SA()