You are on page 1of 49

Visin del Tutor

En este Tutor presentaremos a usted el Sistema de Modelado de MPL. Este Tutor contiene mltiples sesiones, con una serie de modelos, que gradualmente se incrementar en dificultad para explicar cmo formular modelos de programacin lineal. Est diseado especficamente para ensear la manera que el Modelado de optimizacin est siendo aplicado en el mundo. Al final, usted debe tener un conocimiento de cmo formular modelos y cmo trabaja MPL. El tutor contiene las siguientes sesiones: Sesin 1: Ejecucin de un Modelo Prueba con MPL La Sesin 1 presenta el Sistema de Modelado de MPL, y cmo usted puede usar el Ambiente Integrado de Desarrollo de Modelos para resolver problemas de optimizacin. Mostramos cmo iniciar una aplicacin con MPL, y llamar un modelo de prueba, resolver el modelo usando los optimizadores disponibles y despus ver la solucin. La informacin de cmo accesar al sistema de ayuda en lnea tambin ser presentado. El propsito de esta sesin es brindar a ustedes una visin de cmo resolver modelos con MPL y se familiaricen con el programa. S usted ya est familiarizado con MPL y las interfaces grficas de usuario, como el Windows, entonces puede pasar a la prxima sesin sin perder continuidad. Sesin 2: Formulacin de un Modelo Simple de Mezcla de Productos En la Sesin 2, se presentar el proceso de formular modelos de programacin lineal, identificando las variables de decisin, la funcin objetivo y las restricciones del modelo. La sesin contiene una descripcin de un modelo simple Producto-Mixto, con 2 variables y 3 restricciones. El propsito de esta sesin es que usted use MPL, a travs de un pequeo ejemplo, cree un modelo simple para entender los pasos bsicos para formular un modelo. Luego resolver el modelo y analizar la solucin que se gener. Sesin 3: Introduccin a Vectores e ndices en Modelos En la Sesin 3, aprender la base de cmo usar ndices y vectores para formular modelos. Ver como los ndices son usados para definir el dominio del modelo, haciendo ms fcil que el tamao del problema se ajuste rpidamente. Usted aprender cmo usar vectores para definir los elementos del modelo, tales como datos, variables y restricciones de una manera ms eficiente usando ndices. Finalmente, ver cmo usar sumatorias y macros sobre los vectores en la formulacin de su modelo. Sesin 4: Un Modelo de Planificacin de la Produccin con Perodos de Tiempo Mltiples En la Sesin 4, ampliar el modelo, desde la sesin previa, para incluir perodos de tiempo mltiples. Un nuevo ndice es introducido en el modelo para definir esos perodos de tiempo, y entonces usted actualizar varios vectores en el modelo que son afectados para explicar el nuevo ndice. Se familiarizar con una nueva clase de restricciones llamadas restricciones de equilibrio, esta es usada para asociar al mismo tiempo las variables de produccin, ventas e inventarios. Sesin 5: Un Modelo de Planificacin de la Produccin con Mltiples Plantas En la Sesin 5, encontrar un modelo que tiene mltiples plantas disponibles para producir los productos. Usted tomar el modelo desde la sesin previa, y le har un agregado incluyendo otro ndice planta, el cual representar a todas las plantas. Despus ir a travs del modelo paso a paso, y actualizar todos los vectores variables y restricciones para explicar el nuevo ndice. Finalmente, aprender cmo usar los archivos de datos externos para almacenar datos muy grandes que deben ser incluidos en el archivo actual del modelo. Sesin 6: Ampliando el Modelo para permitir Embarques entre Plantas En la Sesin 6, usted tomar el modelo de la sesin previa de mltiples plantas y le har un agregado para permitir los embarques entre las plantas. Esto significar que cada planta puede vender los productos y mantener inventario independientemente, en lugar de hacerlo desde un solo almacn para toda la compaa. Para satisfacer la demanda total en la forma ms eficiente es necesario que sea capaz de hacer embarques entre plantas. Finalmente, aprender cmo usar condiciones Where (donde) para sacar los elementos vectores que no son vlidos, tal como retorno de envos a la misma localizacin. Sesin 7: Usando Data Dispersos con Modelos MPL En la Sesin 7, usted tomar el modelo de la sesin previa y agregar mquinas mltiples para cada planta. Esto introducir dispersin en el modelo, puesto que no todas las mquinas estn disponibles en todas las plantas. Usar una nueva caracterstica vector de datos dispersos, para representar qu mquinas estn disponibles y en cul planta. Aprender diferentes maneras para definir vectores de datos dispersos con MPL, incluyendo el uso del operador IN y el vector de archivos dispersos.

Sesin 1: Ejecutando MPL en un Modelo Prueba


En esta sesin, a travs de una serie de pasos usted aprender cmo ejecutar MPL en un Modelo de prueba. Al final de la sesin, ser capaz de iniciar MPL, cargar y resolver el modelo, y ver los resultados. En este punto, usted aprender cmo cambiar la opcin instalar a travs del cuadro de dilogos de MPL. Una breve descripcin del Sistema de Ayuda MPL tambin es cubierta al final de esta sesin. Ahora usted puede ir y usar paso a paso la formulacin en detalle de un modelo prueba.

Su Primera Sesin con MPL Usando el sistema de Ayuda de MPL

Su Primera Sesin con MPL


Usted necesita cuatro pasos simples para familiarizarse cmo resolver modelos en MPL.

Iniciar MPL Cargar el modelo Resolver el modelo Ver la solucin

Paso 1: Iniciar la Aplicacin MPL Iniciar MPL es sencillo en Windows. Cuando instal MPL, el programa de instalacin cre una entrada en el men Inicio/Programas/ MPL for Windows. S MPL no ha sido instalado, por favor refirase al Captulo 2 para ver cmo instalar el software. Para iniciar MPL, haga clic en el botn inicio (Start) de la barra de tareas que aparece en la parte inferior de la ventana y seleccione Programas/MPL for Windows.

MPL for Windows en el Men Inicio Paso 2: Cargar el Modelo a MPL Despus que inici MPL, el prximo paso es cargar el archivo del modelo en el editor del modelo. La aplicacin MPL viene con varios modelos de prueba que son instalados en el directorio Mplwin4. Los modelos MPL son almacenados como archivos texto estndar y tpicamente tienen la extensin '.mpl'. El modelo que estamos usando en esta sesin es llamado Model1.mpl y es almacenado en una carpeta separada llamada Tutorial.

1. 2.

Elija Open (Abrir) del men File (Archivo) para visualizar el cuadro de dilogo Open (Abrir). Haga doble clic en la Carpeta Tutorial y baje hasta el archivo llamado 'Model1.mpl' que est almacenado como se muestra abajo.

3.

Cuadro de Dilogo Abrir (Open) El cuadro de dilogo Abrir (Open) muestra la lista de todos los archivos de modelos prueba de MPL en la carpeta Tutorial. Haga clic sobre el archivo 'Model1.mpl' para seleccionar el archivo y luego presione Abrir (Open) para abrir el archivo. Alternativamente, usted puede abrir el archivo haciendo clic directamente en el nombre de archivo de la lista de archivos.

Este abrir una ventana editor del nuevo modelo conteniendo la formulacin para ese modelo.

Ventana: Editor del Modelo con el Model1.mpl Paso 3: Resolver el Modelo En este Tutor estar usando el solver CPLEX, pero s usted tiene otro solver ya instalado que es soportado por MPL, puede usarlo. Cuando usted ejecuta MPL por primera vez despus de la instalacin, MPL automticamente tratar de localizar algn solver que usted tenga disponible. Usted puede ver qu solver ha sido instalado por MPL yendo a Run que est en la barra Men. Cada solver encontrado ser listado en el men con la palabra Solve.

S no tiene algn solver disponible, ver el item No Solvers en el men Run. En este caso refirase al Captulo 2.3: Instalando Solvers de MPL para informarse cmo agregar solvers a MPL. El resto de este Tutor asumir que usted ha instalado satisfactoriamente CPLEX o algn otro solver y que ste ha sido instalado correctamente. El prximo paso es resolver el modelo que usted ha cargado en el editor del modelo. Para resolver el modelo siga los siguientes pasos: 1. Elija el Solver CPLEX del men Run para resolver el modelo 'Model1'. 2. Mientras resuelve el modelo, la ventana Status Window (ventana de estado) es visualizada y le proporciona informacin acerca del avance de la solucin.

Ventana: Status Window (Ventana de estado) del Model1 La ventana Status Window (ventana de estado) le proporciona informacin tal como el nmero de lneas ledas, el nmero de variables y restricciones encontradas, y cunta memoria ha sido usada. Mientras el optimizador est resolviendo el modelo, el nmero de iteraciones y el valor actual de la funcin objetivo tambin son mostrados. La figura arriba muestra la ventana Status Window (ventana de estado) despus que el problema ha sido resuelto. Paso 4: Ver la Solucin MPL enva la solucin a un archivo con el mismo nombre del modelo, pero con la extensin '. sol'. Use los siguientes pasos para ver el archivo de la solucin Model1.sol que fu generado por el modelo que usted resolvi: 1. Presione el botn View (Ver) en la parte inferior de la ventana Status Window (Ventana de Estado), el cual aparece sobre la pantalla durante el proceso de solucin. Esta abrir una ventana View Window (Ventana Ver) conteniendo el archivo de la solucin como se muestra abajo.

Ventana: View (Ver) con el archivo de la Solucin 'Model1.sol'

2. Usted puede mirar rpidamente la solucin usando la barra desplazadora de la derecha. Note que los detalles de la solucin son proporcionadas incluyendo el valor de la solucin ptima para la funcin objetivo, valores para las variables de decisin y para las restricciones. 3. Cuando ha terminado de mirar a travs de la solucin presione el botn ( X) que aparece en la esquina superior derecho, para cerrar la ventana View Window (ventana Ver). Paso 5: Usando el rbol de Definiciones del Modelo MPL tambin le permite ver en una ventana todo acerca de los tems definidos, desde la formulacin del modelo en un rbol jerrquico llamado Definiciones del Modelo. Cada rama corresponde a una seccin en el modelo. S la ventana del rbol no est abierta, usted puede abrirla eligiendo Definiciones del Modelo del men View (Ver). Mientras est trabajando con MPL normalmente es buena idea dejar abiertas las ventanas todo el tiempo. Luego MPL actualizar automticamente su contenido cada vez que usted resuelve su modelo. La ventana del rbol provee fcil acceso a diferentes reas del modelo y le permite ver rpidamente partes seleccionadas de la solucin del modelo. Para usar la ventana del rbol haga lo siguiente: 1. Asegrese que la ventana del rbol est abierta eligiendo Definiciones del Modelo del men Ver.

Ventana: rbol de Definiciones del Modelo 2. Bajo el ttulo VARIABLES en el rbol, usted ver tres nombres de variables: Producto, Inventario, Ventas, los cuales son las variables para el modelo. En frente de cada ttulo de seccin, hay un pequeo recuadro conteniendo el signo ms o el signo menos. Este recuadro le permite rpidamente expandir y plegar cada rama del rbol. 3. Ahora, seleccione la variable Producto y presione el botn View (Ver) en la parte inferior de la ventana. Este abrir una nueva ventana View (Ver) con los valores de la solucin para la variable Producto.

Ventana: View (Ver) con los Valores de la Solucin de la Variable Producto

Usando El sistema de Ayuda (Help) de MPL


MPL ofrece al usuario un sistema extenso de ayuda (help) conteniendo informacin muy til sobre cmo usar el software. Accesando a los Temas de Ayuda (Help) Disponibles en MPL Para abrir la ventana principal del sistema de ayuda de MPL, vaya al men Help (Ayuda) y elija Topics (Temas). Este visualizar la ventana Help (Ayuda) que se muestra abajo, donde usted puede seleccionar el tema de ayuda que desea leer.

Ventana: Ayuda de los Contenidos de MPL El cuadro de Dilogo Help Topics (Ayuda de Temas) contiene tres tabuladores; el tabulador Contents (Contenidos), el tabulador Index (ndices), y el tabulador Find (Encontrar), ofrecindole diferentes maneras de accesar a la ayuda (help). El tabulador Contents (Contenido), muestra todos los temas disponibles en el sistema de ayuda (help) en una estructura de rbol jerrquico. El tabulador Index (ndice), permite al usuario accesar a la lista de todas las palabras clave en el archivo (help) ayuda o para realizar la bsqueda de una palabra clave especfica. El tabulador Find (Encontrar), permite al usuario encontrar un tema de ayuda buscando palabras especficas o frases en el texto. La base de datos Find (Encontrar) es construida por primera vez cuando se selecciona el tabulador Find a travs de Find Setup Wizard. Buscando Ayuda Sensible de Contexto en los Cuadros de Dilogos Una de las caractersticas beneficiosas en Windows es la adicin de la ayuda sensible de contexto en los cuadros de dilogos. Esta caracterstica le permite obtener rpidamente informacin de ayuda acerca de un tem en los cuadros de dilogos en el que usted est interesado. Para aprender a cmo usar la ayuda sensible de contexto en los cuadros de dilogos en MPL, siga los siguientes pasos: 1. Para abrir un cuadro de dilogos elija MPL Language (Lenguaje MPL) del men Options (Opciones). Este mostrar el cuadro de dilogos MPL Language Options. 2. Haga clic sobre el smbolo ? que est en la esquina superior derecha y suelte el botn del mouse. El cursor cambiar a ? el cual puede usar para sealar el tem que usted est interesado. 3. Mueva el mouse a travs del dilogo y haga clic sobre el tem Max subscript length (longitud mxima de subndices). Una ventana pequea aparecer con una pequea explicacin del item seleccionado como se muestra abajo.

Ayuda Sensible de Contexto en Cuadros de Dilogos Usted tambin puede visualizar la ayuda sensitiva de contexto, presionando el botn derecho del mouse sobre el tem en el cuadro de dilogo y seleccionar What's This? (Qu es esto?) del men que aparece.

Sesin 2: Formulando un Modelo de Mezcla de Productos


En esta sesin usted ser introducido a la formulacin de modelos de programacin lineal a travs de un problema simple llamado La Panadera del Mejor Pan.

Formulando Modelos de Programacin Lineal Descripcin del Problema: Un Modelo de Mezcla de Productos Formulando el Modelo Resolviendo el Modelo con MPL

Formulando Modelos de Programacin Lineal


El propsito de esta sesin es introducirlo a los conceptos bsicos de:

Variables de Decisin Funcin Objetivo Restricciones

Usted necesita identificar esos conceptos cuando formula modelos de programacin lineal. El primer paso cuando formula un modelo es identificar y dar nombres a las variables de decisin. Las Variables de Decisin son los elementos del modelo que el decisor controla y cuyos valores determina la solucin del modelo. El prximo paso es determinar la funcin objetivo en trminos de las variables de decisin. La funcin objetivo es donde usted especifica el objetivo o meta que est tratando de alcanzar. El objetivo puede ser o maximizar o minimizar el valor de la funcin objetivo. Algunas veces usamos la frase queremos optimizar el modelo. Esto significa que queremos encontrar los valores para las variables de decisin que den el mximo o mnimo valor de la funcin objetivo. En muchos casos, la funcin objetivo tiene un valor monetario, por ejemplo maximizar beneficios o minimizar costos, aunque esto no siempre es el caso.

Las restricciones son las limitaciones del mundo real sobre las variables de decisin. Una restriccin restringe los posibles valores que las variables pueden tomar. Un ejemplo de una restriccin puede ser, por ejemplo, que ciertos recursos, tales como capacidad de mquinas o mano de obra sean limitadas.

Descripcin del Problema: Un Modelo de Mezcla de Productos


