Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

58
Un Algoritmo de Búsqueda Tabú para Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de el Problema de la Paginación de Avisos Clasificados Avisos Clasificados Federico Abramzón Federico Abramzón Martín Maceratesi Martín Maceratesi Oscar Quevedo Oscar Quevedo Irene Loiseau Irene Loiseau XII CLAIO XII CLAIO La Habana, Cuba, octubre 2004 La Habana, Cuba, octubre 2004

description

Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados. Federico Abramzón Martín Maceratesi Oscar Quevedo Irene Loiseau XII CLAIO La Habana, Cuba, octubre 2004. Hoja de Ruta. Objetivos del trabajo Descripción del Problema Marco Teórico - PowerPoint PPT Presentation

Transcript of Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Page 1: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Un Algoritmo de Búsqueda Tabú para Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos el Problema de la Paginación de Avisos

ClasificadosClasificados

Federico AbramzónFederico Abramzón

Martín MaceratesiMartín Maceratesi

Oscar Quevedo Oscar Quevedo

Irene LoiseauIrene Loiseau

XII CLAIOXII CLAIO

La Habana, Cuba, octubre 2004La Habana, Cuba, octubre 2004

Page 2: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Hoja de RutaHoja de Ruta

Objetivos del trabajoObjetivos del trabajo Descripción del ProblemaDescripción del Problema Marco TeóricoMarco Teórico Representación propuestaRepresentación propuesta ImplementaciónImplementación ResultadosResultados ConclusionesConclusiones

Page 3: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

ObjetivosObjetivos

Resolver el Problema de la Paginación de Resolver el Problema de la Paginación de Avisos Clasificados (PPAC)Avisos Clasificados (PPAC)

Relevamiento del Estado del ArteRelevamiento del Estado del Arte Utilización de métodos de Búsqueda Utilización de métodos de Búsqueda

HeurísticaHeurística Aplicación de Técnicas de Mejoramiento Aplicación de Técnicas de Mejoramiento

(Búsqueda Tabú)(Búsqueda Tabú) Implementación de un prototipoImplementación de un prototipo

Page 4: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Descripción del Problema PPACDescripción del Problema PPAC

Encontrar una manera adecuada de disponer los Encontrar una manera adecuada de disponer los avisos clasificados en las páginas de una avisos clasificados en las páginas de una publicación, de acuerdo a una serie de criterios publicación, de acuerdo a una serie de criterios gráficosgráficos CompactaciónCompactación ArmoníaArmonía

Aplicaciones prácticasAplicaciones prácticas Páginas Amarillas (PA)Páginas Amarillas (PA) Rubros Clasificados de un diarioRubros Clasificados de un diario

Page 5: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Ventajas de disponer de este tipo Ventajas de disponer de este tipo de herramientade herramienta

Automatizar el proceso de compaginaciónAutomatizar el proceso de compaginación Minimizar costos de producción (tiempo + Minimizar costos de producción (tiempo +

recursos) recursos) > Beneficio Económico > Beneficio Económico Prolongar el “Cierre de Edición”Prolongar el “Cierre de Edición” Incluir mayor cantidad de avisos en la Incluir mayor cantidad de avisos en la

publicaciónpublicación

Page 6: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Elementos de una Publicación de este tipoElementos de una Publicación de este tipo

Secciones o Secciones o RubrosRubros

EncabezadosEncabezados Avisos DestacadosAvisos Destacados Avisos LinealesAvisos Lineales

(caso part: Anclas)(caso part: Anclas)

Avisos de RellenoAvisos de Relleno FillersFillers BurbujasBurbujasAvisos

Destacados

Encabezados de Sección

Anclas

Avisos Lineales

Avisos deRelleno

Page 7: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Definiciones y criterios generales de diseñoDefiniciones y criterios generales de diseño

PáginaPágina Grilla (o Matriz) subdividida en filas y columnas. Grilla (o Matriz) subdividida en filas y columnas. Intersección fila y columna Intersección fila y columna módulo. módulo. Cada aviso pertenece a un tipo determinado: Cada aviso pertenece a un tipo determinado: Destacado,Destacado, LinealLineal, , EncabezadoEncabezado o o Relleno.Relleno. Avisos DestacadosAvisos Destacados y y LinealesLineales pertenecen a una determinada pertenecen a una determinada Sección.Sección. Avisos LinealesAvisos Lineales y y Encabezados de SecciónEncabezados de Sección::

Ancho: 1 columnaAncho: 1 columna Alto: número prefijado de módulos (1 o +)Alto: número prefijado de módulos (1 o +)

Avisos DestacadosAvisos Destacados diferentes Formatos: diferentes Formatos: Ancho: [1, máx(cols pág)]Ancho: [1, máx(cols pág)] Alto: número prefijado de módulos (según formato aviso)Alto: número prefijado de módulos (según formato aviso)

