Descargar la presentación
La descarga está en progreso. Por favor, espere
1
generic constraint development environment
Gecode generic constraint development environment Pablo Martínez Bernardo
2
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
3
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
4
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
5
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
6
Estructura de un programa
//includes class problema : public Space{ protected: //Variables de decisión public: //Constructores //Constraints //Método copy //Métodos auxiliares };
7
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 };
8
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);
9
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;
10
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;
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.