class Thief

Overview

Clase que representa una solución al problema TTP, consiste en un recorrido a realizar y una selección de objetos a tomar en cada ciudad.

Defined in:

ttp-inst/thief.cr

Constructors

Class Method Summary

Instance Method Summary

Constructor Detail

def self.new(tour : Tour, plan : Plan) #

Captura el recorrido y el plan


[View source]
def self.new(str : String, tp_separator = " ", lmnt_separator = ",") #

Crea un objeto a partir de un string con el formato :

Primero las n ciudades del recorrido separadas por lmnt_separator , después se separa el recorrido del plan mediante tp_separator y finalmente el plan de recolección indicando '1' si se recoge el i-ésimo objeto o con '0' si se ignora, cada objeto separado por lmnt_separator

Ejemplo :

             plan 
         -----------
"1,2,3,4 1,1,0" #=> @Thief<xx> @tour: [0,1,2,3] @plan[true,true,false]
 -------
 Recorrido 

[View source]
def self.new #

Genera un recorrido y plan vacíos


[View source]

Class Method Detail

def self.distance(a_thief : Thief, b_thief : Thief) #

Calcula la distancia entre dos soluciones, en función de la cantidad de aristas compartidas entre los recorridos y la cantidad de objetos en común en los planes de recolección

Regresa {Int32,Int32} la diferencia del recorrido y plan respectivamente


[View source]
def self.load(file_name : String) #

Extrae de un archivo las solución al una instancia del TTP.

Regresa la solución y el nombre de la instancia que representa.


[View source]
def self.plan_bit_dist(a_thief : Thief, b_thief : Thief) #

Calcula la distancia entre dos soluciones en función de la diferencia de objetos seleccionados en cada plan.


[View source]
def self.tour_edge_dist(a_thief : Thief, b_thief : Thief) #

Calcula la distancia entre dos solucione en función de la cantidad de aristas compartidas entre los recorridos.


[View source]
def self.tour_kick(thief : Thief, seg_num = 4) #

Perturbación para el recorido,

            s1                                   s1
        a   🡺   b                           a   🡺   b
      /            \                       /            \
    h                c       4-swap      d                g
s4 🡹                 🡻 s2     ⟹       s2 🡹                 🡻 s4
    g                d                   c                h
      \            /                       \             /
        f   🡸   e                            f   🡸   e
            s3                                   s3

   [a..b, c..d, e..f, g..h]            [a..b, g..h, e..f, c..d]
     s1    s2    s3    s4                s1    s4    s3    s2

[View source]
def self.tour_pos_dist(a_thief : Thief, b_thief : Thief) #

Calcula la distancia entre dos soluciones en función del desplazamiento relativo de cada ciudad en el recorrido.


[View source]

Instance Method Detail

def ==(other : Thief) #

Dos ladrones son iguales si tienen los mismos objetos y el mismo recorrido


[View source]
def clone #

Copia profunda del ladrón


[View source]
def edges #

Iterators ----------------------------------------------------------------- Regresa un iterador sobre las aristas del recorrido


[View source]
def inspect(io) #

Imprime en io información sobre el objeto


[View source]
def items_ids #

Regresa un iterador sobre los ids de los objetos seleccionados


[View source]
def plan : Array(Bool) #

Selección de objetos


[View source]
def plan=(plan : Array(Bool)) #

Selección de objetos


[View source]
def plan_str #

IO ----------------------------------------------------------------------- Genera una cadena de texto que representa el plan de recolección

Thief.new(_,[true,true,false,true]) #=> "1,1,0,1" 

[View source]
def reverse!(range : Range(Int32, Int32)) #

Inversión del segmento del recorrido especificado por el rango range


[View source]
def to_s(io) #

Genera una cadena de texto que representa al objeto

Thief.new([0,1,2],[true,true]).to_s #=> "1,2,3 1,1"

[View source]
def tour : Array(Int32) #

Recorrido que realiza el ladrón


[View source]
def tour=(tour : Array(Int32)) #

Recorrido que realiza el ladrón


[View source]
def tour_str #

Genera una cadena de texto que representa el recorrido

Thief.new([0,1,2],_).tour_str #=> "1,2,3"

[View source]