Primer Congreso Mexicano de Investigación de Operaciones Se celebrará en las instalaciones de la Universidad de Guadalajara del 24 al 26 de Octubre del 2012. Fecha límite de registro de participantes y pago al encuentro 14 de agosto de 2012 Fecha límite de envío de resúmenes: 01 de junio de 2012 Notificación de aceptación: 15 de junio del 2012 www.smio.org.mx [email protected] Definición del problema Conceptualización. ¿Cuál es el problema?, ¿Cuáles son las decisiones que se deben tomar? ó ¿Cuáles son las preguntas que se quieran resolver? Justificación. ¿Por qué es importante resolver el problema? Delimitación o alcance. ¿Hasta dónde se quiere llegar con la solución del problema? ¿Cuáles son las características del problema a considerar? ¿Cuál es el nivel de detalle al que se quiere llegar? Objetivos. ¿Qué se pretende con la solución? Información. ¿Cuál es la información necesaria y la disponible para la solución del problema? Enviar a [email protected] 4 ¿Qué es LINGO? Software que permite plantear y resolver modelos de Optimización Para descargarlo vaya a: http://www.lindo.com/index.php?option=com_content&view=articl e&id=35&Itemid=20 Otros Programas de Optimización… ILOG Cplex(IBM) GAMS (GAMS) MPL (Maximal Software) Express (Dash Optimization). Solver de Excel. (Microsoft) …Antes de empezar Los componentes de un modelo de optimización son: Variables, Restricciones, Función Objetivo. Los algoritmos de solución dependen del tipo de modelo. Un modelo lineal se puede resolver con el Método Simplex Modelo en forma implícita Lingo permite ingresar un modelo en su forma explícita, por ejemplo: Es poco práctica esta forma de escribir el modelo, cuando se tienen modelos grandes Sintaxis de Lingo El compilador de LINGO no distingue entre mayúsculas y minúsculas. Todas las sentencias deben terminar en un punto y coma. Para declarar la función objetivo debemos colocar las palabras reservadas MAX o MIN, las cuales se resaltan en azul, seguidas del signo = Sintaxis de Lingo Los comentarios deben comenzar con un signo !, los cuales son resaltados en verde, y terminados con punto y coma. Cuando se le dan nombres a las variables en LINGO, todos los nombres deben comenzar con un carácter (A-Z). Los otros pueden ser alfabéticos, numéricos o el símbolo _. Los nombres pueden tener una longitud de 32 caracteres. Por defecto LINGO asume todas las variables >= 0, de lo contrario hay que especificar. Sintaxis de Lingo Tipos de variables: @GIN(‘NombreVariable’), para declarar variables enteras @BIN(‘NombreVariable’), para declarar variables binarias @FREE(‘NombreVariable’), para declarar variables que pueden tomar cualquier valor Pasos para resolver un problema de optimización, utilizando lingo 1. FORMULAR EL MODELO MATEMÁTICO de forma Algebraica (para fines prácticos). 2. PROGRAMAR EL MODELO en el lenguaje de LINGO 3. RESOLVER EL MODELO 4. ANALIZAR LOS RESULTADOS Ejemplo Don Jorge, el jefe de logística de CEMENTERA SAS, nos ha llamado y quiere que le ayudemos con un problema que tiene en la empresa: Veamos que dice Don Jorge: Ejemplo En Cementera SAS tenemos 2 plantas de producción de cemento (Barranquilla y Medellín), las cuales distribuyen cemento a granel a 3 centros de distribución (Cartagena, Sincelejo y Caucasia). En la empresa queremos optimizar el transporte del cemento. Ejemplo En Cementera SAS tenemos 2 plantas de producción de cemento (Barranquilla y Medellín), las cuales distribuyen cemento a granel a 3 centros de distribución (Cartagena, Sincelejo y Caucasia). En la empresa queremos optimizar el transporte del cemento. ¿Qué le deberíamos preguntar a Don Jorge? Ejemplo ¿Cuál es la capacidad de producción de cada planta? ¿Cuál es el costo de llevar el producto de cada una de las plantas a cada uno de los centros de distribución? ¿Cuál es la demanda en cada Centro de Distribución? Ejemplo DEFINICIÓN EXPLÍCITA DEL MODELO Se recomienda definir primero el modelo de forma explícita, luego definirlo de forma implícita. DEFINICIÓN IMPLÍCITA DEL MODELO Programación en LINGO 1. Definir los conjuntos (los subíndices utilizados en el modelo matemático). 2. Ingresar los datos (se pueden leer de excel, de una base de datos o ingresar directamente en LINGO). 3. Escribir el modelo matemático. Programación en LINGO 1. Definir los conjuntos (los subíndices utilizados en el modelo matemático). 2. Ingresar los datos (se pueden leer de excel, de una base de datos o ingresar directamente en LINGO). 3. Escribir el modelo matemático. 1. Definir los conjuntos Antes veamos los siguientes conceptos CONJUNTO, es una colección de elementos. ATRIBUTO, es una característica de los elementos de un conjunto. 1. Definir los conjuntos 1. Definir los conjuntos En Lingo: 2. Ingresar Datos (Directamente en Lingo) DATA: PLANTA= MEDELLIN BARRANQUILLA; CD= CARTAGENA SINCELEJO CAUCASIA; CAP= 2000 500; DEM= 700 300 500; DIST= 637 471 285 136 232 416; FLETE= 100; ENDDATA En Lingo: 2. Ingresar Datos (leerlos de Excel) DATA: PLANTA,CD,CAP,DEM,DIST,FLETE=@OLE(); ENDDATA En viejas versiones de Lingo se debe colocar la ruta del archivo: @OLE(‘ruta’) @OLE() toma el archivo de Excel que esté abierto si no se especifica la ruta. OLE: Object Linking and Embedding. 2. Ingresar Datos (leerlos de Excel) En Excel: Se debe dar el nombre a los rangos que representan los conjuntos y los parámetros. Veamos… 2. Ingresar Datos (leerlos de Excel) 2. Ingresar Datos (leerlos de Excel) 2. Ingresar Datos (leerlos de Excel) 2. Ingresar Datos (leerlos de Excel) 2. Ingresar Datos (leerlos de Excel) 2. Ingresar Datos (leerlos de Excel) A cada rango se le debe dar el nombre del conjunto o parámetro que represente. Ojo: Hay varios rangos que me pueden representar el conjunto PLANTA, por ejemplo el rango A3:A4 y A14:A15. Solo se le debe dar el nombre a uno. Cómo se le da el nombre a un rango en Excel? Seleccionar el rango/ Click derecho / Asignar nombre a un rango 3. Escribir el modelo matemático Algunas funciones de Lingo para escribir un modelo matemático Función( NombreConjunto [ (ÍndiceConjunto) [ | Condición]] : Expresión); 3. Escribir el modelo matemático ¿Qué pasaría si el plan de transporte no se hiciera para un solo periodo sino para varios periodos? ¿Cuál sería el nuevo modelo? ¿Qué datos necesitaría? EJERCICIO PROPUESTO: Asignación de monitores para la vigilancia de los parciales de la Escuela de Matemáticas de la Universidad Nacional de Colombia, sede Medellín (UNMEDMAT). “Actualmente, la UNMEDMAT debe programar los exámenes de sus asignaturas en períodos extra clase. Cada examen necesita una cantidad determinada de vigilantes (monitores), dependiendo de la cantidad de estudiantes que se encuentren cursando la asignatura y de los salones que estén disponibles para la presentación de los exámenes. La programación (asignación monitor-examen) se realiza buscando un criterio de equidad, de tal forma que todos los monitores vigilen una cantidad similar de exámenes”. ¿Qué datos se necesitan? ¿Cuál podría ser un modelo matemático que representa la situación?