generic constraint development environment

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

Introducción a C++ Sistemas Operativos
El lenguaje de programación C - El primer programa -
EL LENGUAJE DE PROGRAMACIÓN C
Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene.
Herencia en C#.
Ejemplo de Programa C++
Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables.
UML Lenguaje Unificado de Construcción de Modelos
Programación Orientada a Objetos en C++
Programación Concurrente en Java
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
Tipos de Datos Abstractos Vector de Racionales
Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.
A partir del lenguaje C Entorno de programación Visual C++
POO en C++: Sintaxis En el .h debe aparecer la declaración de la clase: class NombreClase { private: // atributos y métodos privados public: // atributos.
INFORMATICA I Funciones CLASE 13.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Prof. Franklin Cedeño. FUNCIONES EN C++ Cuando tratamos de resolver un problema, resulta muy útil utilizar la filosofía de “divide y vencerás”. Esta estrategia.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Programación con restricciones
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
C++ vs C Los códigos de C++ están copiados de la documentación de PRO1.
SOBRECARGA DE FUNCIONES
Estructuras de Datos Cont. C++ y Tipos de Datos. Ejemplo: Vector de Objetos #include class estudiante { private: int aCarne; char aNombre[20]; float aNota;
Acciones y funciones Concepto
Lenguajes de Programación Tema 4. Paradigma Orientado a Objetos Java 1.5 Pedro García López
Introducción Program Slicing Pattern Matching Problema: Pérdida de precisión Solución Conclusiones Peculiaridades de Erlang Erlang Dependence Graph.
1 Chapter 8 Scope Dale/Weems/Headington. 2 Tópicos del Capítulo 8 l Local Scope vs. Global Scope of an Identifier l Detailed Scope Rules to Determine.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
El lenguaje de programación C - Funciones -
CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.
Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas.
Clases abstractas no polimórficas para C++ Universidad de Costa Rica Escuela de Ciencias de la Computación e Informática Agenda.
Estructuras de Control de Repetición
Sección 5-2 Estructuras de Control de Decisión Expresiones Lógicas.
ÁRBOLES BINARIOS DE BÚSQUEDA
Programación III Clase 06 Funciones.
Numeric Types, Expressions, and Output
Desarrollador Profesional de Juegos Programación III Unidad II Una clase thread para window.
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide 2- 1.
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
INTRODUCCION. LOS LENGUAJES DE PROGRAMACIÓN Los lenguajes de programación herramientas que nos permiten crear programas y software. EL LENGUAJE DE MAQUINA.
Sobrecarga de operadores
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Manejo de Punteros y objetos en memoria dinámica en C++
Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad.
Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad.
Sesión 12: Herencia (2) – herencia múltiple /1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
INTRODUCCIÓN AL LENGUAJE C++. Instrucciones Temas.
El lenguaje C++ Isidro González Caballero (Universidad de Oviedo) Técnicas de Comp. en Física Santander, 13/12/
LENGUAJE “C” Programación.
Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.
Algoritmo.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Arreglos Ejemplo paso a paso. Planteamiento Como estudiante de ingeniería, quieres usar tus habilidades de programador para llevar un registro de tus.
ESTRUCTURAS DE DECISION MULTIPLE
Ing. Esp. Ricardo Cujar. Permite la ejecución de una sentencia, dada una determinada condición. If(condición){ sentencia(s) a ejecutar en caso de que.
Desarrollador Profesional de Juegos Programación III Unidad I Excepciones Tipos.
LICETH CAJAS 3RO ASI 26/10/2010. Es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en.NET Framework,
UNIVERSIDAD DIEGO PORTALES Facultad de Ingeniería Programación Avanzada HERENCIA Tema: HERENCIA Ing. Javier Chamorro Cerón.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Transcripción de la presentación:

generic constraint development environment Gecode generic constraint development environment Pablo Martínez Bernardo

Velocidad, MiniZinc Challenge Medalla de oro en todas las categorías los años 2009, 2010, 2011 y 2012 En algunas categorías en 2008

Licencia MIT Licencia sencilla: Los autores no son responsables de ningún problema causado por el funcionamiento del software Libre uso, modificación, venta, copia y publicación, siempre y cuando el software derivado sea publicado bajo una licencia idéntica

Características Primera versión en 2005 Extensa documentación Librería disponible para C++ Ejecutable en hilos Exporta a FlatZinc Resolutores para enteros, reales y booleanos, así como otros específicos a problemas concretos

Integración con C++ Multiplataforma Aprovechamiento de bucles, objetos… Posterior manejo sencillo de los datos obtenidos Contra: Sintaxis complicada en comparación con lenguajes dedicados como MiniZinc

Estructura de un programa //includes class problema : public Space{ protected: //Variables de decisión public: //Constructores //Constraints //Método copy //Métodos auxiliares };

N-Reinas #include <gecode\int.hh> #include <gecode\search.hh> #include <gecode\driver.hh> using namespace Gecode; #include <iostream> using namespace std; class nReinas : public Space { protected: IntVarArray tablero; public: //Constructores //Método copy //Métodos auxiliares };

N-Reinas nReinas(const int tam) { tablero = IntVarArray(*this, tam, 0, tam-1); for (int i = 0; i < tam; i++){ for (int j = i + 1; j < tam; j++) { rel(*this, tablero[i] != tablero[j]); rel(*this, tablero[i]+i != tablero[j]+j); rel(*this, tablero[i]-i != tablero[j]-j); } branch(*this, tablero, INT_VAR_SIZE_MIN, INT_VAL_MIN);

N-Reinas void print() const { nReinas(bool share, nReinas& s) : Space(share, s) { tablero.update(*this, share, s.tablero); } virtual Space* copy(bool share) { return new nReinas(share,*this); void print() const { for (int i = 0; i < tablero.size(); i++) { cout << tablero[i] << ", "; cout << endl;

N-Reinas int main(int argc, char* argv[]) { nReinas* m = new nReinas(50); DFS<nReinas> e(m); while (nReinas* s = e.next()) { s->print(); delete s; } return 0;