Administración de Restricciones. Teoría de restricciones (TOC)
PROGRAMACIÓN CON RESTRICCIONES MINION
description
Transcript of PROGRAMACIÓN CON RESTRICCIONES MINION
PROGRAMACIÓN CON RESTRICCIONES
MINION
Adrián Rabadán JuradoTeresa 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/
DOMINIOSBOOL:
-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**
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: VARIABLES
**SEARCH**
# Esta sección es opcional
VARORDER [bool,b,d, q[_]] # Por defecto en el # orden de declaración
VALORDER [a,d,a,a] #Por defecto ascendente
MAXIMISING bool# MINIMISING b# Ambas se aceptan tanto con ‘s’ como con ‘z’
PRINT [bool, q]#También se pueden usar PRINT ALL y PRINT NONE
EJEMPLO: SEARCH
**CONSTRAINTS**
eq(bool, 0)alldiff(vector)product(x, y, 12)
weightedsumgeq([2,4], [b, d], 10)
EJEMPLO: CONSTRAINTS
**TUPLELIST**
# Formato: <nombre> <número de tuplas># <longitud tuplas> <valores>
Fred 3 30 2 32 0 33 1 3
Minions 2 2 1 2 3 4
EJEMPLO: TUPLELIST
# Se pueden repetir secciones
**VARIABLES**
**CONSTRAINTS**
#q[3]table([q], Fred)table([q],{<0,2,3>,<2,0,3>,<3,1,3>})
**EOF**
Todo el texto después del **EOF** se ignora
EJEMPLO: FIN DEL CÓDIGO
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**
PROBLEMA DEL GRANJERO