Los avisos de una Los avisos de una SecciónSección dada: “bajo el alcance del dada: “bajo el alcance del Encabezado de SecciónEncabezado de Sección” ” correspondiente (en la página de inicio o fin de correspondiente (en la página de inicio o fin de SecciónSección, o en una página entre ellas)., o en una página entre ellas).

Preferentemente, los avisos no deberían mezclarse con los pertenecientes a otras Preferentemente, los avisos no deberían mezclarse con los pertenecientes a otras SeccionesSecciones..

Los Los Avisos LinealesAvisos Lineales: en general, ubicados en un determinado orden (alfabético).: en general, ubicados en un determinado orden (alfabético). Los Los Avisos DestacadosAvisos Destacados: ubicados lo más cerca posible del borde inferior de la página, y del : ubicados lo más cerca posible del borde inferior de la página, y del

comienzo de comienzo de SecciónSección.. No se permite ubicar un No se permite ubicar un Encabezado de SecciónEncabezado de Sección, si no existe al menos un , si no existe al menos un Aviso LinealAviso Lineal

asociado debajo suyo.asociado debajo suyo. En cada En cada páginapágina, los , los Avisos LinealesAvisos Lineales deben ubicarse por encima de los deben ubicarse por encima de los Avisos DestacadosAvisos Destacados..

Page 8: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Otros detalles a considerarOtros detalles a considerar

Estilo de LayoutEstilo de Layout Agrupación de Agrupación de Avisos Avisos

DestacadosDestacados Piramidal (“apilar”)Piramidal (“apilar”) Bloques horizontales Bloques horizontales

(“acostar”)(“acostar”) En forma de “U”En forma de “U”

Page 9: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

PPAC: Datos de Entrada / SalidaPPAC: Datos de Entrada / Salida

Entrada:Entrada: Avisos DestacadosAvisos Destacados: Identif., Dimensiones, : Identif., Dimensiones, SecciónSección [y [y

Pág y/o Posic]Pág y/o Posic] Avisos LinealesAvisos Lineales: Identif., Cant. de módulos (o filas) y : Identif., Cant. de módulos (o filas) y

SecciónSección Espacio Reservado (Fillers “Fijos”)Espacio Reservado (Fillers “Fijos”): Identif., : Identif.,

Dimensiones [y Pág y/o Posic]Dimensiones [y Pág y/o Posic]

Salida:Salida: Especificación precisa: Pág y Posic de cada avisoEspecificación precisa: Pág y Posic de cada aviso

Page 10: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Objetivos del método de Objetivos del método de paginaciónpaginación

Minimización de la superficie cubierta por Minimización de la superficie cubierta por Avisos de Relleno (FillersAvisos de Relleno (Fillers y y Burbujas)Burbujas) Forma de publicidad Forma de publicidad Cota inferior Cota inferior

Minimización de la cantidad de páginasMinimización de la cantidad de páginas Cant. fija de avisos pagos = Minimizar los Cant. fija de avisos pagos = Minimizar los

RellenosRellenos (desperdicio) (desperdicio)

Page 11: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

PPAC: ComplejidadPPAC: Complejidad

Problema de Optimización CombinatoriaProblema de Optimización Combinatoria Combinación de 2 variantes de Bin-packing:Combinación de 2 variantes de Bin-packing:

Ubicación de Ubicación de Avisos DestacadosAvisos Destacados (bi-dimensional) (bi-dimensional) ““Cortes” de Cortes” de Avisos LinealesAvisos Lineales

NP-hardNP-hard Difícil de formular mediante un Modelo Difícil de formular mediante un Modelo

MatemáticoMatemático Entre los posibles enfoques:Entre los posibles enfoques:

Técnicas Branch & CutTécnicas Branch & Cut Técnicas Heurísticas (de tiempo polinomial Técnicas Heurísticas (de tiempo polinomial

determinístico)determinístico)

Page 12: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Trabajos previosTrabajos previos

Publicaciones científicas y académicasPublicaciones científicas y académicas Métodos Basados en ReglasMétodos Basados en Reglas Métodos Basados en RestriccionesMétodos Basados en Restricciones Programación DinámicaProgramación Dinámica Búsqueda HeurísticaBúsqueda Heurística

Relevamiento de productos comercialesRelevamiento de productos comerciales SCS/ClassPag de SCSSCS/ClassPag de SCS VIP de VTTVIP de VTT Calligramme DirectoryCalligramme Directory ADSADSNGNG/PAGE de Amdocs/PAGE de Amdocs

Page 13: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Hoja de RutaHoja de Ruta

ObjetivosObjetivos Descripción del ProblemaDescripción del Problema Marco TeóricoMarco Teórico Representación propuestaRepresentación propuesta ImplementaciónImplementación ResultadosResultados ConclusionesConclusiones

Page 14: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

HeurísticaHeurística

Toma en cuenta el conocimiento adquirido en experiencias pasadas (tanto positivas como

negativas). Cada persona “filtra” esta información y define un patrón de comportamiento.

Page 15: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

VecindarioVecindario

