Optimización de Procesos

Post on 11-Jan-2016

123 views 1 download

description

Optimización de Procesos. Tier II: Casos de Estudio. Sección 1: Software de Optimización Lingo. Software de Optimización. - PowerPoint PPT Presentation

Transcript of Optimización de Procesos

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

• 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

Software de Optimización

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

• 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

Operadores Lingo(Continuación)

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

Pantalla de LingoSolve – para resolver

el grupo de problemas actuales

Si se requiere ayuda adicional

Estas son las funciones más importantes de Lingo, y probablemente las únicas que necesitarás;

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

Nota: Lingo no distingue entre letras mayúsculas y minúsculas

Solución Factible encontrada en la iteración:Solución Factible encontrada en la iteración:

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

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.

Solución Factible encontrada en la iteración:Solución Factible encontrada en la iteración: 116116

Solución #2

-5

0

5

10

15

20

-5 0 5 10 15

X

Y

3.2087

3.2087

7.791

7.791

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

! Restricciones;

! Problema# 1;! Función Objetivo;

Solución de Lingo

Solución, incluyendo el valor

de la función objetivo en el óptimo y en el punto óptimo

Problema de Esquema de Transportación

! Restricciones;

! Problema# 2;! Función Objetivo;

Solución del Problema #2

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

! Restricciones;

! Muestra # 6;

! Función Objetivo;

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

! Restricciones;

! Muestra # 6;! Función Objetivo;

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 >

! Restricciones;

! Muestra # 3;! Función Objetivo;

Claramente, este valor no es

correcto puesto que X1 está restringida a

valores mayores que 0

Ejemplo de < o >

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.

Ejemplo de < o >

! Restricciones;

! Muestra # 3;! Función Objetivo;

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