La Panadera del Mejor Pan es famosa por sus panes. Ellos hacen dos clases: "Sunshine", un pan blanco y "Moonlight", un pan grande y oscuro. El mercado para los famosos panes es interminable. Cada barra de pan Sunshine vendido da una ganancia de; $0.05 y cada barra de pan Moonlight da una ganancia de $0.08. Hay un costo fijo de funcionamiento de la panadera de $4000 por mes, indistintamente de la cantidad de pan horneado. La panadera est dividida en dos departamentos: Horneado y Mezcla, con capacidades limitadas ambos departamentos. En el departamento de horneado hay diez hornos grandes, cada uno con una capacidad de 140 recipientes para horneado por da. Esto hace posible poner diez Barras de Sunshine en cada una de esos recipientes, o cinco barras de pan Moonlight. Usted puede hacer alguna combinacin de esos dos panes sobre los recipientes. Tenga en mente que cada barra de Moonlight ocupa dos espacios por una de Sunshine. El departamento de mezclas puede mezclar hasta 8000 barras de pan Sunshine por da y 5000 barras de pan Moonlight por da. Hay dos mezcladoras automticas separadas y no hay conflicto para hacer las dos clases de masa. Puesto que el mercado de ambos tipos de pan es ilimitado, la administracin de la Panadera ha decidido encontrar la mejor mezcla del producto. La pregunta es cuntas barras de cada tipo de pan debe ser horneado cada da para producir la ms alta ganancia, dadas las limitaciones de la panadera. Mostraremos ahora cmo identificar las variables de decisin, la funcin objetivo y las restricciones para este modelo y luego ingresar la formulacin en MPL.

Formulando el Modelo
Identificar las Variables de Decisin; Para nuestra panadera, las variables de decisin corresponden al nmero de barras de pan de cada tipo que se hacen diariamente. Para hacer la formulacin ms fcil de leer, es una buena idea asignar nombres a las variables de decisin, las cuales le permiten identificar qu representan en el mundo real. Use dos variables de decisin, llamadas Sun y Moon y est de acuerdo que ellas tienen el siguiente significado: Sun = Es el nmero de Barras de pan tipo Sunshine producidas por da Moon = Es el nmero de Barras de pan tipo Moonlight producidas por da Ahora usted quiere determinar los valores para esas dos variables de decisin para maximizar las ganancias de la panadera. Identificar la Funcin Objetivo En nuestro ejemplo, el objetivo es maximizar la ganancia diaria. Hacemos una ganancia de $0.05 por cada barra Sunshine, as que el total de la produccin diaria de pan Sunshine da un beneficio de $0.05 multiplicado por el valor de la variable Sun. Para la produccin de Moonlight, el beneficio correspondiente es $0.08 multiplicado por el valor de la variable Moon. Llamamos a los valores $0.05 y $0.08 los coeficientes para las correspondientes variables de decisin en la funcin objetivo. Para obtener la contribucin total de la ganancia diaria. Agregamos las contribuciones de los dos tipos de pan. De eso, restamos el costo fijo de $4000 y lo dividimos entre 30 das de un mes, para obtener la ganancia neta diaria. Esto conduce a las siguientes cantidades que queremos maximizar: Ganancia = 0.05 Sun + 0.08 Moon - 4000/30 Hemos definido la funcin objetivo para este problema particular. El solver usa la funcin objetivo como un criterio para determinar cul solucin es la ptima.

Identificar las Restricciones La primera restriccin en el departamento de Horneado es complicado puesto que hay una interaccin entre los tipos de pan. Es posible poner 10 del tipo Sunshine y cinco de Moonlight en cada recipiente. Tambin es posible usar alguna combinacin de los dos. La expresin 1/10 Sun + 1/5 Moon nos da el total usado en los recipientes. S usted mide la capacidad de cada horno como el nmero de recipientes que puede manejar por da (10 x 140), puede expresar la restriccin como: 1/10 Sun + 1/5 Moon <= 10 x 140 Expresamos las restricciones como fueron dadas por el departamento de mezclas. Sun <= 8000 Moon <= 5000 Resumiendo la Formulacin Tenemos definido hasta ahora la funcin objetivo y todas las restricciones. La formulacin de un problema de programacin lineal es como se muestra abajo: Max Ganancia = 0.05 Sun + 0.08 Moon - 4000/30 Sujeto a: 1/10 Sun + 1/5 Moon <= 10 x 140 Sun <= 8000 Moon <= 5000 Una vez que tiene su formulacin, casi todo el trabajo est hecho. Como ha visto, MPL acepta entradas justo en una forma similar a lo que ha escrito.

Resolviendo el Modelo en MPL


Paso 1: Inicie MPL y Cree un Nuevo Archivo del Modelo 1. Inicie la aplicacin MPL. 2. Elija New (Nuevo) del men File (Archivo) para crear un nuevo archivo vaco del modelo. 3. Elija Save As (guardar como) del men File (Archivo) y guarde el archivo como Bakery2.mpl. Paso 2: Ingrese la formulacin del Modelo de la Panadera Usted ahora est listo para poner el modelo en el lenguaje de MPL. El editor del modelo en MPL es un editor de texto estndar que le permite ingresar el modelo y ejecutar varias operaciones de edicin sobre el texto del modelo. En el editor del modelo, ingrese la siguiente formulacin del modelo: TITLE BetterBreadBakery; MAX Profit = 0.05 Sun + 0.08 Moon - 4000/30; SUBJECT TO 1/10 Sun + 1/5 Moon <= 10 * 140; Sun <= 8000; Moon <= 5000; END Note que hay una pequea diferencia entre la formulacin del paso anterior y el mostrado aqu. Hay un punto y coma ; despus de la funcin objetivo y despus de cada restriccin.; Esto permite a MPL separar las restricciones.

El espacio usado entre las entradas y las lneas en MPL no es rgido. Es recomendable que cuando ingrese el modelo, use espacios y lneas extras para hacer la formulacin del modelo ms fcil de leer y entender. A MPL solo le preocupa el texto actual en el archivo del modelo. Cuando ha terminado de ingresar el modelo, elija Save (Guardar) del men File (Archivo) para guardar el modelo. Paso 3: Verificar la Sintxis del Modelo Despus que ha ingresado la formulacin en el editor del modelo, puede verificar los errores de Sintxis del modelo. Si MPL encuentra un error en la formulacin lo reportar en la ventana Error Message (Mensajes de Error) mostrando en el modelo la lnea donde ocurri el error, con una explicacin breve del problema. El cursor automticamente se posiciona en el error resaltando la palabra que lo ocasion. Para verificar la sintaxis elija Check Syntax (Verificacin de Sintxis) del men Run (Ejecutar). Si no se encontraron errores, MPL responder con un mensaje indicando que la sintxis del modelo es correcta. Si hubiera un error en el modelo, MPL visualizar la ventana Error Message (Mensajes de Error). S no tiene errores en su formulacin (Felicitaciones) an querr ver cmo trabaja los mensajes de error. Vamos a introducir un error en el modelo y note cmo el mensaje de errores en MPL puede ayudarle a corregirlo. 1. En el editor del modelo elimine el punto y coma al final de la primera restriccin, como sigue:

SUBJECT TO 1/10 Sun + 1/5 Moon <= 10 * 140 semicolon Sun <= 8000; Moon <= 5000;
2. Elija Check Syntax (Verificacin de Sintxis); del men Run (Ejecutar). MPL ir a travs del modelo y encontrar el punto y coma faltante cuando este analice la segunda restriccin, visualizando el siguiente mensaje de error:

! note the missing