Dado S, un conjunto de Soluciones Factibles, se define como Vecindario de S al conjunto N(S), tal que todas las soluciones de N(S) puedan ser obtenidas a partir de aplicar una función de Movimiento válida a S, según la Heurística subyacente.

s

C

A

B

D E

F......

Opt

Page 16: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Búsqueda DescendenteBúsqueda Descendente

Comienza con alguna solución inicial y se mueve (función movimiento) de vecino en vecino, tanto como le sea posible, mientras disminuya el valor de la función objetivo.

Page 17: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

MetaheurísticasMetaheurísticas

Objetivos escapar de óptimos locales movimientos de

no mejora explorar la estructura básica del problema adaptarse a implementaciones particulares

Las más promisorias... Búsqueda Tabú Algoritmos Genéticos Simulated Annealing Grasp

Page 18: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Búsqueda Tabú (BT)Búsqueda Tabú (BT)

N(s) N(s,k) = N(s) - T(s,k)

Estrategia que permite admitir movimientos de No Estrategia que permite admitir movimientos de No Mejora para escapar de óptimos localesMejora para escapar de óptimos locales

Uso de Memoria FlexibleUso de Memoria Flexible Mem. de Corto plazo: evitar ciclosMem. de Corto plazo: evitar ciclos

Qué tan “Reciente” ...Qué tan “Reciente” ... Mem. de Largo plazo: sacar ventaja de la historia de la búsquedaMem. de Largo plazo: sacar ventaja de la historia de la búsqueda

Qué tan “Frecuente” ...Qué tan “Frecuente” ...

S

N(S) T

Page 19: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Elementos principales de un algoritmo Elementos principales de un algoritmo BTBT

Representación de Solución CandidataRepresentación de Solución Candidata Movimiento Movimiento Vecindario Vecindario Lista Tabú - RetenciónLista Tabú - Retención Criterio de ParadaCriterio de Parada Criterio de AspiraciónCriterio de Aspiración Función EvaluaciónFunción Evaluación

Page 20: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

M. Teórico: BT - Algoritmo básicoM. Teórico: BT - Algoritmo básico

1. Elegir una solución inicial i; i*=i; k=0.2. k=k+1; Generar un subconjunto N* de N(i,k), tal que

no cumpla las condiciones tabú, o cumpla el criterio de aspiración.

3. Elegir el mejor j є N* con respecto a f(j), y hacer i=j.4. Si f(j) < f(i*), hacer i*=j.5. Actualizar la lista tabú y condiciones de aspiración.6. Si no se cumplen las condiciones de parada, volver a

(2).

Page 21: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

BT – Más detallesBT – Más detalles

Diversificación: Orientar la búsqueda hacia otras zonasDiversificación: Orientar la búsqueda hacia otras zonas Incrementar la retención de movimientos tabúIncrementar la retención de movimientos tabú Reiniciar el algoritmo con nueva Solución InicialReiniciar el algoritmo con nueva Solución Inicial Utilizar información de frecuenciaUtilizar información de frecuencia

Intensificación: Analizar en profundidad una región Intensificación: Analizar en profundidad una región determinadadeterminada Reducir la retención de movimientos tabú (riesgo de ciclos)Reducir la retención de movimientos tabú (riesgo de ciclos) Reglas de selección contemplando atributos de buenas solucionesReglas de selección contemplando atributos de buenas soluciones

Combinación de estas técnicasCombinación de estas técnicas Variación dinámica de la retenciónVariación dinámica de la retención

Soluciones Elite: “memorizar” buenas soluciones para su Soluciones Elite: “memorizar” buenas soluciones para su posterior análisisposterior análisis

Page 22: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Hoja de RutaHoja de Ruta

ObjetivosObjetivos Descripción del ProblemaDescripción del Problema Marco TeóricoMarco Teórico Representación propuestaRepresentación propuesta ImplementaciónImplementación ResultadosResultados ConclusionesConclusiones

Page 23: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Aplicación de BTAplicación de BT

A la asignación de A la asignación de Avisos DestacadosAvisos Destacados a las a las páginaspáginas

Y adicionalmente ...Y adicionalmente ... Decoding (método determinístico):Decoding (método determinístico):

Ubicación de Ubicación de Avisos DestacadosAvisos Destacados en la página en la página Fluido de Fluido de Avisos LinealesAvisos Lineales por encima de por encima de Avisos Avisos

DestacadosDestacados

Page 24: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Representación: Solución Representación: Solución CandidataCandidata

Se almacena el primer Se almacena el primer Aviso DestacadoAviso Destacado de cada de cada página página Cortes de Página (CP) Cortes de Página (CP)

87653 421

...1110987654321

1 2

3

4

5

6 7

8

9 11

10

12

Page 25: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Shift: mover un Corte de PáginaShift: mover un Corte de Página Shift: mover un Corte de PáginaShift: mover un Corte de Página Shift sin acotar: equivalente a eliminar un CP (join) y ubicarlo Shift sin acotar: equivalente a eliminar un CP (join) y ubicarlo

