STSP.jl
Index
STSP.AbstractEdge
STSP.AbstractGraph
STSP.AbstractNode
STSP.AbstractQueue
STSP.Abstractnode_pointer
STSP.Abstractnode_priority
STSP.Abstractweighted_node
STSP.Edge
STSP.Graph
STSP.Node
STSP.node_Queue
STSP.node_pointer
STSP.node_priority
STSP.node_priority
STSP.weighted_node
STSP.weighted_node
Base.:==
Base.isless
Base.length
Base.popfirst!
Base.push!
Base.show
Base.show
Base.show
Base.show
STSP.Edges
STSP.Name
STSP.Nodes
STSP.add_edge!
STSP.add_node!
STSP.calculate_cost!
STSP.copy
STSP.data
STSP.data
STSP.degrees
STSP.finetuning_epsilon_hk
STSP.finetuning_start_epsilon_hk
STSP.finetuning_start_hk
STSP.finetuning_start_rsl
STSP.fix_tree
STSP.hk!
STSP.is_empty
STSP.link!
STSP.n_nodes_to_read
STSP.name
STSP.name
STSP.nb_edges
STSP.nb_nodes
STSP.node1
STSP.node2
STSP.one_tree
STSP.parcours_preordre!
STSP.parent!
STSP.plot_graph
STSP.plot_graph
STSP.prim
STSP.priority!
STSP.priority!
STSP.read_header
STSP.read_nodes
STSP.read_stsp
STSP.rsl
STSP.unite!
STSP.weigth_update!
STSP.AbstractEdge
— TypeType abstrait dont d'autres types d'arêtes dériveront.
STSP.AbstractGraph
— TypeType abstrait dont d'autres types de graphes dériveront.
STSP.AbstractNode
— TypeType abstrait dont d'autres types de noeuds dériveront.
STSP.AbstractQueue
— TypeType abstrait de Queue
STSP.Abstractnode_pointer
— TypeType abstrait d'un composant connexe: noeud enfant pointant vers le noeud parent .
STSP.Abstractnode_priority
— TypeType abstrait d'un node_priority.
STSP.Abstractweighted_node
— TypeType abstrait d'un weighted_node.
STSP.Edge
— TypeType représentant les aretes d'un graphe.
Exemple:
noeud1 = Node("James", 12)
noeud2= Node("Kirk",14)
edge=Edge("(noeud1, noeud2)",12,noeud1,noeud2)
STSP.Graph
— TypeType representant un graphe comme un ensemble de noeuds.
Exemple :
n1 = Node("Joe", 3.14)
n2 = Node("Steve", exp(1))
n3 = Node("Jill", 4.12)
e1=Edge("1,2",10,n1,n2)
e2=Edge("1,3",100,n1,n2)
G = Graph("Test", [n1, n2, n3],[e1,e2])
show(G)
Attention, tous les noeuds doivent avoir des données de même type.
STSP.Node
— TypeType représentant les noeuds d'un graphe.
Exemple:
noeud = Node("James", [π, exp(1)])
noeud = Node("Kirk", "guitar")
noeud = Node("Lars", 2)
STSP.node_Queue
— TypeType représentant une file de priorité avec des éléments node_priority de type T.
STSP.node_pointer
— MethodConstructeur d'une composante connexe à partir d'un noeud
STSP.node_priority
— TypeType node_priority contentant 4 attributs : son nom (de type String), le noeud en lui-même (de type Node{T}), son parent (qui est soit de type Node{T}, soit Nothing), et sa priorité (qui est un nombre).
STSP.node_priority
— Methodnode_priority(node::Node{T}) where T
Constructeur du type node_priority. On va initialiser le parent à nothing et la priorité à Inf
Arguments
node::Node{T}
: le noeud sur lequel on se base pour construire l'élément.
STSP.weighted_node
— TypeType weighted_node contentant 4 attributs : son nom (de type String), le noeud en lui-même (de type Node{T}) et son poids (qui est un nombre).
STSP.weighted_node
— Methodweighted_node(node::Node{T}) where T
Constructeur du type node_priority. On va initialiser le poids à zero
Arguments
node::Node{T}
: le noeud sur lequel on se base pour construire l'élément.
Base.:==
— Method==(p::node_priority, q::node_priority)
Définition d'une relation d'égalité entre éléments de type node_priority
Base.isless
— Methodisless(p::node_priority, q::node_priority)
Définition d'une relation d'ordre entre éléments de type node_priority
Base.length
— MethodDonne le nombre d'éléments sur la file.
Base.popfirst!
— Methodpopfirst!(q::AbstractQueue{T}) where T
Retire et renvoie l'élément de plus basse priorité
Arguments
q::AbstractQueue{T}
: file de priorité considérée
Base.push!
— Methodpush!(q::AbstractQueue{T}, item::node_priority{T}) where T
Ajoute l'élément item à la file de priorité q
Arguments
q::AbstractQueue{T}
: file de priorité considéréeitem::node_priority{T}
: élément à ajouter à la file
Base.show
— MethodAffiche un graphe
Base.show
— MethodAffiche un arete.
Base.show
— MethodAffiche un noeud.
Base.show
— Methodshow(q::AbstractQueue{T}) where T
Affiche une file de priorité.
Arguments
q::AbstractQueue{T}
: file de priorité considérée
STSP.Edges
— MethodRenvoie la liste des arêtes du graphe.
STSP.Name
— MethodRenvoie le nom du graphe.
STSP.Nodes
— MethodRenvoie la liste des noeuds du graphe.
STSP.add_edge!
— MethodAjoute un arrete au graphe.
STSP.add_node!
— MethodAjoute un noeud au graphe.
STSP.calculate_cost!
— MethodCalculate la valeur réel du cout de la tournée retourner par un algorithme, spécifiquement pour hk, puisque le cout de l'arbre de l'arbre 1-tree change au fil des itérations.
STSP.copy
— MethodCopie d'une graphe
STSP.data
— MethodRenvoie les données contenues dans l'arête.
STSP.data
— MethodRenvoie les données contenues dans le noeud.
STSP.degrees
— Methodcalcul de degrees de chaque noeud et le sous gradient
STSP.finetuning_epsilon_hk
— MethodLa fonction finetuningepsilonhk permet de déterminer le meilleur critère d'arret dans list_epsilon pour trouver la tournée minimale pour hk!, tout en gardant les autres paramètres fixes.
STSP.finetuning_start_epsilon_hk
— MethodLa fonction finetuningstartepsilon_hk permet de déterminer la tournée minimale pour hk! en focntion du noeud de départ et du critère d'arret, tout en gardant les autres paramètres fixes.
STSP.finetuning_start_hk
— MethodLa fonction finetuningstarthk permet de déterminer le point de départ optimal pour trouver la tournée minimale pour hk!, tout en gardant les autres paramètres fixes. #args: filename
: Pour création du graphe epsilon
: critère d'arret pour l'algorithme hk #returns: Tournée
: La tournée minimale étant donnée le meilleur point de départ cost
: Le cout de la tournée Id
: L'indice du meilleur noeud de départ
STSP.finetuning_start_rsl
— Methodfinetuning_start_rsl(filename::String)
La fonction finetuningstartrsl permet de déterminer le point de départ optimal pour trouver la tournée minimale pour rsl. #args: filename
: Pour création du graphe #returns: Tournée
: La tournée minimale étant donnée le meilleur point de départ cost
: Le cout de la tournée Id
: L'indice du meilleur noeud de départ
STSP.fix_tree
— MethodCréation de la tournée minimale en utilsant un parcours en préordre
STSP.hk!
— MethodL'algorithme hk pour calculer une tournée optimale. args:
graph : Le graphe où l'on veut chercher la tournée optimale
idx : L'indice du noeud de départ
epsilon : Critère d'arret
STSP.is_empty
— MethodIndique si la file est vide.
STSP.link!
— Methodliaison de deux composantes connexes dans un ensemble de composantes connexes
STSP.n_nodes_to_read
— MethodFonction auxiliaire de read_edges, qui détermine le nombre de noeud à lire en fonction de la structure du graphe.
STSP.name
— MethodRenvoie le nom de l'arêtes.
STSP.name
— MethodRenvoie le nom du noeud.
STSP.nb_edges
— MethodRenvoie le nombre de arête du graphe.
STSP.nb_nodes
— MethodRenvoie le nombre de noeuds du graphe.
STSP.node1
— MethodRenvoie le noeud1 de l'arêtes.
STSP.node2
— MethodRenvoie le noeud2 de l'arêtes.
STSP.one_tree
— MethodCréation de 1-arbre pour l'algorithme hk!
STSP.parcours_preordre!
— MethodParcours en préordre d'une arbre (Parcour dans l'ordre de visite comme Prim)
STSP.parent!
— Methodparent!(p::node_priority,parent::Node)
Mise à jour du parent d'un élément de type node_priority
Arguments
p::node_priority
: élément de type node_priority dont on va vouloir modifier le parentparent::Node
: noeud qui sera le nouveau parent de la node_priority.
STSP.plot_graph
— MethodAffiche un graphe étant données un ensemble de noeuds et d'arêtes.
Exemple :
graph_nodes, graph_edges = read_stsp("bayg29.tsp")
plot_graph(graph_nodes, graph_edges)
savefig("bayg29.pdf")
STSP.plot_graph
— MethodFonction de commodité qui lit un fichier stsp et trace le graphe.
STSP.prim
— Methodprim(graph::Graph{T,S},start::Node{T}) where {T,S}
Algorithme de Prim, qui renvoie un vecteur d'arêtes représentant un arbre de recouvrement minimal du graph donné en argument, et le poids total de cet arbre de recouvrement minimal.
Arguments
graph::Graph{T,S}
: le graph considéré dont on cherche un arbre de recouvrement minimal.start::Node{T}
: le noeud de start pour la création de l'arbre de recouvrement minimal
STSP.priority!
— Methodpriority!(p::node_priority, priority::Number)
Mise à jour du poids d'un élément de type weighted_node
Arguments
p::weighted_node
: élément de type node_priority dont on va vouloir modifier la prioritépriority::Number
: nouvelle valeur de la priorité
STSP.priority!
— Methodpriority!(p::node_priority, priority::Number)
Mise à jour de la priorité d'un élément de type node_priority
Arguments
p::node_priority
: élément de type node_priority dont on va vouloir modifier la prioritépriority::Number
: nouvelle valeur de la priorité
STSP.read_header
— MethodAnalyse un fichier .tsp et renvoie un dictionnaire avec les données de l'entête.
STSP.read_nodes
— MethodAnalyse un fichier .tsp et renvoie un dictionnaire des noeuds sous la forme {id => [x,y]}. Si les coordonnées ne sont pas données, un dictionnaire vide est renvoyé. Le nombre de noeuds est dans header["DIMENSION"].
STSP.read_stsp
— MethodRenvoie les noeuds et les arêtes du graphe.
STSP.rsl
— MethodL'algorithme rsl pour déterminer une tournée minimale approximative à partie d'un noeud départ choisi
STSP.unite!
— MethodLiaison de deux racines de noeuds données en argument dans un ensemble de composantes connexes
STSP.weigth_update!
— MethodMise à jour des poides des arretes d'un graphe