class Thief
- Thief
- Reference
- Object
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.crConstructors
-
.new(tour : Tour, plan : Plan)
Captura el recorrido y el plan
-
.new(str : String, tp_separator = " ", lmnt_separator = ",")
Crea un objeto a partir de un string con el formato :
-
.new
Genera un recorrido y plan vacíos
Class Method Summary
-
.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
-
.load(file_name : String)
Extrae de un archivo las solución al una instancia del TTP.
-
.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.
-
.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.
-
.tour_kick(thief : Thief, seg_num = 4)
Perturbación para el recorido,
-
.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.
Instance Method Summary
-
#==(other : Thief)
Dos ladrones son iguales si tienen los mismos objetos y el mismo recorrido
-
#clone
Copia profunda del ladrón
-
#edges
Iterators ----------------------------------------------------------------- Regresa un iterador sobre las aristas del recorrido
-
#inspect(io)
Imprime en io información sobre el objeto
-
#items_ids
Regresa un iterador sobre los ids de los objetos seleccionados
-
#plan : Array(Bool)
Selección de objetos
-
#plan=(plan : Array(Bool))
Selección de objetos
-
#plan_str
IO ----------------------------------------------------------------------- Genera una cadena de texto que representa el plan de recolección
-
#reverse!(range : Range(Int32, Int32))
Inversión del segmento del recorrido especificado por el rango
range
-
#to_s(io)
Genera una cadena de texto que representa al objeto
-
#tour : Array(Int32)
Recorrido que realiza el ladrón
-
#tour=(tour : Array(Int32))
Recorrido que realiza el ladrón
-
#tour_str
Genera una cadena de texto que representa el recorrido
Constructor Detail
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
Class Method Detail
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
Extrae de un archivo las solución al una instancia del TTP.
Regresa la solución y el nombre de la instancia que representa.
Calcula la distancia entre dos soluciones en función de la diferencia de objetos seleccionados en cada plan.
Calcula la distancia entre dos solucione en función de la cantidad de aristas compartidas entre los recorridos.
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
Calcula la distancia entre dos soluciones en función del desplazamiento relativo de cada ciudad en el recorrido.
Instance Method Detail
Dos ladrones son iguales si tienen los mismos objetos y el mismo recorrido
Iterators ----------------------------------------------------------------- Regresa un iterador sobre las aristas del recorrido
IO ----------------------------------------------------------------------- Genera una cadena de texto que representa el plan de recolección
Thief.new(_,[true,true,false,true]) #=> "1,1,0,1"
Inversión del segmento del recorrido especificado por el rango range
Genera una cadena de texto que representa al objeto
Thief.new([0,1,2],[true,true]).to_s #=> "1,2,3 1,1"
Genera una cadena de texto que representa el recorrido
Thief.new([0,1,2],_).tour_str #=> "1,2,3"