Palabras claves

Page 1

Palabras claves •

Lingo

Análisis multicriterio

Modelo Proceso Analítico Jerárquico (AHP)

Introducción LINGO es un lenguaje de programación, la cual es una herramienta para la formulación, resolución y análisis de problemas de programación línea y no lineal. Esto significa que usando LINGO es posible resolver sistemas de ecuaciones con una o varias variables. Uno de los rasgos más destacables es su lenguaje de modelado el cual permite expresar un problema de una manera muy similar a una notación matemática normal. Por ello se hace uso de este software para la ayuda a la resolución de modelos matemáticos como el análisis de multicriterios el cual es un proceso analítico jerárquico diseñado para cuantificar juicios u opiniones gerenciales sobre la importación relativa de cada uno de los criterios en conflicto empleados en donde nos ayudara a tomar la mejor decisión ante problemas encontrados en el sector empresarial. Marco Teórico LINGO LINGO es un lenguaje sencillo de programación que permite resolver problemas de optimización. Está disponible para MS-DOS, estaciones de trabajo, Macintosh y Windows. Es un lenguaje de programación distinto de los lenguajes convencionales tales como Basic, Pascal o C. LINGO es un lenguaje “no procedimental” o de especificación; cuando introducimos un problema sólo podemos expresar lo que queremos, pero no cómo hacerlo; él se preocupa de cómo hacerlo. Es decir, “nosotros le decimos a LINGO lo que queremos y él hace el resto”. Con este programa expresamos nuestro problema de una forma sencilla, muy parecida a la escritura matemática habitual. LINGO tiene incorporada una librería con funciones matemáticas, estadísticas y financieras que nos permiten expresar fórmulas complejas de una manera clara y sencilla. Podemos representar nuestros datos dentro del programa en forma natural como una lista, pero LINGO también puede leer los datos desde ficheros externos o desde hojas de cálculo. Con LINGO podemos resolver tres tipos de modelos: Modelos directos: en estos modelos todos los valores de las variables pueden ser determinados directamente, sin recurrir al “resolvedor” (en inglés solver). Con estos modelos LINGO funciona como una hoja de cálculo. Modelos simultáneos: están formados por ecuaciones interrelacionadas que no se pueden resolver por sustitución directa. LINGO utilizará el solver apropiado (dispone de cuatro solver distintos) para encontrar un conjunto de valores para las variables que satisfagan simultáneamente todas las ecuaciones.


Modelos de optimización: están formados por una función objetivo a optimizar y restricciones; tanto la función objetivo como las restricciones están dadas por medio de expresiones que contienen las variables de decisión del problema. Cuando ejecutamos un modelo de optimización, LINGO devuelve tanto un valor de cada variable de decisión como el correspondiente valor de la función objetivo (máximo o mínimo). La función objetivo se expresa mediante MAX = expresión; o

MIN = expresión

Estructura de un programa LINGO En el caso más complejo, un programa LINGO está formado por cuatro partes o secciones: una parte ejecutable que debe aparecer siempre y tres secciones opcionales: SETS, DATA e INIT. La parte ejecutable: contiene la función objetivo (si la hay) y las restricciones del problema. La sección SETS: se utiliza para definir conjuntos. Esta sección empieza con SETS: y acaba con ENDSETS. Entre estas dos palabras se definen los conjuntos que se van a utilizar. Definimos un conjunto mediante su nombre, sus miembros y sus atributos; la sintaxis es: SETS: nombre / miembros /: atributos ; ENDSETS Los miembros se pueden enumerar separados por comas (“,”), o utilizando rangos (por ejemplo 1..8). Los atributos, si los hubiera, también se separan mediante comas. La definición de un conjunto acaba en “;”. Veamos un ejemplo: SETS: alumnos / 1..5 /: edad, curso; plantas / Oviedo, León, Valladolid, Salamanca /: oferta ; ENDSETS Con esto, estamos declarando alumnos como un conjunto formado por cinco miembros indexados. Los atributos edad y curso son variables que contienen 5 valores indexados correspondientes a los cinco miembros; plantas es un conjunto de cuatro miembros ordenados: Oviedo, León, Valladolid y Salamanca; el atributo oferta es una variable con cuatro componentes que corresponden a los cuatro miembros del conjunto plantas. En nuestro ejemplo oferta podría representar la oferta disponible en las cuatro plantas de Oviedo, León, Valladolid y Salamanca. Las variables asociadas a conjuntos, es decir, los atributos, deben declararse antes de ser usadas. Los conjuntos derivados deben declararse después de los correspondientes conjuntos primitivos.


