lunes, 26 de febrero de 2007

Programación no lineal o lineal


PROGRAMACIÓN NO LINEAL O LINEAL (CON SOLVER DE EXCEL)

Solver de Excel en una práctica y potente herramienta de programación, tanto lineal como no lineal.
Además nos brinda en la pantalla, "Informes", la posibilidad de un análisis adicional de sensibilidad, que permite observar si quedan recursos ociosos, precios sombra, costos de
oportunidad y otros.

PROGRAMACIÓN LINEAL SIMPLEX

Por ejemplo para maximizar los beneficios o la producción de una empresa x realizamos, los siguientes pasos:

1) Transformar a ecuaciones, agregando las variables de holgura.
2) Tabla 0: La primer línea de títulos es común para todas las tablas, con las siguientes 9 columnas (Funcional (F); Variable (X); Recursos (R); X1...5 ;Variable Saliente (VS)).
3) Conviene anotar los coeficientes de la función objetivo o funcional, arriba de cada Xj de la primera línea de encabezado, como una ayuda para calcular el punto 9.
4) En la columna X anotar las variables básicas que intervienen en cada cálculo o tabla. La primera solución (en el origen) solo incluye las variables de holgura (con nada producido todo son excedentes).
5) En la columna Funcional van los coeficientes de las variables básicas en la función objetivo.
6) En la columna Recursos se anotan los recursos iniciales. Es el valor de cada variable X en este paso (tabla) del cálculo Simplex. En las próximas tablas irán los recursos utilizados para esa etapa.
7) En X1 ... 5 se anotan inicialmente los coeficientes del sistema de ecuaciones; i
filas, j columnas.
8) Conviene trazar rayas tras la columna Recursos; tras la columna X5; y otra inferior.
9) Agregar una última fila, calculando cada X.
10) Variable que entra: el mayor negativo en la fila inferior. Se toma el mayor negativo por que mejora la funcionalidad.
11) Calcular la última columna VS como R cada coeficiente en la columna de la variable que entra.
12) Variable que sale: el menor positivo en VS, ya que indica el valor con que la variable entra a la base y sale el menor.
13) Pivote: Intersección entre ambas señales. Remarcar el pivote:
14) En la columna X cambiar la variable que sale por la variable que entra.
15) Anotar en la columna F el valor que tiene cada variable en el funcional.
16) Calcular la nueva línea del pivote como = línea pivote anterior/pivote.
17) En la columna del pivote completar con ceros (salvo el 1 del pivote).
18) Para calcular cada elemento restante observar los extremos del cuadrado con diagonal en el pivote: al número en la tabla anterior restarle la otra diagonal dividida por el pivote.
19) Calcula la última fila según (9).
20) Calcular la columna VS según (11).
21) Marcar la variable que entra (según 10) y la variable que sale (según 12); circular su intersección como nuevo pivote:
22) Repetir el calculo para la Tabla 1. Se llega al óptimo cuando una tabla tiene todo positivo en la última fila.
23) Los coeficientes R indicarán ahí las producciones; puede quedar algún recurso ocioso. El valor máximo B se puede anotar al final.
MINIMIZAR EL COSTO DE PRODUCCIÓN

En los casos de minimización, el origen de coordenadas no puede ser el paso inicial y se suponen costos muy altos para los insumos al solo efecto del paso / tabla inicial.
Además de las variables reales y las slag (aquí con signo -) se agregarán las nuevas variables, artificiales (+) en el funcional y como columnas en las tablas para considerar esos altos costos.

DUALIDAD

Todo caso normal de maximización implica uno de minimización y viceversa.
Como los cálculos para minimizar son mayores que para maximizar, debido a esos agregados comentados, es posible calcular el dual de un mínimo convirtiéndolo en un caso de máximo, al considerar los recursos disponibles como los coeficientes de las variables de un nuevo funcional y tomando los coeficientes de las filas del sistema de restricciones del mínimo como columnas para el sistema del máximo.
Es decir, el dual tiene una variable por cada restricción del primal (y tiene tantas restricciones como variables hay en el primal). Solo se trata de que el funcional pasen a ser términos independientes y poner las filas como columnas (las desigualdades tendrán sentido
inverso). Esto vale igualmente cuando en el primal hay mezcladas desigualdades contrarias: si alguna es negativa se le agregara una variable artificial tal como se dijo anteriormente)