en otra posición (split)en otra posición (split)

Shift: mover un Corte de PáginaShift: mover un Corte de Página Shift sin acotar: equivalente a eliminar un CP (join) y ubicarlo Shift sin acotar: equivalente a eliminar un CP (join) y ubicarlo

en otra posición (split)en otra posición (split)

Shift: mover un Corte de PáginaShift: mover un Corte de Página Shift sin acotar: equivalente a eliminar un CP (join) y ubicarlo en otra Shift sin acotar: equivalente a eliminar un CP (join) y ubicarlo en otra

posición (split)posición (split) Shift acotado: el CP puede ser movido sólo entre los dos CP Shift acotado: el CP puede ser movido sólo entre los dos CP

adyacentes (causa el efecto de mover adyacentes (causa el efecto de mover destacadosdestacados entre páginas entre páginas adyacentes)adyacentes)

Shift: mover un Corte de PáginaShift: mover un Corte de Página Shift sin acotar: equivalente a eliminar un CP (join) y ubicarlo en otra Shift sin acotar: equivalente a eliminar un CP (join) y ubicarlo en otra

posición (split)posición (split) Shift acotado: el CP puede ser movido sólo entre los dos CP Shift acotado: el CP puede ser movido sólo entre los dos CP

adyacentes (causa el efecto de mover adyacentes (causa el efecto de mover destacadosdestacados entre páginas entre páginas adyacentes)adyacentes)

Movimientos Posibles Movimientos Posibles

......111110109988776655......

44 55 66

Join: eliminar un Corte de PáginaJoin: eliminar un Corte de Página

44 55 66

Join: eliminar un Corte de PáginaJoin: eliminar un Corte de Página

5544

Split: agregar un Corte de PáginaSplit: agregar un Corte de Página

Join: eliminar un Corte de PáginaJoin: eliminar un Corte de Página

5544

Split: agregar un Corte de PáginaSplit: agregar un Corte de Página

Join: eliminar un Corte de PáginaJoin: eliminar un Corte de Página

44 55 66

Page 26: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Movimientos TabúMovimientos Tabú

...1110987654321

1 2 3 4 5 6

Realizado un Movimiento, podemos restringir:Realizado un Movimiento, podemos restringir: Que ese CP no vuelva a la posición de origenQue ese CP no vuelva a la posición de origen

Realizado un Movimiento, podemos restringir:Realizado un Movimiento, podemos restringir: Que ese CP no vuelva a la posición de origenQue ese CP no vuelva a la posición de origen Que ningún CP vuelva desde la posición destinoQue ningún CP vuelva desde la posición destino Que ningún CP ocupe la posición origenQue ningún CP ocupe la posición origen

Realizado un Movimiento, podemos restringir:Realizado un Movimiento, podemos restringir: Que ese CP no vuelva a la posición de origenQue ese CP no vuelva a la posición de origen Que ningún CP vuelva desde la posición destinoQue ningún CP vuelva desde la posición destino

Realizado un Movimiento, podemos restringir:Realizado un Movimiento, podemos restringir:

4

Page 27: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Alternativas analizadas:Alternativas analizadas: Retención fijaRetención fija

Se fija un valor para toda la corrida del Se fija un valor para toda la corrida del algoritmoalgoritmo

Retención variableRetención variable Variación de retención por períodosVariación de retención por períodos Variación de retención por cada inserciónVariación de retención por cada inserción

RetenciónRetención

Page 28: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Criterios de AspiraciónCriterios de Aspiración

Alternativas analizadas: Alternativas analizadas: Movimientos Tabú que superen la calidad Movimientos Tabú que superen la calidad

de la mejor solución encontrada (global)de la mejor solución encontrada (global) Movimientos Tabú mejores que las últimas Movimientos Tabú mejores que las últimas

N soluciones generadas (local)N soluciones generadas (local)

Page 29: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Función EvaluaciónFunción Evaluación

Penalizaciones (relativas y/o absolutas) sobre:Penalizaciones (relativas y/o absolutas) sobre: Overflow (avisos fuera de la página)Overflow (avisos fuera de la página) Avisos fuera de orden (avisos menores en páginas Avisos fuera de orden (avisos menores en páginas

previas a uno mayor)previas a uno mayor) Avisos fuera de sección (aviso previo a su Avisos fuera de sección (aviso previo a su

encabezado de sección)encabezado de sección) Generación de avisos de rellenoGeneración de avisos de relleno Violación de preferencia par/imparViolación de preferencia par/impar Distancia de los avisos al encabezadoDistancia de los avisos al encabezado

Page 30: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Criterio de paradaCriterio de parada

Alternativas analizadas: Alternativas analizadas: Cantidad máxima de iteracionesCantidad máxima de iteraciones Cantidad máxima de movimientos de no Cantidad máxima de movimientos de no