La sección DATA: nos sirve para introducir valores a los atributos. Esta sección empieza con DATA: y acaba con ENDDATA. La sintaxis es: DATA: atributo = lista de valores ; ENDDATA Los valores se separan por comas o por espacios en blanco. Es preferible separarlos por comas porque cuando no queramos introducir un valor podemos dejar un hueco en blanco entre comas. Si queremos no explicitar un dato hasta el momento de ejecutar el programa podemos poner el signo “?” en su lugar; en ese momento LINGO nos preguntará por el correspondiente valor. Ejemplo: DATA: edad = 20, , 19, , 21; curso = 1, ?, 3, ?, 3; ENDDATA La sección INIT: nos sirve para introducir valores aproximados de los atributos. Esto puede ayudar a LINGO en el cálculo de los valores que buscamos, ya que, en general, LINGO sólo proporciona óptimos locales. Cuando el modelo es lineal LINGO proporciona óptimos globales. Esta sección empieza con INIT: y acaba con ENDINIT. La sintaxis es: INIT: atributo = lista de valores ; ENDINIT Como en el caso de DATA, los valores se separan por comas o por espacios en blanco. Es preferible separarlos por comas porque cuando no queramos introducir un valor podemos dejar un hueco en blanco entre comas. Si queremos no explicitar un dato hasta el momento de ejecutar el programa podemos poner el signo “?” en su lugar; en ese momento LINGO nos preguntará por el correspondiente valor. Ejemplo: INIT: edad = 20, ,19, , 21; curso = 5, ?, 3, ?, 4; ENDINIT Funciones LINGO LINGO tiene ocho tipos de funciones; a continuación enumeraremos algunas de ellas así como su sintaxis y una breve explicación de las mismas. Operadores estándar. a) Operadores aritméticos binarios: Potencia (^), multiplicación (*), división (/), suma

(+) y resta (-).


b) Operadores aritméticos unitarios: sólo uno, la negación (-)

De máxima a mínima, la precedencia entre ellos es la siguiente: negación (-), potencia (^), producto y división (* y /), suma y resta (+ y -).

Operadores lógicos. #NOT# Es un operador unitario, niega el valor lógico de su argumento. #AND# Devuelve el valor TRUE sólo si sus dos argumentos son TRUE, en otro caso devuelve el valor FALSE. #OR#

Devuelve el valor FALSE sólo si sus dos argumentos son FALSE en otro caso devuelve el valor TRUE.

#EQ#

Devuelve TRUE si sus dos operandos son iguales y FALSE en caso contrario.

#NE#

Devuelve TRUE si sus dos operandos no son iguales y FALSE si lo son.

#GT#

Devuelve TRUE si el operando izquierdo es mayor que el derecho, y FALSE en caso contrario.

#GE#

Devuelve TRUE si el operando izquierdo es mayor o igual que el derecho, y FALSE en caso contrario.

#LT#

Devuelve TRUE si el operando izquierdo es menor que el derecho, y FALSE en caso contrario.

#LE#

Devuelve TRUE si el operando izquierdo es menor o igual que el derecho, y FALSE en caso contrario

Relaciones de igualdad y desigualdad. Utilizamos relaciones de igualdad y desigualdad para especificar que la expresión de la izquierda es igual (=), menor o igual (<=, o <), o mayor o igual (>=, o >) que la expresión de la derecha. LINGO no permite usar "matemáticamente" el menor estricto (<) ni el mayor estricto (>), ya que interpreta < como <= y > como >=. Funciones matemáticas. @ABS(X) @SMAX(lista)

Devuelve el valor absoluto de X. Devuelve el mayor valor de la lista de escalares.

@SMIN(lista)

Devuelve el menor valor de la lista de escalares.

Funciones para conjuntos. Estas funciones operan sobre conjuntos; todas excepto el operador @FOR devuelven un único resultado. La sintáxis de este tipo de funciones es: función(nombre_conjunto | condición: expresión). La parte “| condición” es optativa y sirve para restringir “nombre de conjunto” (del mismo modo que se hace al definir conjuntos en Matemáticas).


Las funciones que podemos utilizar con conjuntos son: @FOR(nombre_conjunto : expresión) Genera restricciones independientemente para cada elemento del conjunto nombre_conjunto. @SUM(nombre_conjunto : expresión) Devuelve la suma de expresión sobre nombre_conjunto. @MAX (nombre_conjunto : expresión) Devuelve el valor máximo de expresión tomado sobre nombre_conjunto. @MIN (nombre_conjunto : expresión) Devuelve el valor mínimo de expresión tomado sobre nombre_conjunto. Funciones de dominio de variables. @FREE(variable) Permite a variable tomar valores sin restricción de signo. @GIN(variable) Obliga a variable a tomar sólo valores enteros. @BIN(variable) Obliga a variable a tomar sólo valores 0 ó 1. @BND(L,variable,U) Obliga a variable a tomar sólo valores entre L y U (ambos incluidos). Funciones probabilísticas. @PSN(X) Función de distribución de la normal estándar. Devuelve el valor P(ZX), donde Z es una variable normal estándar, es decir una variable N(0,1) @PSL(X) Devuelve el valor esperado de MAX (0, Z-X), donde Z es una variable normal estándar. En un modelo de inventario, si la demanda sigue una distribución N(0,1), entonces @PSL(X) es la cantidad en que la demanda excede al nivel X. Otras funciones. @IN (elemento_conjunto, nombre_conjunto) Devuelve TRUE si elemento_conjunto está contenido en nombre_con-junto. @FLOOR(X)


