Programación con restricciones

Slides:



Advertisements
Presentaciones similares
Arreglos.
Advertisements

Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Curso de java básico (scjp)
ESTRUCTURA DE DATOS Unidad 01 MATRICES.
Abstracción de Datos Arrays.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
¿Qué es e-libro? e-Libro es una poderosa y versátil plataforma que permite el acceso a una colección de bibliotecas digitales con los contenidos de McGraw-Hill.
Utilidades de compresión / descompresión de archivos
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
Curso de PHP Tema 6: Seguridad.
INFORMATICA I Arreglos 2 CLASE 18.
ENLACES DE INTERES PAGINA OFICIAL:
Tecnología de la Programación Javier Nieves Acedo Standar Template Library (STL)
Windows es un sistema operativo
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Vectores en java.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
Como empezar en Access 2000 Abrir Access 2000 Pulsamos INICIO
Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
TUTORIAL M.A. Fabiola Suseth López Aguirre Espacio Educativo NTIC Universidad de Sonora Septiembre de 2013.
TUTORIAL M.A. Fabiola Suseth López Aguirre Espacio Educativo NTIC Universidad de Sonora Septiembre de 2011.
UNIDAD 2:Crear, abrir y cerrar una base de datos Hacer clic sobre la opción Nuevo de la pestaña Archivo. Se mostrarán las distintas opciones para nuevos.
Diagrama de Flujo La presentación gráfica de sistemas es una forma ampliamente utilizada como herramienta de análisis,  ya que permite identificar aspectos.
ARREGLOS BIDIMENSIONALES
Manejo de Vectores y Matirces
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
ESTRUCTURA DE DATOS EN JAVA
Diseño de una base de datos Zavaleta Nolasco Karina
Clase 10: Estructuras de datos y arreglos.
Windows es un sistema operativo
El lenguaje de programación C - Vectores y matrices -
Arrays Arreglos Prof. Gonzalo Pastor Vectores. Definición Un vector es un tipo de variable que puede guardar muchos valores Una variable sólo puede guardar.
FORMULAS ESTADISTICAS.
Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi.
Informática Ingeniería en Electrónica y Automática Industrial
Matrices Departamento de Computación Escuela de Ingeniería de Sistemas
NOMBRES:OLIVARES ALFARO JOSE L. BONETTI ARON GRUPO:308.
Parte I. Estructuras de Datos.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
Programación Orientada a Objetos
Matrices Prof. Flor Narciso Departamento de Computación
El escritorio y la Barra de tareas
III. Generación de documentos corporativos
EQUIPO:#3 GRUPO:304 NOMBRES: Lizbeth Nava Barón y Erick Ali Mejía.
Macros Con las macros lo que se pretende es automatizar varias tareas y fusionarlas en una sola, añadiendo por ejemplo un botón en nuestro libro que al.
Arrays multidimensionales en JAVA
ESCULA NORMAL “PROFR. DARÍO RODRÍGUEZ CRUZ” LIC
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Sistema Operativo S.O..
Computación I. CI-2125 Tema VII
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
Algoritmo.
Support.ebsco.com EBSCO Discovery Service Recurso de Tutoría.
ARREGLOS BIDIMENSIONALES MATRICES Son un espacio de almacenamiento continuo, que contiene una serie de elementos del mismo tipo de datos. Desde el punto.
PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
¿Qué es e-libro? e-Libro es una poderosa y versátil plataforma que permite el acceso a una colección de bibliotecas digitales con los contenidos de McGraw-Hill.
UNIDAD I 1.1 Conceptos y Aplicaciones de la hoja de cálculo
INTEGRANTE: FLORES GODOY JUAN E. Grupo:308. Una tabla es una colección de datos sobre un tema específico, como productos o proveedores. Al usar una tabla.
Lenguaje de Programación II PLAN DE EVALUACIÓN CONTENIDO MODALIDAD DE EVAL. PONDERACIÓN INTRODUCCIÓN BÁSICA AL LENGUAJE DE PROGRAMACIÓN.
Informática Extracurricular UNAJ 1 6 Clase 6 PowerPoint.
APLICACIONES DE WINDOWS
Matrices Los números bien colocados. Las matrices son cajas de números colocados en filas y columnas. Su orden viene dado por dos números nxr siendo n.
Microsoft Word Procesador de Textos
ORDENADOR HARDWARE UNIDAD CENTRAL Microprocesador memoria PERIFÉRICOS Teclado, ratón, Escáner, Impresora, Webcam, lápiz, Etc. SOFTWARE SISTEMAS OPERATIVOS.
Constructores Los constructores inicializan nuestra clase, le dan un estado inicial estable listo para su uso. Siempre que declarábamos una variable numérica.
Sistema de archivos NTFS
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
Diseño de tipos: clase PolinomioEntero Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 8 Versión
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Transcripción de la presentación:

Programación con restricciones 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 Secuencia mágica

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

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

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

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.

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

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)

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.

Matrices Las matrices en Gecode son algo especiales. Creación: Acceso: 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

Sudoku

Restricciones

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

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:

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

Operaciones aritméticas

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

Script secuencia mágica

Soporte de búsqueda

Main

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

¿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

Para la secuencia mágica:

¿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

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

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