mejoramejora Valor alcanzado por la Función EvaluaciónValor alcanzado por la Función Evaluación

Page 31: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Heurísticas propuestasHeurísticas propuestas

Solución InicialSolución Inicial Heurística ConstructivaHeurística Constructiva Solución no necesariamente factibleSolución no necesariamente factible Estimación de cantidad de páginas por rubroEstimación de cantidad de páginas por rubro Distribución proporcional de destacados y lineales por rubroDistribución proporcional de destacados y lineales por rubro

Movimientos de mejoraMovimientos de mejora Shift acotadoShift acotado

Ubicación de avisos en la páginaUbicación de avisos en la página Decoding: método determinísticoDecoding: método determinístico

Utilización de Ventanas de OptimizaciónUtilización de Ventanas de Optimización Particionamiento del problemaParticionamiento del problema Solapamiento entre ventanasSolapamiento entre ventanas

V1 V2 V3

Page 32: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Resumiendo ...Resumiendo ...

Solución Candidata: Representación de Cortes de Página.Solución Candidata: Representación de Cortes de Página. Ubicación determinística de avisos en la página (Decoding).Ubicación determinística de avisos en la página (Decoding). Movimiento: Shift acotado.Movimiento: Shift acotado. Criterio Tabú: Marcar como tabú la posición original.Criterio Tabú: Marcar como tabú la posición original. Retención: Variable por cada inserción.Retención: Variable por cada inserción. Criterio de Aspiración: cuando un movimiento tabú supere la mejor Criterio de Aspiración: cuando un movimiento tabú supere la mejor

solución encontrada hasta el momento (global).solución encontrada hasta el momento (global). Función Evaluación: Penalizamos el Overflow, Fuera de Sección, Violación Función Evaluación: Penalizamos el Overflow, Fuera de Sección, Violación

preferencia par/impar, generación de Rellenos (Fillers y Burbujas) y preferencia par/impar, generación de Rellenos (Fillers y Burbujas) y Distancia.Distancia.

Criterio de Parada: Cantidad de iteraciones y Umbral de la Función Criterio de Parada: Cantidad de iteraciones y Umbral de la Función Evaluación.Evaluación.

Solución Inicial: Generada por Heurística Constructiva.Solución Inicial: Generada por Heurística Constructiva. Utilización de Ventanas de Optimización.Utilización de Ventanas de Optimización.

Page 33: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Hoja de RutaHoja de Ruta

ObjetivosObjetivos Descripción del ProblemaDescripción del Problema Marco TeóricoMarco Teórico Representación propuestaRepresentación propuesta ImplementaciónImplementación ResultadosResultados ConclusionesConclusiones

Page 34: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Pagination: Arquitectura del Pagination: Arquitectura del prototipoprototipo

Interfase Gráfica

Motor

.PAG

.IN

.INI

MódulosMódulos Interfase Interfase

GráficaGráfica MotorMotor

ArchivosArchivos .PAG.PAG .IN.IN TS.INITS.INI

Page 35: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Pagination: Algoritmo principalPagination: Algoritmo principal

Pagination() Load Parameters Load Sections Load Fixed Fillers While exists data Init Window Load Displads & Lineads (for this Window) Generate InitialSolution (for this Window) BestSolution = TabuSearch(InitialSolution, Window) Save BestSolution EndWhileEnd

Page 36: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Pagination: Algoritmo BT Pagination: Algoritmo BT implementadoimplementado

TabuSearch(IniSol, Window) Declare BestSol, BestLocalSol, ActualSol, TmpSol BestSol=IniSol ActualSol=IniSol BestValue=GetValue(BestSol) CycleCounter=0 While not StopCriteria(BestValue, CycleCounter) BestLocalValue=MAXVALUE For each Mv of Neighborhood(ActualSol) TmpSol=Move(ActualSol, Mv) Decoding(TmpSol, Window) TmpValue=Eval(TmpSol) If not Tabu(Mv, CycleCounter) or AspCriteria(TmpValue, BestValue) If TmpValue < BestLocalValue BestLocalValue=TmpValue BestLocalSol=TmpSol BestLocalMv=Mv EndIf EndIf EndFor If BestLocalValue < BestValue BestValue= BestLocalValue BestSol=BestLocalSol EndIf SetTabu(ActualSol, BestLocalMv, CycleCounter) ActualSol=BestLocalSol CycleCounter=CycleCounter+1 EndWhileReturn BestSol

Page 37: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Pagination: Demo ...Pagination: Demo ...

Visualización de una publicación Reserva de espacio Fijación de Avisos Destacados Repaginación Parametrizaciones

Page 38: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Hoja de RutaHoja de Ruta

ObjetivosObjetivos Descripción del ProblemaDescripción del Problema Marco TeóricoMarco Teórico Representación propuestaRepresentación propuesta ImplementaciónImplementación ResultadosResultados ConclusionesConclusiones

Page 39: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Lotes de PruebaLotes de Prueba

Lotes Destacados % Area Lineales % Area Secciones Páginas