Ventana Error Message (Mensaje de Error) La razn por la que MPL no avis la falta del punto y coma hasta que lleg a la segunda restriccin, es porque l piensa que 10*140 es un coeficiente para la variable Sun en la lnea de abajo. 3. Cuando presiona el botn OK usted retorna al editor del modelo. El cursor automticamente se posicionar en la ubicacin donde MPL encontr el error, el cual para nuestro caso es `<=' en la segunda restriccin. 4. Ahora puede reingresar el punto y coma en la primera restriccin y s usted verifica la sintxis otra vez, MPL reportar esta vez que la sintxis est correcta. Paso 4: Resolver el Modelo El prximo paso es resolver el modelo 'Bakery2.mpl'. Resolver el modelo implica varias tareas para MPL, incluyendo la verificacin de la sintxis, anlisis del modelo en la memoria, transferencia del modelo al solver, solucin del modelo y luego recuperacin de la solucin desde el solver y la creacin del

archivo de la solucin. Todas esas tareas son hechas transparentemente para el usuario cuando elige el comando solve del men. Para resolver el modelo siga los siguientes pasos: 1. Elija Solve CPLEX del men Run (Ejecutar) o presione el botn Run Solve en la barra de herramientas. 2. Mientras se est resolviendo el modelo aparece la ventana de estado Status Window (Ventana de Estado); proporcionando informacin acerca del avance de la solucin.

Ventana de Estado: Status Window para el modelo Bakery2 S todo va bien MPL visualizar el mensaje "Optimal Solution Found" (la solucin ptima fu encontrada). S hay una ventana de mensaje de error con un error de sintxis, por favor verifique la formulacin con el modelo detallado que se ingres anteriormente en esta sesin. Paso 5: Ver y Analizar la Solucin Despus de resolver el modelo, MPL automticamente crea un archivo estndar de la solucin conteniendo varios elementos de la solucin del modelo. Este incluye, entre otras cosas, el valor ptimo de la funcin objetivo, los costos de las actividades y los costos reducidos de las variables, los precios sombra y las restricciones de holgura. Este archivo solucin es creado con el mismo nombre del archivo modelo pero con la extensin '.sol'. En nuestro caso el archivo solucin ser llamado; 'Bakery2.sol'. Despus que ha resuelto el modelo puede visualizar el archivo solucin en una pantalla View (Ver) presionando el botn View (Ver) que est en la parte inferior de la ventana de estado Status Window. Esta visualizar la ventana View (ver) como se muestra abajo. MPL Modeling System - Copyright (c) 1988-2009, Maximal Software, Inc. -----------------------------------------------------------------------------------------------MODEL STATISTICS Problem name: Filename: Date: Time: Parsing time: Solver name: Objective value: Iterations: Solution time: Result code: Constraints: Variables: Non zeros: Density: BetterBreadBakery Bakery2.mpl January 16, 2013 18:09 0.01 sec CPLEX (11.2.1) 506.666666667 0 0.01 sec 1 3 2 4 67 %

SOLUTION RESULT Optimal solution found MAX Profit = DECISION VARIABLES PLAIN VARIABLES Variable Name Activity Reduced Cost -------------------------------------------------------------Sun 8000.0 ---Moon 3000.0 ---------------------------------------------------------------CONSTRAINTS PLAIN CONSTRAINTS Constraint Name Slack Shadow Price --------------------------------------------------------------c3 2000.0 -----------------------------------------------------------------RANGES OBJECTIVE PLAIN VARIABLES Variable Name Coefficient Lower Range Upper Range ---------------------------------------------------------------------------------------------Sun 0.1 0.0 1E+020 Moon 0.1 0.1 0.1 ----------------------------------------------------------------------------------------------RANGES RHS PLAIN CONSTRAINTS Constraint Name RHS Value Lower Bound Upper Bound ----------------------------------------------------------------------------------------------c1 1400.0 800.0 1800.0 c2 8000.0 4000.0 14000.0 c3 5000.0 3000.0 1E+020 ---------------------------------------------------------------------------------------------END Ventana: View (Ver) con el archivo solucin Bakery2.sol La ventana View Window almacena el archivo solucin en la memoria, permitindole mirar rpidamente a travs de la solucin usando la barra desplazadora. Una lista completa del archivo solucin es mostrado como abajo: La primera parte del archivo solucin contiene varias estadsticas del modelo, como el nombre de archivo, fecha y hora que fu resuelto, qu solver fu usado, el valor de la funcin objetivo y el tamao del modelo. La siguiente parte del archivo solucin contiene los resultados de la solucin. Aqu usted puede ver s la solucin que fu encontrada era la ptima o s estaba acotada o era infactible. Tambin muestra el nombre y el valor ptimo de la funcin objetivo, en nuestro caso la ganancia para la panadera es igual a $506.7 por da. 506.7

En la seccin VARIABLES DE DECISION usted obtuvo una lista de las variables en el modelo, Sun and Moon. Usted ver que para el pan Sun la solucin sugiere que usted produce 8000 barras por da, lo cual es al mismo tiempo la capacidad del departamento de mezclas para el pan Sun. Para el pan Moon la solucin sugiere que nosotros producimos 3000 barras por da, lo cual es menos que la capacidad mxima de 5000 barras del pan Moon por da en el departamento de mezclas. En la seccin RESTRICCIONES el archivo solucin, lista todas las restricciones del modelo. En nuestro modelo tenamos tres restricciones, una para los hornos en el departamento de horneado, y dos restricciones en el departamento de mezclas para cada tipo de pan. Puesto que la holgura para la primera restriccin es cero, esto significa que los hornos en el departamento de horneado estn trabajando a su capacidad total. De manera similar, los mezcladores para el pan Sunshine estn trabajando a total capacidad, pero los mezcladores para el pan Moonlight tienen una holgura de 2000. Adems, puesto que los hornos en el departamento de horneado son compartidos entre los dos tipos de pan, el solver ha elegido producir tanto como el pan Sunshine sea posible, entonces usa el resto de la capacidad para producir pan Moonlight.

Sesin 3: Introduciendo Vectores e ndices en MPL


MPL le permite concisamente expresar multitudes de vectores, datos, y restricciones, con un formato de expresin intuitivo y flexible. En la seccin 2, usted fu introducido a variables planas, funcin objetivo y restricciones planas. En esta sesin introduciremos varios nuevos elementos del modelo que son necesarios para la construccin de modelos para problemas muy grandes. El modelo que us en la seccin 2 fu pequeo, involucraba solo 2 variables. Los modelos del mundo real tienen cientos o miles de variables y restricciones, y algunas veces pasan del milln de variables. MPL permite al usuario fijar un modelo usando ndices, Vectores de Datos, Variables Vector, y Restricciones Vector para definir el problema en una forma concisa y fcil de leer.

Nuevos Conceptos en esta Sesin Descripcin del Problema: Un modelo de Mezcla de Productos con tres Variables Formulacin del Modelo con MPL Ingrese el Modelo en MPL paso a paso Resuelva el Modelo y Analice la Solucin

Nuevos Conceptos en esta Sesin


ndices como Dominios del Modelo Los ndices definen los dominios del modelo, encapsula las dimensiones del problema, y hace fcil el ajuste rpido del tamao del problema. Una vez que ha definido los ndices para un modelo, usted puede usarlos para definir datos, variables, y vectores restriccin. El dominio de las variables y restricciones mencionadas es donde un lenguaje de modelo como MPL, pueden permitir una productividad dramtica, puesto que ello permite al modelador formular el modelo en una forma concisa y fcil de leer, usando ndices y vectores. Ejemplos de esos ndices incluye:

productos meses plantas

Datos, Variables, y Vectores Restriccin Los Vectores son bsicamente agregar elementos en el modelo que comparten caractersticas y propsitos comunes. Una vez que usted ha definido los ndices en un modelo, puede usarlos para definir vectores que contienen los datos, variables y restricciones del modelo. Esto le permite trabajar de una manera ms abreviada, as no tiene que tipear cada elemento cada vez que los necesite.

Los Vectores de Datos son usados cuando los coeficientes o estadsticas del problema vienen en listas o tablas de datos numricos. Cuando un ndice es definido hay un solo valor por cada valor del ndice y los vectores de datos le permiten juntar coleccin de grupos de datos en el modelo. Estos datos pueden ser especificados como una lista de nmeros en el archivo del modelo, o ser recuperados de un archivo externo, lo cual ser cubierto en la prxima sesin. Ejemplos de vectores de datos, en un modelo de produccin con un ndice 'producto' son; incluidos:

Precio por cada producto Costo de Produccin por cada producto Demanda para cada producto

Los Vectores Variable pueden ser definidos de manera similar como los vectores de datos, para formar una coleccin de variables definidas sobre cierto ndice. Ejemplos de vectores variables son incluidos:

Cunto producir de cada producto Nivel de Inventario del producto en cada mes Cunto embarcar entre localizaciones o plantas

Los Vectores Restriccin; son definidos sobre los ndices, los cuales MPL extiende a una coleccin simple de restricciones cuando genera el modelo. Un vector restriccin puede ser definido de varias maneras, sobre un nmero de ndices como perodos y productos. Ejemplos de vectores restriccin se incluyen:

Limitar la produccin a la capacidad Limitar cunto debe vender a la demanda

Datos Constantes Los Datos Constantes son usados en el modelo para ayudar a que sea legible, y hacer ms fcil el mantenimiento del modelo. Ellos son asignados a un valor especfico pero no definidos sobre un ndice especfico. Usando Sumas sobre Vectores Una de las operaciones usualmente hechas sobre vectores es para sumar o agregar todos los valores por cada elemento del vector. Esto es hecho en MPL usando la palabra clave SUM circundante a la expresin vector a ser agregada. La expresin es prefijada por una lista de ndices sobre la cual depende la suma. La expresin suma contiene un vector de variables simples por termino, a veces multiplicado por uno o ms vectores de datos. SUM (product: Price * Sales); SUM (product, month: ProdCost * Produce);

Descripcin del Problema: Un Modelo de Mezcla de Productos Con tres Variables


Usted est creando una formulacin del modelo para ver cmo son usados los ndices y vectores en MPL. Formulamos un pequeo modelo de mezcla de productos para una panadera que contiene dos productos y tres restricciones. En este ejemplo, estar haciendo algo similar, pero este incluye tres productos los cuales son llamados A1, A2 y A3. Para esos tres productos usted crear un ndice, y luego crear un vector variable que representa cunto de cada uno de esos productos necesita producir. Dadas las definiciones de esos nuevos trminos, ndices y vectores, los aplicaremos al modelo prueba. El modelo de Mezcla de Productos pregunta cmo distribuir la capacidad de produccin entre los productos para determinar el nivel de produccin, dada la demanda. El precio de venta para cada producto es fijado como sigue: $120.00 para A1, $100.00, para A2, y $115.00 para A3. Tambin hay un lmite para la demanda mxima de cada producto:; 4300 para A1, 4500 para A2, y 5400 para A3. La tasa de produccin es medida por cuntos tems de cada producto son producidos por cada da. En este problema, usted tiene un total de 22 das disponibles de produccin. Esa tasa de produccin y los costos de produccin para cada producto estn dados en la tabla que sigue:

Produccin Costo de produccin Rata de produccin

A1 $73.30 500

A2 $52.90 450

A3 $65.40 550

Formulacin del Modelo con MPL


El prximo paso es tomar el problema descrito en la seccin previa, y formularlo como un modelo MPL. Puede dar un vistazo al modelo Planning3, ya creado. Una lista completa de la formulacin del modelo se muestra a continuacin: { Planning3.mpl }

TITLE Producton_Planning3; INDEX product := (A1, A2, A3); DATA Price[product] Demand[product] ProdCost[product] ProdRate[product] ProdDaysAvail := := := := := (120.00, 100.00, 115.00); (4300, 4500, 5400); (73.30, 52.90, 65.40); (500, 450, 550); 22;

VARIABLES Produce[product] -> Prod; MACROS TotalRevenue TotalCost MODEL MAX Profit = TotalRevenue - TotalCost; SUBJECT TO ProdCapacity -> PCap: SUM(product: Produce / ProdRate) BOUNDS Produce <= Demand; END := SUM(product: := SUM(product: Price * Produce); ProdCost * Produce);

<=

ProdDaysAvail;

Ingrese el Modelo en MPL Paso a Paso


Paso 1: Inicie MPL y Cree un nuevo archivo Modelo Usted ingresar ahora un modelo simple paso a paso, para permitirle entender la formulacin del modelo como usted lo determin. 1. Inicie la aplicacin MPL. 2. Elija New(Nuevo) del men File (Archivo) para crear un nuevo archivo vacio del modelo. 3. Elija Save As ( Guardar como ) del men File(Archivo) y guarde el archivo del modelo como;; Planning3.mpl.

Paso 2: Especifique un Ttulo para el Modelo El ttulo es opcional, pero es conveniente colocar un nombre al modelo. El ttulo ser usado en la solucin para identificar el modelo. Usted debe ahora tener una ventana editor vaca donde puede ingresar su formulacin con MPL. Para ingresar el ttulo para el modelo Planning3, escriba en el editor del modelo el siguiente texto: TITLE Production_Planning3; Paso 3: Defina un ndice para todos los Productos en el Modelo La primera seccin en un modelo MPL usualmente es la seccin INDEX (ndice) donde usted define los ndices para el modelo. En este ejemplo, tiene tres productos, A1, A2, y A3 para los cuales est creando un ndice llamado producto. En el editor del modelo, directamente debajo del ttulo, agregue una seccin INDEX (ndice) con una definicin para el ndice producto como sigue: INDEX product:= (A1, A2, A3); Paso 4: Definir los Datos para el Modelo La prxima seccin en MPL usualmente es la seccin de los DATOS donde usted define los Vectores de Datos y los Datos Constantes del modelo. El primer Vector de datos que ingresar, contiene los precios de cada producto, los cuales fueron dados en la descripcin del problema. En el editor del modelo, directamente debajo de la definicin del ndice, agregue una seccin de DATOS con una definicin para el vector de datos Precio seguido por el ndice [Product] entre corchetes. DATA Price[product]:= (120.00, 100.00, 115.00); Siguiendo la declaracin, ingrese un smbolo de asignacin ':=' y luego una lista de nmeros conteniendo los precios de cada producto.; Encierre la lista con parntesis y separe cada nmero por cualquiera de los dos, un espacio, coma o ambos. Debe haber un punto y coma despus de cada definicin de vector para separarlo de las otras definiciones en el modelo. El problema descrito tambin list los datos de la demanda, costo de produccin y tasa de produccin. Hay cierta demanda para cada producto, una cantidad de costo para producirlo, y un lmite superior de cunto de cada producto usted puede producir por da. Para ingresar estos datos en MPL, agregue y siga las definiciones para la seccin de DATOS directamente debajo del vector de datos Precio. Demand[product] := (4300, 4500, 5400); ProdCost[product] := (73.30, 52.90, 65.40); ProdRate[product] := (500, 450, 550); La descripcin del problema tambin list cuntos das de produccin estaban disponibles. Agregue la siguiente definicin de datos constantes para los das disponibles de produccin directamente debajo del vector de datos; ProdRate (Tasa de Produccin): ProdDaysAvail := 22;

Paso 5: Defina un Vector Variable para Cunto Producir de cada Producto Usualmente, la prxima seccin ser la seccin VARIABLES donde usted define las variables del modelo. En la descripcin del problema, al usar el modelo se le pidi que determine cunto producir de cada producto. Para hacer esto, necesit definir la variable llamada Produce (Producir) sobre el ndice Producto. En el editor del modelo, directamente debajo de las definiciones de datos agregue la seccin VARIABLES con una definicin para el vector variable Producir como sigue: VARIABLES Produce[product] -> Prod; El nombre que aparece despus del signo; '->' (lase hacerse) es una abreviacin opcional del nombre de vector usado para compensar las limitaciones del tamao del nombre de muchos solvers de Pl. Esto le permitir a usted usar nombres de descripcin largos para las variables de su modelo.

Paso 6: Defina la Funcin Objetivo como el Total de Ingresos menos el Costo Total de Produccin En la descripcin del problema, se le pidi maximizar las ganancias de la compaa, la cual es representada como Total revenue - Total cost (Total Ingresos - Total Costos). El total de ingresos es calculado multiplicando el precio de cada producto por la cantidad producida de cada producto. Del mismo modo, el costo total es calculado multiplicando el costo de produccin de cada producto por la cantidad producida de cada producto. Esas sumatorias sern utilizadas para definir la funcin objetivo del modelo. Cuando ingresa sumatorias para la funcin objetivo, usualmente es para definirlos separadamente como macros, para hacer que el modelo sea ms fcil de leer. Usando Macros usted puede entonces, en el modelo referirse a esas sumatorias usando el nombre de la macro. En el editor del modelo, directamente debajo de la variable de definicin ingrese la siguiente definicin de macro en la seccin de MACROS. MACROS TotalRevenue TotalCost := SUM (product: Price * Produce); := SUM (product: ProdCost * Produce);

La parte del modelo en MPL es donde usted define la funcin objetiva y las restricciones del modelo. Estar usando las macros definidas arriba, para crear la funcin objetivo refirindose al nombre de la macro cuando usted necesite usar las sumatorias. Puesto que usted est maximizando las ganancias en este modelo, el nombre de esta funcin objetivo ser Profit (Ganancia). En editor del modelo, ingrese la palabra clave MODEL para notar que empieza la parte del modelo, seguido por la definicin de la funcin objetivo. MODEL MAX Profit = TotalRevenue - TotalCost; La frmula para la funcin objetivo es muy simple, como estamos usando macros que contengan las sumatorias actuales. Esto resulta en la funcin objetivo determinando cunto maximizar la ganancia calculando la diferencia entre lo ingresos y los costos totales.; Paso 7: Ingrese una Restriccin para la Capacidad de Produccin; Siguiendo la funcin objetivo usted necesita definir las restricciones para el modelo en la seccin SUBJECT TO (Sujeto A) En la descripcin del problema, se le dio la tasa de produccin definida como cuntos tems de cada producto puede producir cada da. Como tambin cuntos das de produccin estn disponibles. Puesto que esto limita a cuntos tems puede producir, usted necesitar crear una restriccin de la capacidad de produccin llamada ProdCapacity; para cada producto. En el editor del modelo, agregue la cabecera SUBJECT TO (SUJETO A), seguido por la definicin de; restriccin: SUBJECT TO ProdCapacity -> PCap: SUM (product: Produce / ProdRate) <= ProdDaysAvail; En el resumen usted divide el nmero de tems producido por la tasa de produccin para recibir el nmero total de das usados para producir cada producto. El total de das de produccin usados debe ser menor que los das disponibles para la produccin. Paso 8: Ingrese una Cota Superior para la Variable 'Producto'; La seccin BOUNDS (COTAS) es usada para definir las cotas superior e inferior sobre las variables del modelo. Las Cotas son similares a las restricciones pero limitadas a solo una variable por cota. En la descripcin del problema, especificamos que el nmero total de tems producidos debe ser menor que la demanda. Adems, ingrese la siguiente cota superior sobre la variable Produce (Producto) en la seccin BOUNDS (COTAS). BOUNDS Produce END Por favor note que en la mayora de modelos de programacin lineal todas las variables tienen implcito una cota inferior igual a cero (Xj >= 0); Esas cotas inferiores son manejadas automticamente por MPL y; no tiene que ser especificadas a menos que sean diferentes de cero. < Demand;

Al final del modelo ingrese la palabra clave END para notar que es el final del modelo. Despus que ha terminado de ingresar el modelo, debe guardarlo eligiendo Save (guardar) del men File (Archivo).

Resuelva el Modelo y Analice la Solucin


Resolver el Modelo El prximo paso es resolver el modelo Planning3l. Resolver el modelo implica varias tareas que son hechas automticamente por MPL incluyendo la verificacin de la sintxis, anlisis del modelo en la memoria, transferir el modelo al solver, resolver el modelo y entonces recuperar la solucin desde el solver y crear el archivo solucin. Todas esas tareas son hechas transparentemente para el usuario cuando l elige el comando solve de los mens. Para resolver el modelo haga los siguientes pasos: 1. Elija Solve CPLEX del men Run o presione el botn Run Solve en la barra de herramientas. 2. En tanto est resolviendo el modelo, la ventana de estado Status Window aparece proporcionndole informacin acerca del progreso de la solucin.

Ventana de estado: Status Window para el modelo Planning3 S todo va bien, MPL visualizar el mensaje "Optimal Solution Found" (Solucin ptima fu encontrada). Si hubiera una ventana de mensaje de error por favor verifique la formulacin del modelo detallado que; ingres anteriormente en esta seccin. Ver y Analizar la Solucin Despus que resolvi el modelo, MPL automticamente crea un archivo estndar de la solucin conteniendo varios elementos de la solucin del modelo. Este incluye entre otras cosas, el valor ptimo de la funcin objetivo, la actividad y los costos reducidos para las variables, y las holguras y los precios sombra de las restricciones. Este archivo de la solucin es creado con el mismo nombre del archivo del modelo, pero con la extensin '.sol' en su lugar. En nuestro caso el nombre del archivo de la solucin es llamado 'Planning3.sol'. Despus que ha resuelto el modelo, puede visualizar el archivo de la solucin en una ventana View (Ver) presionando el botn View en la parte inferior de la ventana de estado Status Window. Esta visualizar la ventana ver como se muestra abajo.

Ventana View (Ver) con el archivo de la solucin Planning3.sol

La ventana View (Ver) almacena el archivo de la solucin en la memoria, permitiendo ver rpidamente la solucin con las barra de desplazamiento. Un lista completa del archivo de la solucin para el modelo; Planning3 se muestra abajo: MPL Modeling System Copyright (c) 1988-1999, Maximal Software, Inc. ------------------------------------------------------------------------------MODEL STATISTICS Problem name: Filename: Date: Time: Parsing time: Solver: Objective value: Iterations: Solution time: Constraints: Variables: Nonzeros: Density: SOLUTION RESULT Optimal solution found MAX Profit MACROS Macro Name Values ----------------------------------------------TotalRevenue 1298181.8182 TotalCost 753615.1818 ----------------------------------------------DECISION VARIABLES VARIABLE Produce [product] : product Activity Reduced Cost --------------------------------------------A1 4300.0000 4.3100 A2 1611.8182 0.0000 A3 5400.0000 11.0636 --------------------------------------------CONSTRAINTS PLAIN CONSTRAINTS Constraint Name Slack Shadow Price -----------------------------------------------------ProdCapacity 0.0000 -21195.0000 -----------------------------------------------------END = 544566.6364 Producton_Planning3 Planning3.mpl1 April 18, 1998 09:59 0.57 sec CPLEX 544566.636364 3 0.12 sec 1 3 3 100 %

La primera parte del archivo de la solucin contiene varias estadsticas del modelo como el nombre del archivo, fecha y hora que el modelo fu resuelto, que solver fu usado, el valor de la funcin objetivo, y el tamao del modelo. La prxima parte del archivo de la solucin contiene los resultados de la solucin. Aqu usted puede ver s la solucin que fu encontrada, era la ptima o s estaba acotada o era infactible. Tambin muestra el nombre y el valor ptimo de la funcin objetivo. En la seccin MACROS del archivo de la solucin obtuvo una lista de todas las macros definidas a lo largo del modelo con los valores de la solucin de ellos. Por ejemplo, en nuestro modelo Planning3, los ingresos totales son $1.298 millones y el costo total es $754,000. Esto tiene correspondencia con las ganancias de $545,000, el cual es el valor de la funcin objetivo. En la seccin VARIABLES DE DECISION obtuvo una lista de todas las variables en el modelo, ambos variables vector y variables planas. En nuestro caso, tenemos una variable vector simple Producir, definida sobre el ndice producto. Ver tambin que para los productos A1 y A3 la solucin sugiere que usted produce 4300 y 5400 unidades respectivamente. Esta es la misma cantidad que la demanda para aquellos productos. Por otro lado, el producto A2 sugiere que se ha producido 1612 unidades lo cual es menor que la demanda. Claramente no tenemos la capacidad para producir lo suficiente para satisfacer la demanda para todos esos productos y; el modelo elige los productos A1 yA3 para satisfacer la demanda. Por la forma, usted debe haber notado que el valor para; A2 en la solucin es actualmente 1611.8182 unidades en lugar de 1612. Esto resulta del hecho que todas las variables en modelos de programacin lineal son por definicin continuos. En este modelo no importa mucho y solo redondeamos a 1612, pero sino, puede restringir a que la variable solo tome valores enteros, especificando en el modelo que es una variable entera. Por favor vea; el Manual de Usuario de MPL ; para ms detalles de cmo formular modelos en MPL con variables enteras.; En la seccin RESTRICCIONES el archivo de la solucin lista todas las restricciones del modelo, otra vez ambas restricciones, vector y plana. En nuestro modelo, hemos tenido una restriccin simple plana llamada ProdCapacity. Puesto que la holgura para la restriccin es 0.0 esto significa que estamos trabajando a capacidad total. Los precios sombra nos dice que el costo marginal debe estar s usted necesita reducir el lmite de la restriccin a una unidad. Puesto que la restriccin de la capacidad de produccin tiene das de produccin como unidad, reducir los das disponibles por un da, la ganancia decrecer en $21,195.

Sesin 4: Un Modelo de Planificacin de la Produccin con Perodos de Tiempo Mltiples


Ahora usted ampliar el modelo de la sesin previa para incluir perodos de tiempo mltiples. Un nuevo ndice de perodos es introducido en el modelo para cubrir esos perodos de tiempo y luego actualizar los varios vectores que han sido afectados para responder por el nuevo dominio.

Nuevos Conceptos en esta Sesin Descripcin del Problema: Un Modelo de Planificacin con Perodos Mltiples Formulacin del Modelo con MPL Ingrese Nuevos Elementos al Modelo, paso a paso. Resuelva el Modelo y Analice la Solucin

Nuevos Conceptos en esta Sesin


ndices de Perodos Para actualizar su modelo que incluya un perodo mltiple, necesitar crear un ndice que represente el perodo de tiempo. Este tipo de ndice es llamado ndice Perodo. Despus que ha definido su ndice perodo, puede usarlo para actualizar los vectores de datos, de variables y de restricciones para incluir un perodo de tiempo especfico. Ejemplos de ndices perodos podran incluir: meses, trimestres, y aos. Variables de Ventas e Inventarios Cuando usted hace crecer un modelo de un simple perodo a mltiples perodos, las ventas para un perodo especfico pueden ser diferentes de la cantidad producida en el mismo perodo. Como resultado, una nueva variable es requerida para representar cunto necesita vender, y una nueva variable para representar el nivel de inventario para cada perodo.

En muchos casos, hay un costo fijo por perodo involucrado con el almacenamiento de inventario. En otros casos, sin embargo, el costo podra no estar asociado al almacenamiento actual del inventario, sino ms bien con el abastecimiento y retiro de los productos del inventario, a travs de los costos de mano de obra involucrados. Esto significa que necesitar ms variables en el modelo, uno por el abastecimiento de los productos y otro por retirarlos del inventario. Restricciones de Equilibrio del Inventario Como no es posible vender ms de los productos que usted tiene, la variable inventario es usada para asociar las variables de produccin a las variables de ventas. Esto es hecho a travs de una restriccin, comnmente llamada Restriccin de Equilibrio. Las restricciones de equilibrio son usadas para asegurar que las cantidades que ingresan sean iguales a las cantidades que salen. Una restriccin de equilibrio comn, estipula que la produccin total, ms el nivel de inventario del perodo anterior, es igual a la cantidad vendida, ms lo que sali del inventario. Ejemplo de una restriccin de equilibrio es: Produce + Inventory[month-1] = Sales + Inventory En este caso, la entidad que est siendo equilibrada es el inventario. Invt[month-1] es una notacin usada en MPL para representar el perodo anterior. Cuando trabajamos con un inventario donde los costos necesitan ser aplicados al abastecimiento y retiro de los inventarios, usted necesitar definir dos restricciones de equilibrio. Por ejemplo: Produce + OutInvt = Sales + PutInvt PutInvt + Inventory[month-1] = OutInvt + Inventory S piensa que la planta es una entidad, en la primera restriccin estamos equilibrando lo que entra con lo que sale de la planta. De la misma forma, la segunda restriccin de equilibrio indica que estamos equilibrando lo que entra con lo que sale del inventario. Inventario Inicial e Inventario Final En muchos casos el modelador necesita especificar un inventario inicial o un inventario final para el perodo planificado. Por defecto, MPL excluye las entradas de Inventory[month-1] para el mes igual a cero. Hay varias formas que usted puede especificar un inventario inicial, por ejemplo puede ingresar la restriccin en dos partes como sigue: INDEX month := (Jan, Feb, Mar, Apr) DATA StartInvt := 450 SUBJECT TO InitInvt[month=Jan]: produce + StartInvt = sales + Inventory InvtBal [month>Jan]: produce + Inventory[month-1] = sales + Inventory Esto crear una restriccin de equilibrio para el mes de Enero empezando con 450 unidades. Hay otras formas de incluir el inventario inicial en MPL que no requieren duplicar la restriccin, por ejemplo con subndices, pero esta es la forma ms sencilla de formular esa clase de restricciones.

Descripcin del Problema: Un Modelo de Planificacin de la Produccin MultiPeriodo


En esta sesin, crear la formulacin de un nuevo modelo de planificacin de la produccin multi-perodo. Usar el modelo que usted cre en la sesin 3, y har las adiciones necesarias y luego lo actualizar. En este nuevo problema, tendr un perodo de planificacin de cuatro meses, de Enero a Abril. Necesita crear un ndice que contenga los cuatro meses mencionados y luego actualice el resto del modelo, agregando el ndice a los vectores definidos. Como en el problema de la sesin 3, los precios de venta para cada producto son todava $120.00, $100.00, $115.00, respectivamente. Ahora, en lugar de tener una demanda simple para cada producto, usted tiene una demanda separada para cada producto y para cada mes, como se puede ver en la tabla de abajo.

Produccin Demandada A1 A2 A3

Jan 4300 4500 5400

Feb 4200 5400 6700

Mar 6400 6500 7800

Apr 5300 7200 8200

La tasa de produccin y el costo de produccin permanecen iguales, como fueron dados en la tabla de la sesin 3. Note que los das de produccin disponibles son diferentes para cada uno de los meses con 23 das para Enero, 20 para Febrero, 23 para Marzo y 22 para Abril. Introducir el inventario al modelo, adems, tiene los costos de inventario para cada producto con A1 $3.50/month, A2 - $4.00/month and A3 - $3.00/month, respectivamente. Cada uno de los productos toma la misma cantidad de espacio, pero la capacidad total de inventario es ahora 800 unidades por mes.

Formulacin del Modelo con MPL


La formulacin completa del modelo Planning4 es como se lista abajo. Como puede ver el modelo ha crecido respecto al de la sesin 3. Las adiciones al modelo estn resaltadas en rojo para hacer ms fcil que usted vea los cambios. TITLE Production_Planning4; INDEX product := (A1, A2, A3); month := (Jan, Feb, Mar, Apr); DATA Price[product] Demand[product, month] ProdCost[product] ProdRate[product] ProdDaysAvail[month] InvtCost[product] InvtCapacity := (120.00, 100.00, 115.00); := (4300, 4200, 6400, 5300, 4500, 5400, 6500, 7200, 5400, 6700, 7800, 8200); := (73.30, 52.90, 65.40); := (500, 450, 550); := (23, 20, 23, 22); := (3.50, 4.00, 3.00); := 800;

VARIABLES Produce[product, month] -> Prod; Inventory[product,month] -> Invt; Sales[product, month] -> Sale; MACROS TotalRevenue := SUM(product, month: Price * Sales); TotalProdCost := SUM(product, month: ProdCost * Produce); TotalInvtCost := SUM(product, month: InvtCost * Inventory); TotalCost := TotalProdCost + TotalInvtCost; MODEL MAX Profit = TotalRevenue - TotalCost; SUBJECT TO ProdCapacity[month] -> PCap: SUM(product: Produce / ProdRate) <= ProdDaysAvail; InvtBal[product, month] -> IBal: Produce + Inventory[month-1] = Sales + Inventory; MaxInventory[month] -> MaxI: SUM(product: Inventory) <= InvtCapacity;

BOUNDS Sales END

<=

Demand;

Ingrese Nuevos Elementos al Modelo Paso a Paso


Paso 1: Inicie MPL y Cree un Nuevo Modelo 1. Inicie la aplicacin MPL. 2. Elija File | Open (Archivo| Abrir) y abra el modelo de la sesin anterior Planning3.mpl. 3. Elija File | Save As (Archivo | Guardar como) para guardarlo como un nuevo archivo del modelo de Planning4.mpl. Paso 2: Cambie el Ttulo del Modelo Cambie el ttulo del modelo para reflejar que usted est trabajando con el modelo Planning4: TITLE Production_Planning4; Paso 3: Agregue el ndice 'month' al Modelo En este ejemplo, hay una planificacin de cuatro perodos. Cree un nuevo ndice llamado month (mes). Este ndice tendr cuatro elementos Jan, Feb, Mar, y Apr, para representar los cuatro meses de perodos planificados. Agregue la siguiente definicin al ndice mes, que estn resaltadas en negrita en la seccin INDEX (ndice): INDEX product := (A1, A2, A3); month := (Jan, Feb, Mar, Apr); Paso 4: Actualice el Vector de Datos 'Demand' para incluir el ndice 'month' En la seccin DATA (DATOS), muchas de las definiciones de datos son las mismas como en la sesin 3. Uno de los vectores de datos; Demand, necesita ser ampliada para incluir el ndice month, como ahora que tiene diferentes valores para cada mes. Los valores para este vector estn dados en la tabla de la sesin anterior en la descripcin del problema. Agregue el ndice month a la declaracin para el vector de datos Demand, seguido con una lista de valores de datos como se muestra abajo: DATA Price[product] := (120.00, 100.00, 115.00); Demand[product, month] := (4300, 4200, 6400, 5300, 4500, 5400, 6500, 7200, 5400, 6700, 7800, 8200); Paso 5: Actualice la constante 'ProdDaysAvail' al Vector de Datos sobre el ndice 'month' La constante ProdDaysAvail (das de produccin disponible) ahora tiene un valor diferente para cada mes, como en el vector de datosdemand. Esto significa que necesita ser ampliado con un dato constante a un vector de datos dimensional, con month (mes) como ndice. Usando la lista de das de produccin disponible que encontr anteriormente en la descripcin del problema de esta sesin, actualice ProdDaysAvail como sigue: ProdCost [product] := (73.30, 52.90, 65.40); ProdRate [product] := (500, 450, 550); ProdDaysAvail [month] := (23, 20, 23, 22); Paso 6: Agregue los Vectores de Datos de Costos de Inventario y Capacidad de Inventario En la descripcin del problema se defini un costo para cada producto almacenado en el inventario y un lmite de cunto puede ser almacenado en el inventario. Adems, para representar esto, agregue un vector de datos ms al modelo; InvtCost, y tambin un nuevo dato constante InvtCapacity. Al final de la seccin DATA agregue las siguientes definiciones: InvtCost [product]:= (3.50, 4.00, 3.00); InvtCapacity := 800;

Paso 7: Agregue al Modelo Variables de Ventas e Inventarios En este modelo hay dos nuevas variables, Sales and Inventory (Ventas e Inventarios), que necesitan ser introducidas al modelo. La variable Sales (Ventas) es usada para representar cunto de cada producto es vendido en cada mes. La Variable Inventory (Inventario) es usada para representar cunto de cada producto es almacenado, en cada mes. La variable Produce (Produccin) necesita ser aumentada para incluir el ndice month (mes) que son las diferentes cantidades de cada producto que son producidas, en cada mes. En el modelo agregue las siguientes definiciones a la seccin VARIABLES: VARIABLES Produce[product, month] Inventory[product,month] Sales[product, month] -> Prod; -> Invt; -> Sale;

Como en el modelo anterior, el nombre que aparece despus del signo '->' (se lee: se hace) es una abreviacin opcional del nombre del vector. Este es usado para compensar las limitaciones del tamao del nombre de la variable de muchos solvers de PL. Paso 8: Agregue el Costo de Inventario a la Funcin Objetivo En el modelo de la sesin anterior, las ganancias totales y el costo total de produccin son incluidos en la funcin objetivo. Ahora necesita actualizar esta funcin objetivo con el ndice, month (mes), y agregue una entrada para el costo total de inventario. Como en la sesin anterior, usted usara macros que representen cada sumatoria. Cuando calcula la ganancia total, necesitar referirse a la variables Sales (Ventas) en lugar de la variable Produce (Produccin) y agregue el ndice month (mes) a la suma. Para el costo total de produccin, necesitar tambin agregar la suma para incluirlo al ndice month (mes). El costo total de inventario ser definido como el costo de inventario por unidad por el nivel del inventario. Para hacer cambios en la seccin MACROS, reemplace la variable Produce (Produccin) con la variable Sales (Ventas), actualice la ganancia total y smelo al costo de produccin para incluirlo en el ndice month, y agregue una nueva definicin de macro al costo del inventario total, como sigue: MACROS TotalRevenue TotalProdCost TotalInvtCost TotalCost := := := := SUM(product , month: Price * Sales); SUM(product, month: ProdCost * Produce); SUM(product, month: InvtCost * Inventory); TotalProdCost + TotalInvtCost;

Por favor note que la macro para el costo total de produccin ha sido renombrada a TotalProdCost. Otra nueva macro; TotalCost, ha sido agregada donde usted puede sumar estas dos nuevas macros para obtener el costo total. Esto permite que la funcin objetivo permanezca sin cambios: MODEL MAX Profit = TotalRevenue - TotalCost; Paso 9: Actualice la restriccin de la Capacidad de Produccin para mltiples meses En la restriccin production capacity(Capacidad de la produccin), agregue el ndice month a la definicin de la restriccin y el resto de la restriccin permanece igual. SUBJECT TO ProdCapacity[month] -> PCap: SUM(product: Produce / ProdRate)

<=

ProdDaysAvail;

Por favor note que en MPL usted no tiene que ingresar subndices para cada ndice cuando se refiera a los vectores de datos y vectores de variables. Esto significa que usted puede fcilmente agregar ms ndices a las restricciones sin tener que cambiar de acuerdo a como usted se refera de cada vector. Paso 10: Agregue al Modelo una Restriccin de Equilibrio de Inventario Para agregar la variable Inventory (Inventario) al modelo necesita incluir una restriccin de equilibrio de inventario estndar. Esta restriccin flucta para cada producto y cada mes, especificando que la produccin, ms el inventario del mes anterior, es igual a la cantidad vendida, ms el inventario del mes actual. Agregue la siguiente restriccin InvtBal debajo de la restriccin anterior ProdCapacity:

InvtBal[product, month] -> IBal: Produce + Inventory[month-1]

Sales + Inventory;

Cuando se ingresa perodos de tiempo anteriores, como en este caso el mes anterior, MPL, le permite usar expresiones tales como [month-1]. Paso 11: Agregue al Modelo una Restriccin de Capacidad de Inventario Hay un lmite sobre cunto espacio disponible hay para el inventario. Adems, usted necesita agregar al modelo una restriccin de capacidad de inventario. En la descripcin del problema, se le dijo que cada producto toma una cantidad igual de espacio para el inventario y que puede agregar o sumar sobre l, todos los productos para obtener el espacio de inventario total usado. Agregue al modelo la siguiente definicin de la restriccin: MaxInventory[month] -> MaxI: SUM(product: Inventory) <= InvtCapacity;

Paso 12: Actualice la Cota Superior de la Demanda Mxima para usar la Variable 'Ventas' En la cota superior de la demanda mxima usted necesita actualizarla incluyendo la variable Sales (Ventas) en lugar de Produce (Produccin) como se muestra abajo: BOUNDS Sales <= Demand;

Despus que usted ha terminado de ingresar el modelo, debe guardarlo, eligiendo Save(Guardar) del men File(Archivo).

Resolver el Modelo y Analizar la Solucin


El prximo paso es resolver el modelo Planning4, eligiendo Solve CPLEX del men Run (Ejecutar). S usted ha ingresado los datos correctamente, MPL visualizar el mensaje Optimal Solution Found (la solucin ptima fu encontrada). Si hay algn mensaje de error de sintxis, por favor verifique la formulacin del modelo detallado que ingreso anteriormente en esta sesin. Despus de resolver el modelo, MPL automticamente crear un archivo estndar de la solucin llamado 'Planning4.sol'. Puede visualizar el archivo de la solucin en una ventana View (Ver) presionando el botn View en la parte inferior de la ventana de estado Status Window. Un listado completo de la solucin es mostrado a continuacin. MPL Modeling System Copyright (c) 1988-2001, Maximal Software, Inc. ------------------------------------------------------------------------------MODEL STATISTICS Problem name: Filename: Date: Time: Parsing time: Solver: Objective value: Iterations: Solution time: Constraints: Variables: Nonzeros: Density: SOLUTION RESULT Optimal solution found MAX Profit = 2246007.2727 Production_Planning4 Planning4.mpl April 17, 1998 22:52 0.15 sec CPLEX 2246007.27273 26 0.04 sec 20 36 69 10 %

MACROS Macro Name Values ----------------------------------------------TotalRevenue 5386045.4545 TotalProdCost 3139078.1818 TotalInvtCost 960.0000 TotalCost 3140038.1818 ----------------------------------------------DECISION VARIABLES VARIABLE Produce [product,month] : product month Activity Reduced Cost ---------------------------------------------------A1 Jan 4300.0000 0.0000 A1 Feb 4200.0000 0.0000 A1 Mar 4409.0909 0.0000 A1 Apr 3545.4545 0.0000 A2 Jan 1800.0000 0.0000 A2 Feb 0.0000 -3.6667 A2 Mar 0.0000 -4.7889 A2 Apr 0.0000 -0.7889 A3 Jan 5720.0000 0.0000 A3 Feb 6380.0000 0.0000 A3 Mar 7800.0000 0.0000 A3 Apr 8200.0000 0.0000 ---------------------------------------------------VARIABLE Inventory[product,month] : product month Activity Reduced Cost ---------------------------------------------------A1 Jan 0.0000 -0.2000 A1 Feb 0.0000 -2.4900 A1 Mar 0.0000 -3.5000 A1 Apr 0.0000 -123.5000 A2 Jan 0.0000 -4.0000 A2 Feb 0.0000 -4.0000 A2 Mar 0.0000 0.0000 A2 Apr 0.0000 -108.0000 A3 Jan 320.0000 0.0000 A3 Feb 0.0000 -2.0818 A3 Mar 0.0000 -3.0000 A3 Apr 0.0000 -110.8545 ---------------------------------------------------VARIABLE Sales[product,month] : product month Activity Reduced Cost ---------------------------------------------------A1 Jan 4300.0000 4.3100 A1 Feb 4200.0000 1.0100 A1 Mar 4409.0909 0.0000 A1 Apr 3545.4545 0.0000 A2 Jan 1800.0000 0.0000 A2 Feb 0.0000 0.0000 A2 Mar 0.0000 0.0000 A2 Apr 0.0000 -4.0000 A3 Jan 5400.0000 11.0636 A3 Feb 6700.0000 8.0636 A3 Mar 7800.0000 7.1455 A3 Apr 8200.0000 7.1455 ----------------------------------------------------

CONSTRAINTS CONSTRAINT ProdCapacity[month] : month Slack Shadow Price ------------------------------------------Jan 0.0000 -21195.0000 Feb 0.0000 -22845.0000 Mar 0.0000 -23350.0000 Apr 0.0000 -23350.0000 ------------------------------------------CONSTRAINT InvtBal[product,month] : product month Slack Shadow Price ---------------------------------------------------A1 Jan 0.0000 115.6900 A1 Feb 0.0000 118.9900 A1 Mar 0.0000 120.0000 A1 Apr 0.0000 120.0000 A2 Jan 0.0000 100.0000 A2 Feb 0.0000 100.0000 A2 Mar 0.0000 100.0000 A2 Apr 0.0000 104.0000 A3 Jan 0.0000 103.9364 A3 Feb 0.0000 106.9364 A3 Mar 0.0000 107.8545 A3 Apr 0.0000 107.8545 ---------------------------------------------------CONSTRAINT MaxInventory[month] : month Slack Shadow Price ------------------------------------------Jan 480.0000 0.0000 Feb 800.0000 0.0000 Mar 800.0000 0.0000 Apr 800.0000 0.0000 ------------------------------------------END De acuerdo a la solucin, la ganancia es ahora $2.2M lo cual es considerablemente mayor que en el modelo Planning3, debido a que ahora estamos trabajando con cuatro meses. Esto viene de un total de Ingresos de $5.4M y un costo total de $3.1M, mucho de lo cual viene del costo de produccin, ya que nosotros mantenemos un Inventario bajo justo para Enero. S usted mira la variable Produce (Produccin) en la solucin, notar que estamos produciendo los productos A1 y A3 para el perodo completo que fu planificado, aunque no siempre satisfaga la demanda. El Producto A2, por el otro lado, es producido solamente con 1800 unidades en January (Enero),ya que no tiene suficiente capacidad para producir los tres productos. En Enero, el Modelo decidi producir 320 unidades extras de A3, como fueron requeridas por la demanda, para poner suficiente en el inventario tal de satisfaga la demanda de Febrero.

Sesin 5: Un Modelo de Planificacin de la Produccin con Mltiples Plantas


Cuando formulamos un modelo para compaas grandes, frecuentemente encontrar que no estn limitadas a una sola planta para producir los productos. Adems en esta sesin usted crear un modelo de planificacin de la produccin que incluye mltiples plantas. Tomar el modelo de la sesin previa y le agregar otros ndices plantas, los cuales representan a todas las plantas disponibles para producir los productos. Luego ir a travs del modelo, paso a paso y actualizar todos los vectores variables y restricciones para explicar el nuevo ndice.

Nuevos Conceptos en esta Sesin Descripcin del Problema: Un Modelo de Planificacin de la Produccin con Mltiples Plantas Formulacin del Modelo con MPL

Ingrese Nuevos Elementos al Modelo, paso a paso Resuelva el Modelo y Analice la Solucin

Nuevos Conceptos en esta Sesin


ndices de Plantas y otras Localizaciones Los ndices de Localizacin son bastante comunes cuando se formula modelos de planificacin de la produccin. Un ejemplo de un ndice de Localizacin, debe ser para representar las plantas donde la compaa produce los productos. Otros ejemplos deben incluir Almacenes, Fbricas, Centros de Distribucin, etc. Esto es comn, cuando se trabaja con modelos que incluyen ndices de localizacin, donde el embarque es permitido entre localizaciones. Esos modelos a menudo son llamados modelos de Distribucin o modelos de transporte y sern cubiertos ms tarde en otras sesiones. Archivos Externos de Datos Cuando se formula modelos pequeos y sencillos, es razonable dejar las definiciones de datos dentro del modelo. Tan pronto como empiece a trabajar con modelos multidimensionales, llegan las dificultades de su manejo y es necesario mover los datos a archivos separados. Mantenga los datos separados del modelo, mejore la legibilidad del modelo y haga ms fcil el mantenimiento de los datos. El modelo que est creando en esta sesin tiene mltiples ndices, producto, mes y planta, y vectores de datos tal como la demanda, que es bidimensional y puede ser movido a un archivo de datos separado. En el modelo, en lugar de listar todos los elementos para el vector de datos, puede usar la palabra clave DATAFILE y luego usar el nombre de los archivos de datos como se muestran abajo: Demand [product, month] := DATAFILE(&quot;Demand.dat&quot;);

Descripcin del Problema: Un Modelo de Planificacin de la Produccin con Mltiples Plantas


En esta sesin, usted crear la formulacin de un nuevo modelo de Planificacin de la Produccin que incluye mltiples plantas as como perodos mltiples, los cuales fueron presentados en la sesin 4. Lo que usted quiere, es decidir cunto producir de cada producto, para cada mes, en cada planta, as como cunto almacenar y cunto vender, para cada mes, en cada planta. En este nuevo problema tendr cuatro diferentes plantas p1, p2, p3, and p4. Cualquiera de esas plantas puede producir los tres productos. Cree un ndice llamado plants (Plantas) que contiene las cuatro diferentes plantas, y luego actualice el modelo de acuerdo a como vaya agregando al ndice los vectores aplicables. Como en la sesin previa, los precios de venta permanecen iguales para cada producto $120.00, $100.00, y $150.00, respectivamente. La demanda de los productos tambin permanece igual como en la sesin previa. Refirase a la tabla de demanda en la Sesin 3 para los datos necesarios. Ahora que tiene mltiples plantas, los costos de produccin son diferentes para cada planta. Estos datos se presentan en la tabla de abajo. Costos de produccin planta 1 planta 2 planta 3 planta 4 A1 A2 A3

$73.30 $52.90 $65.40 $79.00 $52.00 $66.80 $75.80 $52.10 $50.90 $82.70 $63.30 $53.80

La rata de produccin para cada producto es diferente en cada planta y se muestra en la tabla siguiente: Rata de produccin planta 1 planta 2 planta 3 planta 4 A1 A2 A3

500 450 450 550 450 300 450 350 300 550 400 350

Formulacin del Modelo en MPL


El listado de abajo es el modelo completo de la formulacin para Planning 5. Los agregados al modelo son resaltados en negritas para hacerle ms fcil ver los cambios con respecto al modelo de la sesin 4. TITLE Production_Planning5; INDEX product := (A1, A2, A3); month := (Jan, Feb, Mar, Apr); plant := (p1, p2, p3, p4); DATA Price[product] := (120.00, 100.00, 115.00); Demand[product, month] := DATAFILE("Demand.dat"); ProdCost[plant, product] := DATAFILE("ProdCost.dat"); ProdRate[plant, product] := DATAFILE("ProdRate.dat"); ProdDaysAvail[month] := (23, 20, 23, 22); InvtCost[product] := (3.50, 4.00, 3.00); InvtCapacity := 800; VARIABLES Produce[plant, product, month] -> Prod; Inventory[product, month] -> Invt; Sales[product, month] -> Sale; MACROS TotalRevenue := SUM(product, month: Price * Sales); TotalProdCost := SUM(plant, product, month: ProdCost * Produce); TotalInvtCost := SUM(product, month: InvtCost * Inventory); TotalCost := TotalProdCost + TotalInvtCost; MODEL MAX Profit = TotalRevenue - TotalCost; SUBJECT TO ProdCapacity[plant, month] -> PCap: SUM(product: Produce / ProdRate) <= ProdDaysAvail; InvtBal[product, month] -> IBal: SUM(plant: Produce) + Inventory[month-1] = Sales + Inventory; MaxInventory[month] -> MaxI: SUM(product: Inventory) <= InvtCapacity; BOUNDS Sales <= Demand; END

Ingrese Nuevos Elementos al Modelo Paso a Paso


Paso 1: Empiece MPL y Cree un Nuevo Modelo 1. Inicie la aplicacin MPL. 2. Elija File (Archivo) | Open (Abrir) y abra el modelo de la sesin previa Planning4.mpl. 3. Elija File (Archivo) | Save As (Guardar Como) para guardar el nuevo modelo Planning5.mpl.

Paso 2: Cambie el Ttulo del Modelo Cambie el Ttulo del modelo para que se refleje que usted trabajando con el modelo Planning5: TITLE Production_Planning5; Paso 3: Agregue al Modelo el ndice de localizacin 'plant' (planta) En este ejemplo, tiene cuatro localizaciones de planta diferentes. Cree un nuevo ndice al que llamar plant (planta). Este ndice tendr cuatro elementos p1, p2, p3, y p4 para representar cada perodo de los cuatro meses planificados como perodos. Agregue la siguiente definicin para el ndice plant (planta) a la seccin INDEX (INDICE): INDEX product := month := plant := (A1, A2, A3); (Jan, Feb, Mar, Apr); (p1, p2, p3, p4);

Paso 4: Cambie la definicin del Vector de Datos 'Demand'(Demanda) Para leer Datos desde un Archivo Externo de Datos En esta sesin, mover los valores de los datos del vector de datos bidimensional al archivo externo de datos. Cuando se trabaja con vectores de datos que tienen dos dimensiones o ms, a menudo es buena idea mover los valores de los datos a un archivo externo de datos en lugar de listar todos los nmeros directamente en el archivo del modelo. Esto mantiene los datos separados del modelo, mejorando la legibilidad del modelo, y hace ms fcil el mantenimiento de los datos. El primer vector de datos que usted quiere mover a un archivo externo de datos es el vector Demand. En la seccin DATA (DATOS), use el comando Cut (Cortar) del men Edit para remover la lista de los nmeros para el vector demanda y luego ingrese la palabra clave DATAFILE (Archivo de Datos) y el archivo Demand.dat se colocar como sigue: DATA Price [product] Demand [product, month] :=(120.00, 100.00, 115.00); :=DATAFILE("Demand.dat");

Paso 5: Cree el Archivo de Datos 'Demand.dat' El prximo paso es crear el archivo de datos Demand.dat. Primero, abra una nueva ventana del editor del modelo eligiendo New (Nuevo) en el men File (Archivo). S usted us el comando Edit (Editar) | Cut (Cortar) en el Paso 4 anterior para retirar los valores de datos, ahora puede usar el comando Edit(Editar) | Paste(Pegar) para colocar nuevamente los datos dentro del archivo de datos. De otra manera, usted puede usar la tabla de datos de la demanda de la descripcin del problema en la sesin 3 para ingresar los valores de los datos dentro del archivo de datos como sigue: ! ! ! ! ! ! Demand.dat - Demand per month for each product Demand [product,month]: Jan Feb Mar Apr ---------------------------4300, 4200, 6400, 5300, 4500, 5400, 6500, 7200, 5400, 6700, 7800, 8200

Las lneas que empiezan con marcas de exclamacin "!" son comentarios usados para mejorar su lectura. Los nmeros en el archivo de datos pueden ser separados por una coma o espacio o ambos. Despus que ha ingresado todos los datos guarde el archivo como Demand.dat en el folder del tutor. Paso 6: Aumente los vectores de Datos 'ProdCost' y 'ProdRate' para incluir el ndice 'plant' Dos de los Vectores de Datos, ProdCost y ProdRate, necesitan aumentarse para incluir el ndice plant. El vector de datos ProdCost es definido ahora por dos ndices dominio, plant (planta) y product (producto) y los valores de los datos sern obtenidos desde un archivo de datos externo. Los valores del vector de datos ProdRate tambin se obtendrn desde un archivo de datos. En el editor del modelo, agregue el ndice,

plant, para ambas declaraciones de los vectores de datos ProdCost y ProdRate, y siga con los nombres de archivos de datos ProdCost.dat yProdRate.dat respectivamente como sigue: ProdCost[plant, product] ProdRate[plant, product] ProdDaysAvail[month] InvtCost[product] InvtCapacity := := := := := DATAFILE("ProdCost.dat"); DATAFILE("ProdRate.dat"); (23, 20, 23, 22); (3.50, 4.00 3.00); 800;

Paso 7: Cree los archivos de Datos para los Vectores de Datos 'ProdCost' y 'ProdRate' Ahora abra una nueva ventana del editor seleccionando en el men File (Archivo) | New (Nuevo) para ingresar el archivo de datos. Escriba los datos desde la tabla Production Cost en la descripcin del problema como sigue: ! ! ! ! ! ! ! ProdRate.dat Items produced per day

ProdRate[plant, product]: A1 A2 A3 -----------------500, 450, 450, 550, 450, 300, 450, 350, 300, 550, 400, 350

Otra vez, las lneas que empiezan con las marcas de exclamacin "!", son comentarios usados para facilitar su lectura. Despus que ha ingresado todos los datos, guarde el archivo usando el nombre ProdCost.dat. Para la tasa de produccin cree un nuevo archivo de datos llamado ProdRate.dat, usando los valores de la tabla en la descripcin del problema. ! ! ! ! ! ! ! ProdRate.dat Items produced per day

ProdRate[plant, product]: A1 A2 A3 -----------------500, 450, 450, 550, 450, 300, 450, 350, 300, 550, 400, 350

Paso 8: Actualice la Variable 'Produce'(Produccin) para incluir el ndice 'plant'(Planta) Para determinar cunto quiere producir de cada producto, en cada planta, usted necesita agregar el ndice plant (planta) a la definicin del vector de la variable Produce (produccin) como sigue: VARIABLES Produce[plant, product, month] -> Prod; Inventory[product, month] -> Invt; Sales[product, month] -> Sale; Paso 9: Agregue el ndice 'plant'(planta) a la sumatoria 'TotalProdCost' Puesto que la variable vector Produce (produccin) ahora incluye el nuevo ndice plant, el clculo del costo total de produccin en la seccin MACROS necesita tambin ser actualizada para incluir el ndice plant: MACROS TotalRevenue TotalProdCost TotalInvtCost TotalCost := := := := SUM(product, month: Price * Sales); SUM(plant, product, month: ProdCost * Produce) ; SUM(product, month: InvtCost * Inventory); TotalProdCost + TotalInvtCost;

La funcin objetivo no cambia por si misma cuando usted est usando la misma macro de la sesin anterior. Paso 10: Agregue el ndice 'plant' a la Restriccin 'ProdCapacity' El cambio para la restriccin capacidad de produccin es muy sencillo. Agregue el ndice plant a la declaracin de la capacidad de produccin y el resto de la restriccin permanece igual. SUBJECT TO ProdCapacity[plant, month] -> PCap: SUM(product: Produce / ProdRate)

<=

ProdDaysAvail;

Paso 11: Agregue la Sumatoria de la Variable 'Produce'(Produccin) sobre el Indice 'plant'(Planta) a la Restriccin de Equilibrio de Inventario Ahora usted puede producir los productos en cualquiera de las cuatro plantas, adems, usted necesita actualizar la restriccin de equilibrio del inventario para incluir una sumatoria, sobre todas las plantas, de la variable vector Produce. InvtBal[product, month] -> IBal: SUM(plant: Produce) + Inventory[month-1] = Sales + Inventory;

Despus que ha terminado de ingresar el modelo, usted debe guardarlo eligiendo Save(Guardar) del men File(Archivo).

Resuelva el Modelo y Analice la Solucin


Puesto que hemos agregado ms ndices al modelo, el nmero de variables ha incrementado considerablemente. Normalmente, cuando se trabaja con modelos grandes, el modelador quiere incluir solo algunos de los valores en la solucin. En nuestro caso, para reducir el resultado, incluiremos solo las variables que tienen valor en la solucin diferente de cero. MPL tiene un nmero de cuadro de dilogos de opciones en el men Options (Opciones) donde usted puede cambiar los parmetros preestablecidos del programa. Uno de los cuadros de dilogo es el Solution File Options (Opciones del Archivo de Soluciones) donde usted puede ajustar lo que est incluido en el archivo de la solucin. Para cambiar lo pre establecido, tal que incluya solo valores diferentes de cero en el archivo de la solucin, haga lo siguiente: 1. Del men Options(Opciones) elija Solution File(Archivo de Soluciones) para abrir el cuadro de dilogo Options mostrado abajo:

Cuadro de Dilogo Opciones del Archivo de soluciones 2. Marque la opcin Nonzero Values Only (Solo valores diferentes de cero) haciendo Clic sobre l. 3. Cierre el Cuadro de Dilogo, presionando el botn OK. Despus que ha cambiado la opcin Nonzero Values Only (Solo Valores diferentes de cero), el prximo paso es resolver el modelo eligiendo Solve CPLEX del men Run (Ejecutar). Si todo est bien MPL visualizar el mensaje "Optimal Solution Found" (Solucin ptima Encontrada). Si hubiera algn mensaje de error de sintxis, por favor verifique la formulacin del modelo ingresado anteriormente en esta sesin.

Como los modelos que est trabajando sern muy grandes, usted tender a ver ciertas partes de la solucin en lugar del archivo completo de la solucin. Esta vez, en lugar de listar el archivo completo de la solucin, estaremos usando la ventana del rbol de definiciones del modelo para ver solo las partes de la solucin que nos interesa. La ventana de definiciones del modelo le permite ver todos los tems definidos en la formulacin del modelo en un rbol jerrquico donde cada rama corresponde a la seccin en el modelo. En MPL normalmente es una buena idea dejar la ventana de rbol abierta todo el tiempo. MPL actualizar automticamente su contenido cada vez que usted guarda su modelo. Para ver las definiciones del modelo Planning5, elija Model Definitions (Definiciones del Modelo) del men View (Ver).

Ventana Definiciones del Modelo Planning5 Desde la ventana de rbol usted puede seleccionar alguno de los items definidos en el modelo para ver sus valores actuales de ese item. Por ejemplo, para ver los valores de la variable Produce, haga doble click sobre el item Produce en el rbol, o seleccionelo y presione el botnView(Ver). Esto visualizar una ventana conteniendo solo los valores de la variable Produce(Produccin). VARIABLE Produce[plant,product,month] : plant product month Activity Reduced Cost ----------------------------------------------------------p1 A1 Jan 4300.0000 0.0000 p1 A1 Feb 4200.0000 0.0000 p1 A1 Mar 6400.0000 0.0000 p1 A1 Apr 5300.0000 0.0000 p2 A2 Jan 4500.0000 0.0000 p2 A2 Feb 5400.0000 0.0000 p2 A2 Mar 6500.0000 0.0000 p2 A2 Apr 7200.0000 0.0000 p3 A3 Jan 5400.0000 0.0000 p3 A3 Feb 6000.0000 0.0000 p3 A3 Mar 6900.0000 0.0000 p3 A3 Apr 6600.0000 0.0000 p4 A3 Feb 700.0000 0.0000 p4 A3 Mar 900.0000 0.0000 p4 A3 Apr 1600.0000 0.0000 ----------------------------------------------------------S usted est mirando los valores de las actividades para la variable Produce (Produccin), ver que esta vez estamos satisfaciendo la demanda para todos los productos, puesto que ahora tenemos suficiente capacidad. El modelo decide qu plantas y para qu productos son usadas. Por ejemplo, la planta p1 es usada para producir el producto A1, la planta p2 es usada para el producto A2, y la planta p3 y p4 son usadas para el producto A3.

S usted va a la ventana de rbol otra vez y abre una ventana para la restriccin ProdCapacity usted obtendr los siguientes valores como solucin. CONSTRAINT ProdCapacity[plant,month] : plant month Slack Shadow Price -------------------------------------------------p1 Jan 14.4000 0.0000 p1 Feb 11.6000 0.0000 p1 Mar 10.2000 0.0000 p1 Apr 11.4000 0.0000 p2 Feb 8.0000 0.0000 p2 Mar 8.5556 0.0000 p2 Apr 6.0000 0.0000 p3 Jan 5.0000 0.0000 p4 Jan 23.0000 0.0000 p4 Feb 18.0000 0.0000 p4 Mar 20.4286 0.0000 p4 Apr 17.4286 0.0000 -------------------------------------------------Aqu hay mucha holgura para cada planta y cada mes en la restriccin de la capacidad de produccin. Esto puede ser interpretado como que nosotros podemos producir una cantidad ms de los productos, pero ello no es necesario cuando ya estamos satisfaciendo la demanda. Puesto que la restriccin de la capacidad de la produccin usa los das de produccin como una unidad de medida, los valores de holgura representan cuntos das por mes cada una de las plantas est inactiva u ociosa.

Sesin 6: Aumentando el Modelo para Permitir Embarques entre las Plantas


En la sesin 5, usted encontr un modelo para una compaa de produccin que usa mltiples plantas para producir sus productos. Lo que usted debe notar acerca del modelo es que mientras que cada una de las diferentes plantas puede ser usada para producir individualmente, todas las ventas e inventarios fueron manejadas colectivamente, desde un origen comn para toda la compaa. Ahora ampliar ese modelo para permitir que cada planta venda los productos y mantenga inventario individualmente. Adems, para satisfacer la demanda en la manera ms eficiente, los productos pueden ser embarcados entre las plantas, segn se necesite. Para ampliar el modelo usted necesitar incluir dos nuevos ndices ficticios, fromplant, y toplant, los cuales representan las plantas origen y las plantas destino. Tambin actualizar las variables Inventory y Sales para incluirlas en el ndice plant, as como cada planta puede ahora vender los productos y mantener inventario cada uno independientemente del otro.

Nuevos Conceptos en esta Sesin Descripcin del Problema: Permite Embarques entre las Plantas Formulacin del Modelo con MPL Ingrese nuevos Elementos al Modelo Paso a Paso Resuelva el Modelo y Analice la Solucin

Nuevos Conceptos en esta Sesin


Modelos de Transporte Los Modelos que permiten embarques entre localizaciones son algunas veces llamados Modelos de Distribucin o de Transporte. Normalmente, en modelos de transporte, usted tiene orgenes con cierta disponibilidad, destinos con ciertos requerimientos, y usted necesita embarcar los productos desde esos orgenes a esos destinos. En algunos casos, usted tiene modelos de transporte con mltiples niveles. Por ejemplo, pueden haber embarques desde las plantas hacia los depsitos, y desde esos depsitos a las tiendas de ventas al por menor. Modelos de Transbordo Otro grupo de modelos de distribucin son los modelos de transbordo. Esos modelos tpicamente surgen cuando usted tiene mltiples localizaciones, donde se producen bienes y tambin son centros de demanda.

Puesto que no hay orgenes ni destinos especficos, usted puede embarcar desde una localizacin a cualquier otra localizacin. ndices Ficticios Los ndices Ficticios son muy usados cuando usted necesita definir un vector, el cual usa el mismo ndice ms de una vez, como un subndice. Cuando se embarcan los productos entre plantas usted necesita crear una variable vector, que representa cunto embarcar entre las plantas. Puesto que las plantas origen y plantas destino vienen del mismo conjunto de plantas, usted necesita dos ndices ficticios para las plantas. El primer ndice ficticio es requerido para representar las plantas origen, y el segundo ndice ficticio es requerido para representar las plantas destino. Usando Condiciones Where (Dnde) sobre las Variables Vector Algunas veces, cuando se trabaja con variables vector multidimensionales encontrar casos donde no todos los elementos del vector son vlidos, o tienen algn significado. Por ejemplo, en los modelos de transbordo tendra poco sentido embarcar un producto de cierta parte de la planta a esa misma planta. En esos casos, se usa la condicin WHERE (Dnde) sobre la variable para eliminar elementos innecesarios. Por ejemplo, en un modelo de transbordo puede eliminar la posibilidad de embarcar a la misma localizacin, definiendo la variable como sigue: VARIABLES Ship[fromplant,toplant] WHERE (fromplant <> toplant); En este caso, la condicin (fromplant <> toplant) elimina todos los elementos del vector, donde la planta origen es la misma que la planta destino. En algunos casos, hay elementos que necesitan ser excluidos cuando no estn basados sobre los valores de los ndices. Ellos deben estar basados en algn vector de datos en el modelo. Normalmente, se tiene un vector costo conteniendo cunto es el costo de embarcar entre las plantas. Para esas plantas, s el embarque entre ellas no es factible, puede ingresar un valor especial para el costo, tal como cero, para usarlo como un identificador. Luego, en la definicin de la variable, puede usar este vector de datos para excluir las rutas de embarque que no son factibles, como sigue: VARIABLES Ship[fromplant,toplant] WHERE (ShipCost[fromplant,toplant] > 0); Restricciones de Equilibrio de Plantas Cuando se trabaja con modelo de transbordo, necesita asegurarse que la cantidad de productos embarcados a una planta, ms cunto es producido y cunto es retirado del inventario, debe ser igual a cunto es embarcado desde la planta, ms cunto es vendido y cunto ha quedado en inventario. En pocas palabras, cada cosa que llega a la planta debe ser igual a lo que sale de la planta. Esta clase de restricciones es normalmente llamada Restricciones de Equilibrio de plantas. A continuacin vemos un ejemplo simple de una restriccin de equilibrio de planta: PlantBal[plant, product, month]: Produce + Inventory[month-1] + SUM(fromplant: Ship[fromplant, toplant:=plant]) = Sales + Inventory + SUM(toplant: Ship[fromplant:=plant, toplant]); Notar que esta restriccin es similar a la restriccin de equilibrio de inventario que usted encontr en sesiones anteriores. La nica diferencia es que ahora tiene que tomar en cuenta que estamos embarcando a y desde cada una de las plantas ingresando una suma sobre cada una de las plantas para la variable Ship (Embarque). La asignacin del ndice 'toplant:=plant', en la primera suma, nos permite especificar que el subndice toplant debe tomar el valor del subndice plant para la restriccin PlantBal. Esta suma adiciona todos los embarques de cada una de las plantas a una planta en particular en esa restriccin. De manera similar, la asignacin del ndice 'fromplant:=plant', en la segunda suma, especifica que el subndice fromplant debe tomar el valor del subndice plant.

Descripcin del Problema: Adiciones para Permitir Embarques entre Plantas


En esta sesin, un nuevo modelo ser creado donde cada planta acta ahora separadamente como un centro de demanda para esos productos, y puede tambin mantener inventario. Usar el modelo creado en la Sesin 5, y haga las adiciones necesarias y luego actualcelo. Puesto que cada planta puede vender los productos, ahora tenemos una demanda diferente para cada planta, as como tambin para cada producto y cada mes. La demanda est dada en la siguiente tabla: Tabla de Demanda

Plant Product Jan A1 p1 A2 A3 A1 p2 A2 A3 A1 p3 A2 A3 A1 p4 A2 A3

Feb Mar Apr

4300 4200 6400 5300 4500 5400 6500 7200 5400 6700 7800 8200 5100 6200 5400 7600 6300 7100 5200 6300 4800 6500 5000 7200 4100 6100 4700 5800 5300 5200 5700 4100 4200 4100 5200 6300 4300 4100 5300 4500 5300 6400 4200 6200 5600 5200 3800 4100

Estos datos tienen tres dimensiones, plantas, productos y meses. En modelos de programacin Lineal es muy tpico tener datos con dimensiones mltiples, posiblemente hasta ocho o ms. En la prxima sesin, actualizaremos los datos de la demanda para incluir una dimensin ms; mquinas, creando as un vector de cuatro dimensiones. La capacidad del inventario es ahora diferente para cada planta. Tenemos cuatro valores para la capacidad del inventario, uno para cada planta, 800, 400, 500, y 400 respectivamente. Puesto que ahora tenemos mltiples plantas, cada una de las cuales puede mantener su inventario, ahora tenemos diferentes costos de inventario para cada planta y cada producto. Los nuevos valores de costos para el inventario se muestran a continuacin:

Inventory Cost p1 p2 p3 p4

A1

A2

A3

$8.50 $7.00 $6.50 $9.80 $9.80 $9.80 $7.50 $7.50 $7.50 $9.30 $8.00 $6.50

Finalmente, puesto que estamos permitiendo embarques entre las plantas, hay ciertos costos involucrados para embarcar un producto, como se muestra en la tabla que sigue:

Shipping Cost

p1

p2

p3

p4

p1 p2 p3 p4

$16.00

$15.00 $21.00 $13.00 $12.00 $12.00 $15.00 -

$14.00 $17.00

$21.00 $13.00 $10.00

Como usted puede ver, no hay valores en la tabla donde la planta origen es la misma que la planta destino. Esto es porque no hay ningn beneficio embarcar a la misma planta.

Formulacin del Modelo en MPL


El listado de abajo es la formulacin del modelo completo para Planning6. Las adiciones al modelo estn resaltadas en negrita para hacer ms fcil que se vean los cambios respecto al modelo de la Sesin 5. TITLE Production_Planning6; INDEX product month plant fromplant toplant := := := := := (A1, A2, A3); (Jan, Feb, Mar, Apr); (p1, p2, p3, p4); plant; plant;

DATA Price[product] Demand[plant, product, month] ProdCost[plant, product] ProdRate[plant, product] ProdDaysAvail[month] InvtCost[plant, product] InvtCapacity[plant] ShipCost[fromplant, toplant]

:= := := := := :=

(120.00, 100.00, 115.00); DATAFILE("Demand6.dat"); DATAFILE("ProdCost.dat"); DATAFILE("ProdRate.dat"); (23, 20, 23, 22); DATAFILE("InvtCost.dat");

:= (800, 400, 500, 400); := DATAFILE ("ShipCost.dat");

VARIABLES Produce[plant, product,month] -> Prod; Inventory[plant, product, month] -> Invt; Sales[plant,product, month] -> Sale; Ship[product, month, fromplant, toplant] WHERE (fromplant <> toplant); MACROS TotalRevenue TotalProdCost TotalInvtCost TotalShipCost Ship); TotalCost MODEL MAX Profit= TotalRevenue - TotalCost; SUBJECT TO ProdCapacity[plant, month] -> PCap: SUM(product: Produce / ProdRate) := := := := SUM(plant, product,month: Price * Sales); SUM(plant, product, month: ProdCost* Produce); SUM(plant, product, month: InvtCost * Inventory); SUM(product, month, fromplant,toplant: ShipCost *

:= TotalProdCost + TotalInvtCost + TotalShipCost;

<=

ProdDaysAvail;

PlantBal[plant, product, month] -> PBal:

Produce + Inventory[month-1] + SUM(fromplant:Ship[fromplant, toplant:=plant]) = Sales + Inventory + SUM(toplant: Ship[fromplant:=plant,toplant]); MaxInventory[plant, month] -> MaxI: SUM(product: Inventory) <= InvtCapacity; BOUNDS Sales < Demand ; END

Ingrese Nuevos Elementos al Modelo Paso a Paso


Paso 1: Inicie MPL y Cree un Modelo Nuevo 1. Inicie la aplicacin MPL. 2. Elija File(Archivo) | Open (Abrir) y abra el modelo de la sesin anterior Planning5.mpl. 3. Elija File(Archivo) | Save As(Guardar Como) para guardarlo como un nuevo archivo del modelo Planning6.mpl. Paso 2: Cambie el Ttulo al Modelo Cambie el Ttulo al modelo para que refleje que se est trabajando con el modelo Planning6: TITLE Production_Planning6; Paso 3: Agregue al Modelo ndices Ficticios para las Plantas Origen y Plantas Destino En esta sesin, expandiremos el modelo para permitir embarques entre las plantas. Los Alias indexes (ndices ficticios) son usados cuando se necesita definir un vector, el cual se refiere al mismo ndice ms de una vez, como un subndice. Los ndices ficticios son una copia exacta del ndice definido previamente. En este caso, est creando una variable vector representando cunto embarcar entre las plantas. Lo que significa que necesita dos ndices ficticios para representar las plantas origen y las plantas destino. Agregue las siguientes definiciones para los nuevos ndices ficticios que se llamarn fromplant y toplant al final de la seccin INDEX: INDEX product month plant fromplant toplant := := := := := (A1, A2, A3); (Jan, Feb, Mar, Apr); (p1, p2,p3, p4); plant; plant;

Paso 4: Actualice el Vector de Datos 'Demand' para incluir el ndice 'plant' Ahora tenemos una demanda diferente para cada planta. La definicin para el vector de datos Demand necesita ser aumentado para incluir el ndice plant. En el editor del modelo, agregue el ndice plant al vector de datos Demand y cambie el nombre del archivo a Demand6.dat. DATA Price[product] := (120.00, 100.00, 115.00); Demand[plant, product, month] := DATAFILE("Demand6.dat"); Puesto que el vector Demand tiene tres ndices, el archivo de datos necesita ser actualizado. Adems, usted est creando un nuevo archivo de datos llamado 'Demand6.dat' usando los valores de datos de la tabla en la descripcin del problema dado anteriormente en esta sesin. Ingrese los valores de los datos al archivo de datos, como sigue:

! ! Demand6.dat - Demand for each product and each plant ! ! Demand[plant,product,month]: ! ! Jan Feb Mar Apr ! --------------------------!plant 1: 4300, 4200, 6400, 5300, 4500, 5400, 6500, 7200, 5400, 6700, 7800, 8200, !plant 2: 5100, 6200, 5400, 7600, 6300, 7100, 5200, 6300, 4800, 6500, 5000, 7200, !plant 3: 4100, 6100, 4700, 5800, 5300, 5200, 5700, 4100, 4200, 4100, 5200, 6300, !plant 4: 4300, 4100, 5300, 4500, 5300, 6400, 4200, 6200, 5600, 5200, 3800, 4100 Cuando se tiene tres dimensiones de datos en los archivos de datos, liste los valores de los datos en el mismo orden que los ndices fueron definidos en el vector de datos del modelo. Por ejemplo, en el archivo de datos de arriba Demand6, el ndice que est ms a la izquierda es el ndice plant, seguido por el ndice product y el ndice month. Paso 5: Aumente el Vector de Datos 'InvtCost' y el Dato Constante 'InvtCapacity' Para Incluir el Indice 'plant' Puesto que ahora se puede almacenar inventarios en cada planta, se necesita actualizar el costo del inventario y los datos de la capacidad del inventario para incluir el ndice plant. En el editor del modelo, agregue el ndice plant en la declaracin del vector de datos InvtCost y el dato constante InvtCapacity. Luego, para el vector de datos InvtCost elimine la lista de nmeros y reemplcelo con la palabra clave DATAFILE y el nombre de archivo 'InvtCost.dat.' Para el InvtCapacity elimine el valor 800 y reemplcelo con la lista de cuatro valores, uno por cada planta, tomndolo de la descripcin del problema anterior de esta sesin. InvtCost[plant, product] := DATAFILE("InvtCost.dat"); InvtCapacity[plant] := (800, 400, 500, 400); Despus, necesita crear un nuevo archivo de datos llamado 'InvtCost.dat' usando los valores de costos de la tabla de costos del inventario de la descripcin del problema. Ingrese los valores de los datos al archivo de datos, como sigue: ! ! InvtCost.dat - Inventory cost per item a month ! ! InvtCost [plant,product]: ! ! A1 A2 A3 ! ----------------------8.50, 7.00, 6.50 9.80, 9.80, 9.80 7.50, 7.50, 7.50 9.30, 8.00, 6.50 Paso 6: Agregue un Vector de Datos para los Costos de Embarque Hay ciertos costos involucrados en embarcar productos entre plantas. En el editor del modelo, agregue un nuevo vector de datos llamadoShipCost definido sobre los ndices ficticios fromplant y toplant seguido por la palabra clave DATAFILE y el nombre de archivo ShipCost.dat. ShipCost[fromplant, toplant] := DATAFILE("ShipCost.dat");

Despus, necesita crear un nuevo archivo de datos llamado ShipCost.dat conteniendo los costos figurados de embarque entre las plantas proporcionados en la descripcin del problema. Ingrese los valores de los datos para el archivo de datos, como sigue: ! ! ShipCost.dat - Shipping costs from plant to plant ! ! ShipCost [fromplant, toplant] ! 0, 15.00, 21.00, 13.00, 16.00, 0, 12.00, 12.00, 14.00, 17.00, 0, 15.00, 21.00, 13.00, 10.00, 0, Paso 7: Agregue una Variable Vector para Embarques entre Plantas Estamos permitiendo embarques entre plantas, adems, se necesita crear una nueva variable que decida cunto debe ser embarcado de cada producto por cada mes. Esta variable vector ser definida sobre los ndices ficticios fromplant y toplant como tambin los ndices product y month. Agregue la siguiente definicin a la variable vector Ship de la seccin VARIABLES: Ship[product, month, fromplant, toplant] WHERE (fromplant <> toplant); Puesto que no queremos embarcar un producto de una planta a la misma planta, estamos usando la condicin WHERE para eliminar todos los elementos del vector donde la planta origen es la misma que la planta destino. Paso 8: Agregue el costo Total de Embarque a la Funcin Objetivo En la seccin MACROS agregue una nueva definicin para el costo total de llamada TotalShipCost y actualice la macro TotalCost para incluir la nueva macro como sigue: embarque

TotalShipCost := SUM(product, month, fromplant, toplant: ShipCost * Ship); TotalCost := TotalProdCost + TotalInvtCost + TotalShipCost; Note que la actual funcin objetivo no necesita ser cambiada a la macro TotalCost que contiene todos los cambios. Paso 9: Aumente la Restriccin de Equilibrio de Inventario a la Restriccin de Equilibrio de Planta, Agregando la Variable 'Ship' Puesto que ahora se permiten embarques entre las plantas, se necesita aumentar la restriccin de equilibrio de inventario del modelo anterior a la restriccin de equilibrio de planta. Primero, cambie el nombre de la restriccin de InvtBal a PlantBal y agregue el ndice Plant a la declaracin. Luego, puesto que la restriccin est ahora declarada sobre el ndice Plant no tenemos que sumar sobre el ndice Plant para la variable Produce una vez ms. PlantBal[plant, product, month] -> PBal: Produce + Inventory[month-1] + SUM (fromplant:Ship[fromplant, toplant:=plant]) = Sales + Inventory + SUM(toplant: Ship[fromplant:=plant, toplant]); Sobre el lado izquierdo, donde estamos poniendo junto todo lo que est llegando a la planta, agregue una suma para agregar todos los embarques desde cada una de las plantas a la planta actual de la restriccin. Dentro de la suma, ingrese la variable Ship con la planta destino tomando el valor del actual ndice plant. Por el lado derecho, donde estamos poniendo junto todo lo que est saliendo de la planta, agregue otra suma para agregar todos los embarques de la planta actual a cada una de las otras plantas. Dentro de la suma ingrese la variable Ship esta vez con la planta origen tomando el valor del ndice actual plant de la restriccin.

Resuelva el Modelo y Analice la Solucin


El prximo paso es resolver el modelo Planning6 eligiendo Solve CPLEX del men Run. S todo est bien MPL visualizar el mensaje "Optimal Solution Found"(Solucin ptima Encontrada). Si hubiera algn error de sintxis, por favor verifique y compare la formulacin que ingres con el modelo detallado anteriormente en esta sesin. Usar la ventana de definiciones otra vez como en la Sesin 5 para mirar las partes de la solucin en que estamos interesados. Para abrir la ventana de definicin del modelo para el modelo Planning6 elija Model Definitions (Definiciones del Modelo) del men View (Ver).

Ventana rbol de Definicin del Modelo Planning6 Model Para mirar los valores de la variable Produce, haga doble clic sobre el item Produce en el rbol, o seleccione el item y presione el botn View. Esto visualizar una ventana conteniendo solo los valores de la variable Produce como se muestra a continuacin. VARIABLE Produce[plant,product,month] : plant product month Activity Reduced Cost ----------------------------------------------------------p1 A1 Jan 4300.0 0.0 p1 A1 Feb 4200.0 0.0 p1 A1 Mar 6400.0 0.0 p1 A1 Apr 5300.0 0.0 p1 A2 Jan 1080.0 0.0 p1 A3 Jan 5400.0 0.0 p1 A3 Feb 5220.0 0.0 p1 A3 Mar 4590.0 0.0 p1 A3 Apr 5130.0 0.0 p2 A1 Jan 5100.0 0.0 p2 A1 Feb 6200.0 0.0 p2 A1 Mar 5400.0 0.0 p2 A1 Apr 7600.0 0.0 p2 A2 Jan 6177.3 0.0 p2 A2 Feb 3927.3 0.0 p2 A2 Mar 5931.8 0.0 p2 A2 Apr 3681.8 0.0 p3 A1 Jan 4100.0 0.0 p3 A1 Feb 6100.0 0.0 p3 A1 Mar 4700.0 0.0 p3 A1 Apr 5800.0 0.0 p3 A3 Jan 4166.7 0.0 p3 A3 Feb 1933.3 0.0

p3 A3 Mar 3766.7 0.0 p3 A3 Apr 2733.3 0.0 p4 A1 Jan 3850.0 0.0 p4 A1 Feb 2828.6 0.0 p4 A1 Mar 5300.0 0.0 p4 A1 Apr 4500.0 0.0 p4 A3 Jan 5600.0 0.0 p4 A3 Feb 5200.0 0.0 p4 A3 Mar 4677.3 0.0 p4 A3 Apr 4836.4 0.0 ----------------------------------------------------------Como puede ver, la produccin est ahora distribuida entre las plantas de una manera ms efectiva. Ciertos productos son claramente mejores de producir en una planta en particular debido a que se toma en cuenta el costo de produccin y el costo de embarque. Por ejemplo, el producto A2 es producido en las plantas p1 y p2, pero no en p3 y p4, mientras que el producto A3 es producido en las plantas p1, p3 y p4. El producto A1 es ms econmicamente producido en todas plantas. Si va a la ventana del rbol otra vez y abre una ventana para la variable Ship obtendr los siguientes valores en la solucin: VARIABLE Ship[product,month,fromplant,toplant] : product month fromplant toplant Activity Reduced Cost -----------------------------------------------------------------------A2 Mar p2 p4 331.8 0.0 A3 Mar p4 p3 877.3 0.0 A3 Apr p4 p3 736.4 0.0 -----------------------------------------------------------------------Como se puede ver, el modelo propone que debemos embarcar el producto A2 desde la planta p2 a la planta p4. De manera similar, A3 es embarcado desde la planta p4 a la planta p3. Claramente, las plantas p2 y p4 tienen capacidad extra a un costo bajo que puede ser usado para producir bienes que las plantas p4 y p3 necesitan.

Sesin 7: Formulando Modelos con Datos Dispersos en MPL


A menudo, cuando se trabaja con modelos grandes, los datos del modelo tienden a no ser compactos como fueron trabajados en el modelo anterior, sino ms bien en un formato disperso. Los datos compactos pueden ser percibidos de la misma manera como los datos en una hoja de clculo. Ordinariamente, este es usado para vectores de datos con no ms de dos dimensiones, donde cada columna y cada fila es llenada con datos. Los datos Dispersos, por otro lado, tpicamente involucra mltiples dimensiones, pero no necesariamente contienen valores para cada combinacin de los ndices. Los datos dispersos son usualmente almacenados en formato de tabla, donde cada columna representa un ndice o un valor de dato. Cuando se trabaja con grandes conjunto de datos dispersos, es comn trabajar con los datos en un formato de tabla. Esto le permite fcilmente saltarse ciertas combinaciones de los ndices, que no son vlidos, omitindolos en la tabla.

Nuevos Conceptos en esta Sesin Descripcin del Problema: Un Modelo de Planificacin con Mltiples Mquinas en cada Planta Formulacin del Model con MPL Ingrese Nuevos Elementos al Modelo Paso a Paso Resuelva el Modelo y Analice la solucin

Nuevos Conceptos en esta Sesin


ndices de Equipos Algunas veces, cuando formulamos modelos de planificacin de la produccin, la decisin involucra cules mquinas usar para producir los productos. Como todas las mquinas no estn disponibles en cada planta, este presenta una dispersin en el modelo. Cunado definimos los datos y los vectores de las variables del modelo, utilizamos esa dispersin para asegurar que el tamao del modelo no sea tan grande. Esto puede

ser logrado, usando un comando estndar WHERE (Dnde) sobre el vector de datos, o usando el operador IN para asociar los ndices relevantes. Usando el Operador IN El operador IN en MPL le permite seleccionar uno de los ndices dominio de un ndice multidimensional. Por ejemplo, si tiene un ndice multidimensional que especifique cules mquinas estn disponibles y en qu plantas, usted puede usar el operador IN para sumar sobre todas las mquinas para esa planta en particular. INDEX plant machine := (p1, p2, p3, p4); := (m11, m12, m13, m21, m22, m31, m32, m41); :=

PlantMach[plant,machine]

(p1.m11, p1.m12, p1.m13, p2.m21, p2.m22, p3.m31, p3.m32, p4.m41); En el ejemplo de arriba, hemos definido un ndice multidimensional llamado PlantMach que asocia a las plantas con las correspondientes mquinas. El ndice PlantMach puede ser usado selectivamente, para elegir slo las mquinas que estn disponibles en una planta en particular. Por ejemplo: SUBJECT TO PlantCapacity[plant] : SUM(machine IN PlantMach: Produce[machine])

<=

MaxCapacity[plant];

En el ejemplo de arriba, sumamos todo cunto es producido en cada mquina para una planta en particular. Luego nos aseguramos que la produccin total est limitada a la capacidad mxima. Archivos ndices As como puede almacenar datos en un archivo externo de datos, tambin puede almacenar ndices en archivos de ndices externos. Los archivos de ndices le permiten almacenar los elementos de un ndice en un archivo, en lugar de especificarlos directamente en el modelo. Cuando est definiendo un ndice con un archivo ndice use la palabra clave INDEXFILE con un nombre de archivo en lugar del listado usual de los elementos. Por ejemplo: INDEX product month plant := INDEXFILE("Product.idx"); := INDEXFILE("Month.idx"); := INDEXFILE("Plant.idx");

El archivo ndice es justamente un archivo de texto estndar que contiene un listado de los elementos ndices para un ndice particular. Usted puede separar los elementos en el archivo con una coma, un espacio o ambos. Por ejemplo aqu hay un archivo de ndice de muestra para el ndice product (producto). ! Product.idx - Index element for the product index A1, A2, A3

Archivo de Datos Dispersos Generalmente, cuando se trabaja con modelos dispersos, los datos involucrados son muy grandes y vienen de otras aplicaciones, tal como base de datos corporativos o de escritorio. En las sesiones anteriores, los datos fueron tecleados en el archivo del modelo o almacenados en un archivo de datos compactos. Cuando trabajamos con conjuntos de datos grandes, se necesita un mtodo ms eficiente para importar los datos a MPL desde otras aplicaciones. Para este propsito, MPL tiene la habilidad de leer los datos desde un archivo de datos dispersos. Este archivo le permite ingresar los datos en un formato de tabla estndar, el cual es ms cercano a las actuales caractersticas de los datos, por ejemplo, desde una base de datos relacional. Un ejemplo de un archivo de datos disperso puede ser como sigue: ProdCost[plant, machine, product] := SPARSEFILE("ProdCost.dat");

El archivo ProdCost.dat contiene los datos en el formato de columnas orientadas con los ndices en las tres primeras columnas y los correspondientes valores de datos al final de cada fila, como sigue: p1, p1, p1, p4, p4, m11, m11, m12, . m41, m41, A1, A2, A3, A2, A3, 73.30, 52.90, 65.40, 63.30, 53.80

Por favor note, que MPL le permite tambin almacenar mltiples columnas de datos en un simple archivo de datos dispersos. Puede especificar cul columna, agregando una coma y el nmero de columna de los datos despus del nombre de archivo que est dentro del parntesis. ProdCost [plant, machine, product] := SPARSEFILE("ProdCost.dat", 2);

El uso de archivos de datos dispersos es comn en el modelado del mundo real. Esos archivos pueden terminar siendo muy grandes, con mltiples ndices y contener cantidades de datos. Frecuentemente, se tendr mltiples archivos ndices y archivos de datos dispersos almacenando todos los datos y dejando que el archivo del modelo slo tenga las sentencias actuales del modelo, tal como las variables, funcin objetivo y las restricciones.

Descripcin del Problema: Un Modelo de Planificacin con Mltiples Mquinas para cada Planta
En esta sesin, actualizar el modelo para tener mltiples mquinas distribuidas entre las plantas. Usar el modelo creado en la sesin 6, y haga las adiciones y actualizaciones necesarias. Puesto que ahora tenemos diferentes mquinas dentro de cada planta, el costo de produccin y la tasa de produccin tienen ahora diferentes valores para cada mquina. La siguiente es una tabla con una sola fila para cada planta, combinacin de productos y mquinas que son aplicables. Tabla de Demanda
Plant Product Product ProdCost ProdRate m11 p1 m11 m12 m13 m21 p2 m21 m22 m31 p3 m31 m32 m32 m41 p4 m41 m41 A1 A2 A3 A3 A1 A3 A2 A1 A3 A1 A2 A1 A2 A3 $73.30 $52.90 $65.40 $47.60 $79.00 $66.80 $52.00 $75.80 $50.90 $79.90 $52.10 $82.70 $63.30 $53.80 500 450 550 350 550 450 300 450 300 400 350 550 400 350

La decisin de Produccin, cunto producir de cada producto, necesita tomarse en cuenta que ahora tenemos mltiples mquinas. Adems, se actualizar la variable Produce(Produccin) para incluir el ndice machine (Mquina) y luego usar la condicin WHERE para excluir los elementos que no son aplicables, tal como la planta p1, mquina m11, y producto A3.

Formulacin del Modelo con MPL


El listado de abajo es la formulacin del modelo completo Planning7. Las adiciones al modelo son resaltadas en negritas para hacer ms fcil ver los cambios con respecto al modelo de la sesin 6.

TITLE Production_Planning7; INDEX product := (A1, A2, A3); month := (Jan, Feb, Mar, Apr); plant := (p1, p2, p3, p4); toplant := plant; fromplant := plant; machine := (m11, m12, m13, m21, m22, m31, m32, m41); DATA Price[product] := (120.00, 100.00, 115.00); Demand[plant, product, month] := DATAFILE("Demand6.dat"); ProdCost[plant, machine, product] := SPARSEFILE("Produce.dat", 1); ProdRate[plant, machine, product] := SPARSEFILE("Produce.dat", 2); ProdDaysAvail[month] := (23, 20, 23, 22); InvtCost[plant, product] := DATAFILE("InvtCost.dat"); InvtCapacity[plant] := (800, 400, 500, 400); ShipCost[fromplant, toplant] := DATAFILE ("ShipCost.dat"); VARIABLES Produce[plant, machine, product, month] -> Prod WHERE (ProdCost > 0); Inventory[plant, product, month] -> Invt; Sales[plant, product, month] -> Sale; Ship[product, month, fromplant, toplant] WHERE (fromplant <> toplant); MACROS TotalRevenue := SUM(plant, product, month: Price * Sales); TotalProdCost := SUM(plant, machine, product,month: ProdCost * Produce); TotalInvtCost := SUM(plant, product, month: InvtCost * Inventory); TotalShipCost := SUM(product, month, fromplant, toplant: ShipCost * Ship); TotalCost := TotalProdCost + TotalInvtCost + TotalShipCost; MODEL MAX Profit = TotalRevenue - TotalCost; SUBJECT TO ProdCapacity[plant, machine, month] -> PCap: SUM(product: Produce / ProdRate) <= ProdDaysAvail; PlantBal[plant, product, month] -> PBal: SUM(machine: Produce) + Inventory[month-1] + SUM(fromplant: Ship[fromplant, toplant:=plant]) = Sales + Inventory + SUM(toplant: Ship[fromplant:=plant, toplant]); MaxInventory[plant, month] -> MaxI: SUM(product: Inventory) <= InvtCapacity; BOUNDS Sales < Demand; END

Ingrese Nuevos Elementos al Modelo Paso a Paso


Paso 1: Inicie MPL y Cree un Nuevo Modelo 1. Inicie la aplicacin MPL. 2. Elija File (Archivo) | Open (Abrir) y abra el modelo de la sesin anterior Planning6.mpl. 3. Elija File (Archivo) | Save As (Guardar Cmo) para guardarlo como un nuevo archivo del modelo Planning7.mpl. Paso 2: Cambie el Ttulo del Modelo Cambie el ttulo del modelo para que refleje que se est trabajando con el modelo Planning7.

TITLE Production_Planning7; Paso 3: Agregue al Modelo el ndice 'machine' En este modelo, cada planta tiene ahora mltiples mquinas. Para crear un ndice para las mquinas agregue la siguiente definicin para el ndice machine (mquina) en la seccin INDEX. INDEX product month plant toplant fromplant machine := := := := := := (A1, A2, A3); (Jan, Feb, Mar, Apr); (p1, p2, p3, p4); plant; plant; (m11, m12, m13, m21, m22, m31, m32, m41);

Paso 4: Actualice los Vectores de Datos 'ProdCost' y 'ProdRate' para ser Incluidos en el ndice 'machine' El costo de produccin y la tasa de produccin necesitan ahora ser incluidos al ndice de mquinas puesto que tienen diferentes valores para cada mquina. Tambin, puesto que ahora los datos estn dispersos, esto es, cada planta no tiene asociado sus mquinas, estaremos almacenando los datos en un archivo de datos dispersos. MPL le permite almacenar mltiples columnas de datos en un archivo sencillo de datos dispersos. Especifique cul columna va a leer agregando una coma y el nmero de columna despus del nombre del archivo. Actualice las definiciones para los vectores de datos ProdCost y ProdRate para ser incluidos en el ndice machine y cambiar el nombre de archivo a un nuevo archivo de datos dispersos llamado Produce.dat. Para el costo de produccin especifique el nmero de columna 1despus del nombre de archivo y para la tasa de produccin especifique el nmero de columna 2. DATA Price[product] Demand[plant, product, month] ProdCost[plant, machine, product] ProdRate[plant, machine, product] ProdDaysAvail[month] InvtCost[product] InvtCapacity[plant] ShipCost[fromplant, toplant] := := := := := := := := (120.00, 100.00, 115.00); DATAFILE("Demand6.dat"); SPARSEFILE("Produce.dat", 1); SPARSEFILE("Produce.dat", 2); (23, 20, 23, 22); DATAFILE("InvtCost.dat"); (800, 400, 500, 400); DATAFILE("ShipCost.dat");

Paso 5: Creando Archivos de Datos Dispersos para el Costo de Produccin y la Tasa de Produccin Ahora necesita crear el archivo de datos dispersos Produce.dat de los datos en la descripcin del problema anterior dados en esta sesin. Para crear el archivo de datos para el costo de produccin abra una nueva ventana del editor para el archivo de datos llamado Produce.dat y escriba lo siguiente: ! ! ! ! ! Produce.dat Production Cost and Rate

ProdCost[plant, machine, product]: ProdRate[plant, machine, product]: p1, p1, p1, p1, p2, p2, p2, p3, p3, p3, m11, m11, m12, m13, m21, m21, m22, m31, m31, m32, A1, A2, A3, A3, A1, A3, A2, A1, A3, A1, 73.30, 52.90, 65.40, 47.60, 79.00, 66.80, 52.00, 75.80, 50.90, 79.90, 500, 450, 550, 350, 550, 450, 300, 450, 300, 400,

p3, p4, p4, p4,

m32, m41, m41, m41,

A2, A1, A2, A3,

52.10, 82.70, 63.30, 53.80,

350, 550, 400, 350,

Paso 6: Actualice el Vector de la Variable Produce para incluirla en el ndice 'machine' La variable Produce necesita ahora tener el ndice machine en las declaraciones como necesitamos saber en qu mquina es producido cada producto. Adems, puesto que no todas la mquinas estn en cada planta necesitamos excluir las combinaciones que no son vlidas. Esto es hecho usando la condicin where sobre el vector de datos ProdCost. Las combinaciones de ndices son usados slo cuando ProdCost es mayor que cero o cuando la variable Produce es ampliada. Ingrese los cambios a la variable produce como sigue: VARIABLES Produce[plant, machine, product, month] -> Prod WHERE (ProdCost > 0); Paso 7: Agregue el ndice 'machine' a la Macro del Costo Total de Produccin En la macro del costo total de produccin, agregue el ndice machine para que refleje que la variable produce contiene ahora el ndice machine. MACROS TotalRevenue TotalProdCost TotalInvtCost TotalShipCost TotalCost := := := := := SUM(plant, product, month: Price * Sales); SUM(plant, machine, product,month: ProdCost * Produce); SUM(plant, product, month: InvtCost * Inventory); SUM(product, month, fromplant, toplant: ShipCost * Ship); TotalProdCost + TotalInvtCost + TotalShipCost;

Paso 8: Actualice la Restriccin 'ProdCapacity' para ser Incluida en el ndice 'machine' En la declaracin de la restriccin de la capacidad de la produccin, el ndice machine debe ser incluido puesto que ahora tiene un lmite de capacidad separada para cada mquina en la planta. Ingrese los cambios a la restriccin ProdCapacity como sigue: SUBJECT TO ProdCapacity[plant, machine, month] -> PCap: SUM(product: Produce / ProdRate) <= ProdDaysAvail; Paso 9: Actualice la Restriccin de Equilibrio de Planta para Sumar la Variable Produce a Todas las Mquinas En la restriccin de equilibrio de planta hay una variable produce separada para cada mquina. Como necesitamos agregar junto al total de produccin para una planta en particular, necesitamos ahora sumar sobre el ndice mquina cuando se refiera a la variables Produce. Para hacer esto agregue la siguiente sumatoria a la restriccin PlantBal: PlantBal[plant, product, month] -> PBal: SUM(machine: Produce) + Inventory[month-1] + SUM(fromplant: Ship[fromplant, toplant:=plant]) = Sales + Inventory + SUM(toplant: Ship[fromplant:=plant, toplant]);

Resuelva el Modelo y Analice la Solucin


El prximo paso es resolver el modelo 'Planning7.mpl' eligiendo Solve CPLEX del men Run. S todo est bien MPL visualizar el mensaje 'Optimal Solution Found' (Solucin ptima Encontrada). S subiera algn error de sintxis, por favor verifique la formulacin ingresada anteriormente en esta sesin del modelo detallado. Usar la ventana de definicin del modelo otra vez, como en la sesin 6, para mirar las partes de la solucin que sean de su inters. Para abrir la ventana de definicin del Planning7 elija Model Definitions del men View (Ver).

Ventana rbol de Definicin del Modelo Planning7 Para ver los valores de la variable Produce haga doble clic sobre el icono produce del rbol o seleccinelo y presione el botn View (ver). Este visualizar la ventana View (Ver) conteniendo los valores de la solucin solo para la variable produce tal como se muestra ms abajo. VARIABLE Produce[plant,machine,product,month] : plant machine product month Activity Reduced Cost -------------------------------------------------------------------p1 m11 A1 Jan 4300.0000 0.0000 p1 m11 A1 Feb 4200.0000 0.0000 p1 m11 A1 Mar 5487.5000 0.0000 p1 m11 A1 Apr 5300.0000 0.0000 p1 m11 A2 Jan 6480.0000 0.0000 p1 m11 A2 Feb 5220.0000 0.0000 p1 m11 A2 Mar 5411.2500 0.0000 p1 m11 A2 Apr 5130.0000 0.0000 p1 m12 A3 Feb 9049.3506 0.0000 p1 m12 A3 Mar 916.1616 0.0000 p1 m12 A3 Apr 10803.1169 0.0000 p1 m13 A3 Jan 8050.0000 0.0000 p1 m13 A3 Feb 7000.0000 0.0000 p1 m13 A3 Mar 8050.0000 0.0000 p1 m13 A3 Apr 7700.0000 0.0000 p2 m21 A1 Jan 5100.0000 0.0000 p2 m21 A1 Feb 6200.0000 0.0000 p2 m21 A1 Mar 6538.8889 0.0000 p2 m21 A1 Apr 7600.0000 0.0000 p2 m21 A3 Jan 4422.6136 0.0000 p2 m21 A3 Feb 3927.2727 0.0000 p2 m21 A3 Mar 5000.0000 0.0000 p2 m21 A3 Apr 3681.8182 0.0000 p2 m22 A2 Jan 6900.0000 0.0000 p2 m22 A2 Feb 6000.0000 0.0000 p2 m22 A2 Mar 6900.0000 0.0000 p2 m22 A2 Apr 6600.0000 0.0000 p3 m31 A1 Jan 3300.0000 0.0000 p3 m31 A1 Feb 5964.9351 0.0000 p3 m31 A1 Mar 2550.0000 0.0000 p3 m31 A1 Apr 4477.4026 0.0000 p3 m31 A3 Jan 4700.0000 0.0000 p3 m31 A3 Feb 2023.3766 0.0000 p3 m31 A3 Mar 5200.0000 0.0000 p3 m31 A3 Apr 3615.0649 0.0000 p3 m32 A1 Jan 800.0000 0.0000 p3 m32 A1 Feb 135.0649 0.0000

p3 m32 A1 Mar 2150.0000 0.0000 p3 m32 A1 Apr 1322.5974 0.0000 p3 m32 A2 Jan 7350.0000 0.0000 p3 m32 A2 Feb 6881.8182 0.0000 p3 m32 A2 Mar 6168.7500 0.0000 p3 m32 A2 Apr 6542.7273 0.0000 p4 m41 A1 Jan 4300.0000 0.0000 p4 m41 A1 Feb 4100.0000 0.0000 p4 m41 A1 Mar 5073.6111 0.0000 p4 m41 A1 Apr 4500.0000 0.0000 p4 m41 A2 Jan 2270.0000 0.0000 p4 m41 A2 Feb 5018.1818 0.0000 p4 m41 A2 Mar 2500.0000 0.0000 p4 m41 A2 Apr 5527.2727 0.0000 p4 m41 A3 Jan 3327.3864 0.0000 p4 m41 A3 Mar 2633.8384 0.0000 -------------------------------------------------------------------La variable Produce est ahora definida sobre cuatro ndices: plant planta), machine (mquina), product (producto) y month (mes). Para cada planta el modelo decide qu mquina es la ms eficiente para producir los productos en una planta en particular. Esta tabla puede ser usada como base para un programa de produccin para la compaa completa. La otra variable que es interesante en este modelo es la variable Inventory. S va a la ventana del rbol otra vez y abre la ventana View (Ver) para la variable Inventory obtendr los siguientes valores de la solucin: VARIABLE Inventory[plant, product, month] : plant product month Activity Reduced Cost ----------------------------------------------------------p1 A2 Jan 800.0000 0.0000 p2 A2 Jan 400.0000 0.0000 p3 A3 Jan 500.0000 0.0000 p4 A3 Jan 400.0000 0.0000 ----------------------------------------------------------Como usted ve, el modelo ha decidido producir los productos A2 y A3 durante el mes de Enero para asegurar tener lo suficiente en el mes de Febrero. Muchas de las plantas ahora estn trabajando a su capacidad total. S usted va a la ventana del rbol y abre otra vez la ventana View (Ver) para la restriccin ProdCapacity obtendr los siguientes valores de la solucin: CONSTRAINT ProdCapacity[plant, machine, month] : plant machine month Slack Shadow Price ----------------------------------------------------------p1 m12 Jan 23.0000 0.0000 p1 m12 Feb 3.9595 0.0000 p1 m12 Mar 20.2682 0.0000 p1 m12 Apr 1.2033 0.0000 p2 m21 Jan 3.6947 0.0000 ----------------------------------------------------------Como usted puede ver la planta p1 tiene alguna capacidad extra en la mquina m12 y la planta p2 tiene alguna capacidad extra para la mquina m21. Otra cosa tambin es que todas las mquinas en cada planta estn trabajando a su capacidad total para satisfacer la demanda.

You might also like