Si X0, devuelve el mayor entero que es menor o igual a X. Si X<0, devuelve el menor entero que es mayor o igual a X. (Nota: esta función sólo está disponible en las últimas versiones de LINGO). @SIZE(nombre_conjunto) Devuelve el número de elementos del conjunto nombre_conjunto. @WARN (‘mensaje’, condición lógica) Abre una ventana en pantalla con el contenido de ‘mensaje’ si se cumple la condición lógica. Es util para avisar de alguna circunstancia particular en el modelo.

El Proceso de Análisis Jerárquico (AHP) El Proceso de Análisis Jerárquico, desarrollado por Thomas L. Saaty (The Analytic Hierarchy Process, 1980) está diseñado para resolver problemas complejos de criteri os múltiples. El proceso requiere que quien toma las decisiones proporcione evaluaciones subjetivas respecto a la importancia relativa de cada uno de los criterios y que, después, especifique su preferencia con respecto a cada una de las alternativas de decisión y para cada criterio. El resultado del AHP es una jerarquización con prioridades que muestran la preferencia global para cada una de las alternativas de decisión. En un ambiente de certidumbre, el AHP proporciona la posibilidad de incluir datos cuantitativos relativos a las alternativas de decisión. La ventaja del AHP consiste en que adicionalmente permite incorporar aspectos cualitativos que suelen quedarse fuera del análisis debido a su complejidad para ser medidos, pero que pueden ser relevantes en algunos casos. El AHP, mediante la construcción de un modelo jerárquico, permite de una manera eficiente y gráfica organizar la información respecto de un problema, descomponerla y analizarla por partes, visualizar los efectos de cambios en los niveles y sintetizar. El AHP “se trata de desmenuzar un problema y luego unir todas las soluciones de los subproblemas en una conclusión” El AHP se fundamenta en: •

La estructuración del modelo jerárquico (representación del problema mediante identificación de meta, criterios, subcriterios y alternativas).

Priorización de los elementos del modelo jerárquico.

Comparaciones binarias entre los elementos.

Evaluación de los elementos mediante asignación de “pesos”.

Ranking de las alternativas de acuerdo con los pesos dados.

Síntesis.


Análisis de Sensibilidad.

El AHP es una herramienta metodológica que ha sido aplicada en varios países para incorporar las preferencias de actores involucrados en un conflicto y/o proceso participativo de toma de decisión. Algunas de las ventajas del AHP frente a otros métodos de Decisión Multicriterio son: •

Presentar un sustento matemático.

Permitir desglosar y analizar un problema por partes.

Permitir medir criterios cuantitativos y cualitativos mediante una escala común.

Incluir la participación de diferentes personas o grupos de interés y generar un consenso.

Permitir verificar el índice de consistencia y hacer las correcciones, si es del caso.

Generar una síntesis y dar la posibilidad de realizar análisis de sensibilidad.

Es de fácil uso y permitir que su solución se pueda complementar con métodos matemáticos de optimización.

Base matemática del AHP “El AHP trata directamente con pares ordenados de prioridades de importancia, preferencia o probabilidad de pares de elementos en función de un atributo o criterio común representado en la jerarquía de decisión. Creemos que este es el método natural (pero refinado) que la gente siguió al tomar decisiones mucho antes que se desarrollaran funciones de utilidad y antes que se desarrollara formalmente el AHP”. “El AHP hace posible la toma de decisiones grupal mediante el agregado de opiniones, de tal manera que satisfaga la relación recíproca al comparar dos elementos. Luego toma el promedio geométrico de las opiniones. Cuando el grupo consiste en expertos, cada uno elabora su propia jerarquía, y el AHP combina los resultados por el promedio geométrico. Establecimiento de prioridades con el AHP El AHP, pide a quien toma las decisiones señalar una preferencia o prioridad con respecto a cada alternativa de decisión en términos de la medida en la que contribuya a cada criterio. Teniendo la información sobre la importancia relativa y las preferencias, se utiliza el proceso matemático denominado síntesis, para resumir la información y para proporcionar una jerarquización de prioridades de las alternativas, en términos de la preferencia global.

Bibliografía [1] H. Toskano y B. Gerard, «UNMSM,» 2012. [En línea]. http://sisbib.unmsm.edu.pe/bibvirtualdata/tesis/basic/toskano_hg/cap3.pdf.

Available: [Último


acceso: 6 Junio 2015]. [2] «Departamento de estadisticas e investigacion,» 2011. [En línea]. www.eio.uva.es/~laguna/io21/Lingo02.doc. [Último acceso: 6 Junio 2015].

Available:


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.