PASF/PACF 126 66,72 2.280 32,15 75 51

RND100 202 47,20 8.341 51,73 100 115

RND1000 1.554 38,70 98.619 60,22 1000 1140

Semi-reales: extracción de Semi-reales: extracción de Las Páginas Amarillas Las Páginas Amarillas (PA)(PA) PASF: sin la fijación de avisos.PASF: sin la fijación de avisos. PACF: con PACF: con Aviso DestacadoAviso Destacado fijado manualmente. fijado manualmente.

Aleatorios: a través de un Generador Random que Aleatorios: a través de un Generador Random que también implementamostambién implementamos RND100RND100 RND1000RND1000

Page 40: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Ajuste de ParámetrosAjuste de Parámetros

Parámetros de la Función Evaluación:Parámetros de la Función Evaluación: OverflowOverflow BurbujasBurbujas FillersFillers Avisos Fuera de SecciónAvisos Fuera de Sección DistanciaDistancia

Parámetros de la Búsqueda Tabú (BT):Parámetros de la Búsqueda Tabú (BT): % Vecinos% Vecinos Retención en Lista TabúRetención en Lista Tabú Cantidad de IteracionesCantidad de Iteraciones

Tamaño de Ventanas de OptimizaciónTamaño de Ventanas de Optimización

Page 41: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Ajuste BT: % VecinosAjuste BT: % Vecinos

0,001,002,003,004,005,006,007,008,009,00

20 40 60 80 100

% Vecinos

Va

lor

po

nd

era

do

PACF

PASF

RND

Comparativa BT – Porcentaje de Vecinos (retención baja)

0,00

1,00

2,00

3,00

4,00

5,00

6,00

7,00

20 40 60 80 100

% Vecinos

Va

lor

po

nd

era

do

PACF

PASF

RND

Comparativa BT – Porcentaje de Vecinos (retención alta)

Page 42: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Ajuste BT: # Iteraciones (PACF)Ajuste BT: # Iteraciones (PACF)

0

20000

40000

60000

80000

100000

120000

140000

160000

180000

1 40 79 118

157

196

235

274

313

352

391

430

469

508

547

586

625

664

703

742

781

820

859

898

937

976

Ciclos

Fu

nci

ón

Eva

luac

ión

Page 43: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Ajuste BT: # Iteraciones (PASF)Ajuste BT: # Iteraciones (PASF)

0

50000

100000

150000

200000

250000

300000

350000

400000

1 40 79 118

157

196

235

274

313

352

391

430

469

508

547

586

625

664

703

742

781

820

859

898

937

976

Ciclos

Fu

nci

ón

Eva

luac

ión

Page 44: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Ajuste BT: # Iteraciones (RND100)Ajuste BT: # Iteraciones (RND100)

0

20000

40000

60000

80000

100000

120000

140000

160000

180000

200000

1 40 79 118

157

196

235

274

313

352

391

430

469

508

547

586

625

664

703

742

781

820

859

898

937

976

Ciclos

Fu

nci

ón

Eva

luac

ión

Page 45: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Resultados: Resultados: Parámetros elegidos de acuerdo a la Parámetros elegidos de acuerdo a la

experimentaciónexperimentación

Lote PACF Lote PASF Lote RND General

# Iteraciones 1.000 1.000 1.000 1.000

# Vecinos 20 % 20 % 40 % 40%

Retención (A/B) 200/300 200/300 200/300 200/300

Overflow 400 500 900 500

Burbujas 6 8 6 8

Fillers 1 7 2 2

Fuera de Sección 900 800 1000 800

Distancia 100 100 100 100

Page 46: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Resultados: Comportamiento de BTResultados: Comportamiento de BT

PACF PASF RND100 RND1000

Mejor sol. Promedio Mejor sol. Promedio Mejor sol. Promedio Mejor sol. Promedio

Valor Solución 36.680 36.700 36.116 36.146 18.366 18.740 116.506 120.498

Total Ciclos 6.000 6.000 6.000 6.000 13.000 13.000 127.000 127.000

Ciclo mejor solución 335 807 128 911 2.747 2.754 31.037 25.721

% Convergencia 5,58 13,44 2,13 15,19 21,13 21,19 24,44 20,25

Vecinos analizados 101.454 102.076 102.700 101.939 167.610 169.333 1.290.121 1.290.145

Posiciones Tabú 45.456 45.763 46.025 45.658 84.544 85.096 693.180 692.605

% Pos. Tabú 44,80 44,83 44,81 44,79 50,44 50,25 53,73 53,68

Crit. Asp. Aplicados 38 30 32 41 81 93 1.000 958

% Crit. Asp. 0,084 0,066 0,070 0,089 0,096 0,109 0,144 0,138

Mov. No mejora 3.075 3.073 3.042 3.063 6.358 6.421 61.024 61.023

% No mejora 51,25 51,22 50,70 51,05 48,91 49,39 48,05 48,05

