360 likes | 711 Views
Optimización de Procesos. Tier II: Casos de Estudio. Sección 1: Software de Optimización Lingo. Software de Optimización.
E N D
Optimización de Procesos
Tier II: Casos de Estudio Sección 1: Software de Optimización Lingo
Software de Optimización • Muchos de los métodos de optimización previamente vistos pueden ser tediosos y requieren mucho trabajo para resolverse, especialmente cuando los modelos se vuelven más complejos y tienen dos o tres variables, que será el caso frecuentemente. • Un Software puede ser usado para resolver estos problemas más eficientemente
Software de Optimización • Los Softwares disponibles comúnmente usan los métodos revisados previamente, pero por supuesto llevan a cabo los cálculos más rápido, permitiendo fácilmente el efecto de variaciones en el modelo a ser estudiado
Software de Optimización • Ya se han mostrado algunos ejemplos de optimización usando Excel • Otro programa, Lingo, será mostrado a continuación • Una versión de prueba de ese software puede ser descargada en el sitio www.lindo.com/cgi/frameset.cgi?leftlingo.html;lingof.html
Lingo • Lingo es un programa diseñado específicamente para resolver problemas de optimización • Usa una sintaxis que es similar a lo que sería escrito a mano, o a lo que sería usado en Excel, sin requerir variables a ser declaradas • Por ejemplo, y = 3*x^2 es y = 3x2
Operadores Lingo • Muchos de los operadores Matemáticos de Lingo son similares a los que usa Excel: • Adición: + - Multiplicación: * • Sustracción: - - División: / • Para exponentes: X^n • Igual: = • Mayor o menor que: > o < • Nota: Lingo acepta ‘<’ como ‘<=’. Esto no es estrictamente menor que o mayor que.
Operadores Lingo(Continuación) • Valor absoluto de x: @abs(x) • Logaritmo Natural de x: @log(x) • Funciones Trigonométricas: @sin(x), @cos(x), @tan(x) (x in radians) • Exponenciales: @exp(x) • Dar la porción entera de un número decimal: @floor(x) • @sign(x): da -1 si x < 0, de otra manera da 1
Operadores Lingo(Continuación) • Encontrar el valor mayor o menor en un grupo: @smax(x1,x2…,xn) o @smin(x1,x2…,xn) • Encontrar el máximo o mínimo de una función: max o min • Permitir variables negativas: @free(x) • Lingo contiene otros operadores, pero estos son los operadores matemáticos probablemente más usados
Usando Lingo • Otros operadores, como los operadores lógicos, pueden encontrarse en la lista completa de operadores en el archivo ayuda (help) • Ahora que tenemos los operadores matemáticos más usados, podemos demostrar como Lingo trabaja con algunos ejemplos • Lingo puede ser usado estrictamente como un solver de ecuaciones o como un optimizador
Estas son las funciones más importantes de Lingo, y probablemente las únicas que necesitarás; Pantalla de Lingo Si se requiere ayuda adicional Solve – para resolver el grupo de problemas actuales
Exclamación para una línea de comentario; Cada línea debe terminar con un punto y coma; Solver de Ecuaciones Básicas Este encontrará la intersección de las líneas “y = 3x + 4” y “y = 5x + 1”
Solución Solución Factible encontrada en la iteración: Nota: Lingo no distingue entre letras mayúsculas y minúsculas
Solver de Ecuaciones #2 ! Esto es para encontrar donde la línea “y = x” cruza la parábola “y = (x – 5) ^ 2” ;
Solución #2 Solución Factible encontrada en la iteración: 116 Solo una solución fue encontrada. Deben existir dos soluciones para este problema. El solver automáticamente se detiene cuando encuentra la primera solución.
Dificultades No Lineales • Lingo no está diseñado para tratar con ecuaciones no lineales • No puede encontrar soluciones múltiples • Existe un inconveniente al resolver problemas no lineales, especialmente si la solución se encuentra en el dominio negativo
Máximo y Mínimo • Las funciones máximo y mínimo son las funciones más importantes necesarias para problemas de optimización • Estas funciones son usadas como sigue: max = función objetivo; min = función objetivo;
Resolviendo Problemas de Optimización • Varios ejemplos de optimización que se trabajaron en secciones previas ahora serán resueltos usando Lingo • El primer ejemplo es de la sección de introducción
Ejemplo de Planta Química • Objetivo: Maximizar 1000x1 + 1500x2 • Restricciones: 4x1 + 2x2 <= 80 2x1 + 5x2 <= 60 4x1 + 4x2 <= 75 x1, x2 >= 0
Ejemplo de Planta Química ! Problema# 1; ! Función Objetivo; ! Restricciones;
Solución, incluyendo el valor de la función objetivo en el óptimo y en el punto óptimo Solución de Lingo
Problema de Esquema de Transportación ! Problema# 2; ! Función Objetivo; ! Restricciones;
Valores Negativos • Lingo no puede resolver automáticamente para una variable negativa • Si se sospecha que una solución será negativa, entonces esa variable necesitará ser declarada específicamente como libre (free) : @free(x); • Es una buena idea declarar todas las variables como se indicó arriba, a menos por supuesto que un valor negativo no sea factible
Intentando Obtener una Solución Negativa • El siguiente ejemplo demostrará que pasa si un valor negativo es requerido para obtener una solución óptima • Lingo automáticamente resolverá para la solución óptima obtenida solo de variables positivas, incluso si éste no es el verdadero óptimo
Intentando Obtener una Solución Negativa ! Muestra # 6; ! Función Objetivo; ! Restricciones;
Esta solución es viable si los valores de la variable deben ser positivos, pero éste no es el óptimo verdadero Intentando Obtener una Solución Negativa
Estos enunciados permiten el uso de valores negativos para estas variables Intentando Obtener una Solución Negativa ! Muestra # 6; ! Función Objetivo; ! Restricciones;
Ahora el óptimo verdadero es obtenido, con variables negativas Intentando Obtener una Solución Negativa
Mayor que o Menor que • Otro problema potencial que será encontrado al usar Lingo es que éste maneja < de igual manera que <=, y > igual que >= • Por lo tanto, si una variable debe ser estrictamente mayor que un valor, la restricción debe ser tratada como sigue: • Para x > A, donde A es una solución diferente usa x > A + b; donde b es un valor arbitrario, como 0.1, que cubre una porción donde la solución no se encuentra
Ejemplo de < o > ! Muestra # 3; ! Función Objetivo; ! Restricciones;
Claramente, este valor no es correcto puesto que X1 está restringida a valores mayores que 0 Ejemplo de < o >
Ejemplo de < o > ! Muestra # 3; ! Función Objetivo; ! Restricciones; Ahora se forzará a X1 y X2 a ser mayores que 0. Podemos hacer esto porque sabemos que X1 y X2 también son mayores que 0.1.
Las variables ahora obedecen las restricciones deseadas. Es una coincidencia que el valor objetivo sea el mismo que en el caso anterior. Ejemplo de < o >
Conclusiones • Lingo es efectivo y eficiente para la resolución de problemas de optimización si éstos son lineales • No está diseñado para trabajar con problemas no lineales • No es muy bueno para trabajar con problemas no lineales, por lo que éstos deben ser atacados con precaución • No maneja muy bien los puntos múltiples máximos o mínimos en casos no lineales