1 / 32

Gecode

Gecode. Programación con restricciones. ¿Qué es Gecode ? . Gecode es una herramienta para el desarrollo de sistemas basados en restricciones Abierto Gratuito Portable Eficiente Concurrente Está disponible para Linux, Windows y Mac OS www.gecode.org. Primera aproximación .

monita
Download Presentation

Gecode

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gecode Programación con restricciones

  2. ¿Qué es Gecode? • Gecode es una herramienta para el desarrollo de sistemas basados en restricciones • Abierto • Gratuito • Portable • Eficiente • Concurrente Está disponible para Linux, Windows y Mac OS www.gecode.org

  3. Primera aproximación Secuencia mágica

  4. Estructura de un modelo • Constructura: • En la constructora se inicializan las variables de decisión, se declaran las restricciones y el branching • El branching es, a grandes rasgos, la definición de por dónde debe empezar y hacia dónde debe ir la búsqueda de una solución al problema

  5. Soporte de búsqueda • Todo modelo debe incluir: • Constructora adicional que actualiza el valor de las variables de decisión • Función Copy() que devuelve una copia del espacio apoyándose en la constructora anterior

  6. Impresión de la solución • Las variables de decisión se pueden imprimir como si fueran variables de C++

  7. Main • En el main se deben seguir los siguientes pasos: • Se crea el modelo • se crea el motor de búsqueda para el modelo • se obtiene una (o varias) de las soluciónes y se imprimen.

  8. Tipos de datos para enteros • #include<gecode/int.hh> • IntVar • Son el equivalente a los varint de Minizinc. • Constructora: • IntVar(home, liminf, limsup)

  9. IntSet • Son el equivalente a los conjuntos de minizinc. • Constructora: • IntSet(home, minDom, maxDom) • Se puede construir una variable entera pasándole un IntSet como dominio: • IntVar x(home, IntSet(-10, 10)

  10. IntVarArray • Son el equivalente a los array of var de Minizinc • Constructoras: • IntVarArray(home, n, liminf, limsup) • Acceso: • IntVarArray x(home, 10, 0, 9) • x[i] será la posición i-ésima del array siendo i un entero.

  11. Matrices • Las matrices en Gecode son algo especiales. • Creación: • IntVarArray x(home, N*M, a, b) • Matrix<IntVarArray> m(x, N, M) • Acceso: • m(i,j) • m.row(i): Fila i-ésima de la matriz • m.col(i): Columna i-ésima de la matriz

  12. Sudoku

  13. Restricciones

  14. Slices • Devuelven “trozos” de la matriz que cumplen ciertas condiciones • Tienen su versión para arrays

  15. Restricciones y operaciones • Relaciones: • Las relaciones en Gecode se definen de una manera especial: • rel(home, var1, rel_type, var2) Ejemplo: rel(home, x, ITR_LE, y) => x< y Tipos de relaciones:

  16. Count(home, var1, var2, rel_type, c) • c será igual al número de veces que aparece var2 en el vector var1. • Member(home,x,y): • El valor y debe aparecer por lo menos una vez en el array x • Distinct(home, x): • Todos los valores del array x deben ser distintos

  17. Operaciones aritméticas

  18. Scripts • Heredan de la clase Space. • Junto con la clase Options permiten parametrizar problemas de tamaño variable

  19. Script secuencia mágica

  20. Soporte de búsqueda

  21. Main

  22. Gist • Es una herramienta gráfica que incluye Gecode. • Permite ver gráficamente cómo progresa la búsqueda de una solución.

  23. ¿Cómo usar Gist en un modelo? • Solo hace falta cambiar el main: • Se crea el modelo • Se crea la instancia de Gist para el modelo • Se elige el motor de búsqueda y se le pasa el modelo y las opciones de Gist

  24. Para la secuencia mágica:

  25. ¿Cómo instalar Gecode? • Descargar el ejecutable correspondiente a la versión de Visual Studio del sistema. • Al crear un proyecto nuevo acceder a propiedades del proyecto->C/C++ y agregar la carpeta /Gecode/include en Directorios de inclusión adicionales

  26. En las opciones del vinculador añadir la carpeta /Gecode/lib en Directorios de bibliotecas adicionales

  27. Conclusiones • Es útil para aplicaciones reales • Es extremadamente rápido • Es intuitivo • La documentación disponible es excelente • Muy recomendable aprender a usarlo

More Related