Page 47: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Resultados: Influencia Sol. InicialResultados: Influencia Sol. Inicial

Solución Inicial generada mediante la Solución Inicial generada mediante la Heurística ConstructivaHeurística Constructiva

Vs.Vs.

Generación de una Solución Inicial “Mala” Generación de una Solución Inicial “Mala” (Todos los Destacados más allá de la (Todos los Destacados más allá de la

última página de la ventana)última página de la ventana)

Page 48: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Resultados: Influencia Sol. Inicial Resultados: Influencia Sol. Inicial (PACF)(PACF)

0

20000

40000

60000

80000

100000

120000

140000

160000

180000

1 40 79 118

157

196

235

274

313

352

391

430

469

508

547

586

625

664

703

742

781

820

859

898

937

976

Ciclos

Fu

nci

ón

Eva

luac

ión

sol. actual sol. mejor

0

20000

40000

60000

80000

100000

120000

1 40 79 118

157

196

235

274

313

352

391

430

469

508

547

586

625

664

703

742

781

820

859

898

937

976

Ciclos

Fu

nci

ón

Eva

luac

ión

sol. actual sol. mejor

Solución Inicial con Heurística Constructiva Solución Inicial “Mala”

Page 49: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Resultados: Influencia Sol. Inicial Resultados: Influencia Sol. Inicial (PASF)(PASF)

0

50000

100000

150000

200000

250000

300000

350000

400000

1 40 79 118

157

196

235

274

313

352

391

430

469

508

547

586

625

664

703

742

781

820

859

898

937

976

Ciclos

Fu

nci

ón

Eva

luac

ión

sol. actual sol. mejor

0

200000

400000

600000

800000

1000000

1200000

1400000

1600000

1800000

1 40 79 118

157

196

235

274

313

352

391

430

469

508

547

586

625

664

703

742

781

820

859

898

937

976

Ciclos

Fu

nci

ón

Eva

luac

ión

sol. actual sol. mejor

Solución Inicial con Heurística Constructiva Solución Inicial “Mala”

Page 50: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Resultados: Influencia Sol. Inicial Resultados: Influencia Sol. Inicial (RND)(RND)

0

20000

40000

60000

80000

100000

120000

140000

160000

180000

200000

1 40 79 118

157

196

235

274

313

352

391

430

469

508

547

586

625

664

703

742

781

820

859

898

937

976

Ciclos

Fu

nci

ón

Eva

luac

ión

sol. actual sol. mejor

0

10000

20000

30000

40000

50000

60000

70000

1 40 79 118

157

196

235

274

313

352

391

430

469

508

547

586

625

664

703

742

781

820

859

898

937

976

Ciclos

Fu

nci

ón

Eva

luac

ión

sol. actual sol. mejor

Solución Inicial con Heurística Constructiva Solución Inicial “Mala”

Page 51: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Resultados: Tiempos de Resultados: Tiempos de procesamientoprocesamiento

Hardware utilizadoHardware utilizado Pentium III – 700MhzPentium III – 700Mhz 128 MB de RAM128 MB de RAM

PlataformaPlataforma Windows 2000 - Edición ProfesionalWindows 2000 - Edición Profesional

Lotes de 51 páginas:Lotes de 51 páginas: 75 Secciones (126 75 Secciones (126 Avisos DestacadosAvisos Destacados)) Tamaño de Ventana: 10 páginasTamaño de Ventana: 10 páginas aprox. 2 minutos aprox. 2 minutos 1.000 iteraciones / Ventana1.000 iteraciones / Ventana 40 % Vecinos40 % Vecinos

Lote de 1.140 páginas:Lote de 1.140 páginas: 1.000 Secciones (1.554 1.000 Secciones (1.554 Avisos DestacadosAvisos Destacados)) Tamaño de Ventana: 10 páginasTamaño de Ventana: 10 páginas aprox. 25 minutos aprox. 25 minutos 1.000 iteraciones / Ventana1.000 iteraciones / Ventana 40 % Vecinos40 % Vecinos

Page 52: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Resultados: Comparación conResultados: Comparación con Las Páginas AmarillasLas Páginas Amarillas

  REAL PACF PASF

  Páginas 51 51 51

  Páginas en Overflow 0 0 0

  Fuera de sección 0 0 0

  % Fillers 1,60 1,72 1,69

  % Burbujas 0,00 0,03 0,07

  #Avisos a dist.0 28 25 24

# Avisos a dist.1 17 19 28

# Avisos a dist.2 27 27 18

  # Avisos a dist.3 7 7 8

  # Avisos a dist.4 12 17 17

  # Avisos a dist.5 13 11 11

  # Avisos a dist.6 3 11 11

  # Avisos a dist.7 11 1 1

  # Avisos a dist.8 2 2 2

  # Avisos a dist.9 6 6 6

““Disimulado” con Disimulado” con justificado verticaljustificado vertical

Intervención manualIntervención manual

0

5

10

15

20

25

30

