100 likes | 302 Views
PROGRAMACIÓN CON RESTRICCIONES MINION. Adrián Rabadán Jurado Teresa Rodríguez Ferreira. INTRODUCCIÓN. - Comenzó el 9 Mayo 2007 - Sourceforge -Aún se encuentra en fase Beta. Podemos encontrar bugs - Código libre y abierto -Aplicaciones prácticas -Aplicaciones educativas
E N D
PROGRAMACIÓN CON RESTRICCIONESMINION Adrián Rabadán Jurado Teresa Rodríguez Ferreira
INTRODUCCIÓN -Comenzó el 9 Mayo 2007 -Sourceforge -Aún se encuentra en fase Beta. Podemos encontrar bugs -Código libre y abierto -Aplicaciones prácticas -Aplicaciones educativas http://minion.sourceforge.net/
DOMINIOS BOOL: -Dominio {0,1} -Estructura especialmente optimizada. DISCRETE: -Rango de enteros -Uso de memoria y coste de las operaciones O(tamaño) BOUND: -Rango de enteros -Uso de memoria y coste de las operaciones O(1) SPARSEBOUND: -Idéntico a BOUND, pero permite saltos en el rango
SECCIONES OBLIGATORIAS MINION 3 **VARIABLES** **CONSTRAINTS** **EOF**
EJEMPLO: VARIABLES MINION 3 **VARIABLES** # Los comentarios van desde la almohadilla hasta # el final de la línea BOOL bool BOUND b {1..3} DISCRETE d {1..3} SPARSEBOUND s {1,3,6,7} DISCRETE q[3] {0..5} BOOL matriz[2,2,2,2]
EJEMPLO: SEARCH **SEARCH** # Estasecciónesopcional VARORDER [bool,b,d, q[_]] # Pordefecto en el # orden de declaración VALORDER [a,d,a,a] #Pordefectoascendente MAXIMISING bool # MINIMISING b # Ambas se aceptantanto con ‘s’ como con ‘z’ PRINT [bool, q] #También se puedenusar PRINT ALL y PRINT NONE
EJEMPLO: CONSTRAINTS **CONSTRAINTS** eq(bool, 0) alldiff(vector) product(x, y, 12) weightedsumgeq([2,4], [b, d], 10)
EJEMPLO: TUPLELIST **TUPLELIST** # Formato: <nombre> <número de tuplas> # <longitudtuplas> <valores> Fred 3 3 0 2 3 2 0 3 3 1 3 Minions 2 2 1 2 3 4
EJEMPLO: FIN DEL CÓDIGO # Se puedenrepetirsecciones **VARIABLES** **CONSTRAINTS** #q[3] table([q], Fred) table([q],{<0,2,3>,<2,0,3>,<3,1,3>}) **EOF** Todo el textodespués del **EOF** se ignora
PROBLEMA DEL GRANJERO MINION 3 **VARIABLES** DISCRETE pigs {0..7} DISCRETE hens {0..7} **SEARCH** PRINT [[pigs], [hens]] VARORDER [pigs, hens] **CONSTRAINTS** weightedsumgeq([2,4], [hens, pigs], 22) weightedsumleq([2,4], [hens, pigs], 22) sumleq([hens, pigs], 7) sumgeq([hens, pigs], 7) **EOF**