#0 #1 #2 #3 #4 #5 #6 #7 #8 #9

Dist. desde encabezado

Can

t. d

e a

vis

os

REAL

PACF

PASF

Comparativa BT – Distribución de Avisos Destacados en páginas

Page 53: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Hoja de RutaHoja de Ruta

ObjetivosObjetivos Descripción del ProblemaDescripción del Problema Marco TeóricoMarco Teórico Representación propuestaRepresentación propuesta ImplementaciónImplementación ResultadosResultados ConclusionesConclusiones

Page 54: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

ConclusionesConclusiones

Estrategia aplicable al Estrategia aplicable al Problema de PaginaciónProblema de Paginación.. Comparación con PA.Comparación con PA. Representación elegida produjo buenos resultados con Representación elegida produjo buenos resultados con

Búsqueda Tabú.Búsqueda Tabú. Componentes elegidos tuvieron muy buen desempeño.Componentes elegidos tuvieron muy buen desempeño. Robustez: no depende de la Solución Inicial implementada.Robustez: no depende de la Solución Inicial implementada. Rápida convergencia a “buenas soluciones”.Rápida convergencia a “buenas soluciones”. Tiempos aceptables para sistemas interactivos.Tiempos aceptables para sistemas interactivos. Parámetros de Referencia: buenos resultados sobre varios Parámetros de Referencia: buenos resultados sobre varios

lotes de prueba (de diferentes características).lotes de prueba (de diferentes características). Interfase: las funcionalidades implementadas superan Interfase: las funcionalidades implementadas superan

nuestras propias expectativas.nuestras propias expectativas.

Page 55: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Posibles MejorasPosibles Mejoras

Distribución de Distribución de Avisos DestacadosAvisos Destacados en la en la página:página: Combinar las heurísticas implementadasCombinar las heurísticas implementadas

Combinaciones de los métodos “apilar” y “acostar” podrían Combinaciones de los métodos “apilar” y “acostar” podrían llevarnos a obtener mejores resultados.llevarnos a obtener mejores resultados.

Desarrollar nuevas heurísticasDesarrollar nuevas heurísticas Búsqueda localBúsqueda local Método exhaustivoMétodo exhaustivo

““Reconocimiento de Bloques”Reconocimiento de Bloques” Tratar dos o más Tratar dos o más Avisos DestacadosAvisos Destacados como un único objeto y como un único objeto y

reubicarlos como talreubicarlos como tal

Page 56: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Posibles Mejoras (cont.)Posibles Mejoras (cont.)

Búsqueda Tabú:Búsqueda Tabú: Incluir atributos de FrecuenciaIncluir atributos de Frecuencia

Incorporar características de uso de Memoria de Largo Incorporar características de uso de Memoria de Largo PlazoPlazo

Implementar Soluciones EliteImplementar Soluciones Elite Para el mantenimiento de buenas soluciones obtenidas Para el mantenimiento de buenas soluciones obtenidas

a lo largo de la búsqueda, para posteriores a lo largo de la búsqueda, para posteriores profundizacionesprofundizaciones

Ampliar el Criterio de ParadaAmpliar el Criterio de Parada Cantidad de iteraciones de no mejora (como alternativa Cantidad de iteraciones de no mejora (como alternativa

para la finalización)para la finalización)

Page 57: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Trabajos futurosTrabajos futuros

Desarrollo de aplicación comercial, tomando como base el Desarrollo de aplicación comercial, tomando como base el prototipo implementado (con la estrategia propuesta)prototipo implementado (con la estrategia propuesta)

Funcionalidades adicionales:Funcionalidades adicionales: Elementos “Ancla”: identificar rápidamente (por orden alfabético) un Elementos “Ancla”: identificar rápidamente (por orden alfabético) un

Aviso LinealAviso Lineal que referencie a un que referencie a un Aviso DestacadoAviso Destacado dentro de la dentro de la publicación. publicación.

Justificar verticalmente los Justificar verticalmente los Avisos LinealesAvisos Lineales: “disimular” el espacio de : “disimular” el espacio de desperdicio en las columnas.desperdicio en las columnas.

Manejar contenido dentro de los avisos: incluir gráfica y texto dentro Manejar contenido dentro de los avisos: incluir gráfica y texto dentro de los elementos (de los elementos (Avisos DestacadosAvisos Destacados, , LinealesLineales y y de Rellenode Relleno), mejoraría ), mejoraría la orientación del usuario del sistema.la orientación del usuario del sistema.

Salida para impresión en formato standard: formato Postscript y/o EPS.Salida para impresión en formato standard: formato Postscript y/o EPS. Iniciar o retomar el proceso de paginación desde una página Iniciar o retomar el proceso de paginación desde una página

cualquiera (y no necesariamente desde la primera página).cualquiera (y no necesariamente desde la primera página).

Page 58: Un Algoritmo de Búsqueda Tabú para el Problema de la Paginación de Avisos Clasificados

Preguntas …Preguntas …