Ir al contenido

Diferencia entre revisiones de «Programación lineal»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Sin resumen de edición
Diegusjaimes (discusión · contribs.)
m Revertidos los cambios de 201.171.109.189 a la última edición de Diegusjaimes
Línea 1: Línea 1:
La '''Programación Lineal''' 3 BPS ! es un procedimiento o algoritmo matemático mediante el cual se resuelve un problema indeterminado, formulado a través de [[ecuación lineal|ecuaciones lineales]], optimizando la función objetivo, también lineal.
La '''Programación Lineal''' es un procedimiento o algoritmo matemático mediante el cual se resuelve un problema indeterminado, formulado a través de [[ecuación lineal|ecuaciones lineales]], optimizando la función objetivo, también lineal.


Consiste en optimizar (minimizar o maximizar) una función lineal, que denominaremos función objetivo, de tal forma que las variables de dicha función estén sujetas a una serie de restricciones que expresamos mediante un sistema de inecuaciones lineales.
Consiste en optimizar (minimizar o maximizar) una función lineal, que denominaremos función objetivo, de tal forma que las variables de dicha función estén sujetas a una serie de restricciones que expresamos mediante un sistema de inecuaciones lineales.

Revisión del 22:28 27 ago 2009

La Programación Lineal es un procedimiento o algoritmo matemático mediante el cual se resuelve un problema indeterminado, formulado a través de ecuaciones lineales, optimizando la función objetivo, también lineal.

Consiste en optimizar (minimizar o maximizar) una función lineal, que denominaremos función objetivo, de tal forma que las variables de dicha función estén sujetas a una serie de restricciones que expresamos mediante un sistema de inecuaciones lineales.

Historia de la programación lineal

El problema de la resolución de un sistema lineal de inecuaciones se remonta, al menos, a Fourier, después de quien nace el método de eliminación de Fourier-Motzkin. La programación lineal se plantea como un modelo matemático desarrollado durante la Segunda Guerra Mundial para planificar los gastos y los retornos, a fin de reducir los costos al ejército y aumentar las pérdidas del enemigo. Se mantuvo en secreto hasta 1947. En la posguerra, muchas industrias lo usaron en su planificación diaria.

Los fundadores de la técnica son George Dantzig, quien publicó el algoritmo simplex, en 1947, John von Neumann, que desarrolló la teoría de la dualidad en el mismo año, y Leonid Kantoróvich, un matemático ruso, que utiliza técnicas similares en la economía antes de Dantzig y ganó el premio Nobel en economía en 1975. En 1979, otro matemático ruso, Leonid Khachiyan, demostró que el problema de la programación lineal era resoluble en tiempo polinomial. Más tarde, en 1984, Narendra Karmarkar introduce un nuevo método del punto interior para resolver problemas de programación lineal, lo que constituiría un enorme avance en los principios teóricos y prácticos en el área.

El ejemplo original de Dantzig de la búsqueda de la mejor asignación de 70 personas a 70 puestos de trabajo es un ejemplo de la utilidad de la programación lineal. La potencia de computación necesaria para examinar todas las permutaciones a fin de seleccionar la mejor asignación es inmensa; el número de posibles configuraciones excede al número de partículas en el universo. Sin embargo, toma sólo un momento encontrar la solución óptima mediante el planteamiento del problema como una programación lineal y la aplicación del algoritmo simplex. La teoría de la programación lineal reduce drásticamente el número de posibles soluciones óptimas que deberán ser revisadas.

Variables

Las variables son números reales mayores o iguales a cero.

En caso que se requiera que el valor resultante de las variables sea un número entero, el procedimiento de resolución se denomina Programación entera.

Restricciones

Las restricciones pueden ser de la forma:

Tipo 1:

Tipo 2:

Tipo 3:

Donde:

  • A = valor conocido a ser respetado estrictamente;
  • B = valor conocido que debe ser respetado o puede ser superado;
  • C = valor conocido que no debe ser superado;
  • j = número de la ecuación, variable de 1 a M (número total de restricciones);
  • a; b; y, c = coeficientes técnicos conocidos;
  • X = Incógnitas, de 1 a N;
  • i = número de la incógnita, variable de 1 a N.

En general no hay restricciones en cuanto a los valores de N y M. Puede ser N = M; N > M; ó, N < M.

Sin embargo si las restricciones del Tipo 1 son N, el problema puede ser determinado, y puede no tener sentido una optimización.

Los tres tipos de restricciones pueden darse simultáneamente en el mismo problema.

Función Objetivo

La función objetivo puede ser:


ó

Donde:

  • f = coeficientes son relativamente iguales a cero.

Programación entera

En algunos casos se requiere que la solución óptima se componga de valores enteros para algunas de las variables. La resolución de este problema se obtiene analizando las posibles alternativas de valores enteros de esas variables en un entorno alrededor de la solución obtenida considerando las variables reales.

Muchas veces la solución del programa lineal truncado esta lejos de ser el óptimo entero, por lo que se hace necesario usar algún algoritmo para hallar esta solución de forma exacta. El más famoso es el método de 'Ramificar y Acotar' o Branch and Bound por su nombre en inglés. El método de Ramificar y Acotar parte de la adición de nuevas restricciones para cada variable de decisión (acotar) que al ser evaluado independientemente (ramificar) lleva al óptimo entero.

Aplicaciones

La programación lineal constituye un importante campo de la optimización por varias razones, muchos problemas prácticos de la investigación de operaciones pueden plantearse como problemas de programación lineal. Algunos casos especiales de programación lineal, tales como los problemas de flujo de redes y problemas de flujo de mercancías se consideraron en el desarrollo de las matemáticas lo suficientemente importantes como para generar por si mismos mucha investigación sobre algoritmos especializados en su solución. Una serie de algoritmos diseñados para resolver otros tipos de problemas de optimización constituyen casos particulares de la más amplia técnica de la programación lineal. Históricamente, las ideas de programación lineal han inspirado muchos de los conceptos centrales de la teoría de optimización tales como la dualidad, la descomposición y la importancia de la convexidad y sus generalizaciones. Del mismo modo, la programación lineal es muy usada en la microeconomía y la administración de empresas, ya sea para aumentar al máximo los ingresos o reducir al mínimo los costos de un sistema de producción. Algunos ejemplos son la mezcla de alimentos, la gestión de inventarios, la cartera y la gestión de las finanzas, la asignación de recursos humanos y recursos de máquinas, la planificación de campañas de publicidad, etc.

Otros son:

  • Optimización de la combinación de diámetros comerciales en una red ramificada de distribución de agua.
  • Aprovechamiento óptimo de los recursos de una cuenca hidrográfica, para un año con afluencias caracterizadas por corresponder a una determinada frecuencia.
  • Soporte para toma de decisión en tiempo real, para operación de un sistema de obras hidráulicas;
  • Solución de problemas de transporte.

Caso curioso

Éste es un caso curioso, con solo 6 variables (un caso real de problema de transporte puede tener fácilmente más de 1.000 variables) en el cual se aprecia la utilidad de este procedimiento de cálculo.

Existen tres minas de carbón cuya producción diaria es:

  • La mina "a" produce 40 toneladas de carbón por día;
  • La mina "b" otras 40 t/día; y,
  • La Mina "c" produce 20 t/día.

En la zona hay dos centrales termoeléctricas que consumen:

  • La central "d" consume 40 t/día de carbon; y,
  • La central "e" consume 60 t/día

Los costos, de mercado, de transporte por tonelada son:

  • De "a" a "d" = 2 monedas
  • De "a" a "e" = 11 monedas
  • De "b" a "d" = 12 monedas
  • De "b" a "e" = 24 monedas
  • De "c" a "d" = 13 monedas
  • De "c" a "e" = 18 monedas

Si preguntáramos a una asamblea de pobladores de la zona, cómo organizar el transporte, con certeza, la gran mayoría opinaría que debemos aprovechar el precio ofrecido por el transportista que va de "a" a "d", porque es mucho más conveniente que los otros.

En este caso, el costo total del transporte seria:

  • Transporte de 40 t de "a" a "d" = 80 monedas
  • Transporte de 20 t de "c" a "e" = 360 monedas
  • Transporte de 40 t de "b" a "e" = 960 monedas
  • Total 1.400 monedas.

Sin embargo, formulando el problema para ser resuelto por la programación lineal tendríamos las siguientes ecuaciones:

  • Restricciones de la producción:
  • Restricciones del consumo:
  • La función objetivo será:

La solución de costo mínimo de transporte diario resulta:

  • Xb-d = 40 resultando un costo de 12 x 40 = 480 monedas
  • Xa-e = 40 resultando un costo de 11 x 40 = 440 monedas
  • Xc-e = 20 resultando un costo de 18 x 20 = 360 monedas
  • Total 1.280 monedas.

Reflexiones que surgen del problema:

  1. Es discutible la conveniencia de tomar decisiones por consenso en cuestiones estrictamente técnicas;
  2. Es discutible la aplicación de la intuición en el caso de problemas con más de 4 variables;
  3. Una vez conocida la solución del problema lineal, generalmente le resulta casi evidente al analista que ésa es la solución correcta, si bien no la veía antes.

Referencias

  • Loomba, N.P. Linear Programming: An introductory analysis. McGraw-Hill, New York, 1964
  • Universidad Peruana Union - Biblioteca Central - libro numero 0.001245/f12 PROGRAMACION LINEAL

Tutorial

  • Programación Lineal y Método Simplex [1]
  • Programación Entera y Branch & Bound [2]

Enlaces externos

  • El Sitio de Programación Lineal en Español [3]
  • PHPSimplex herramienta online para resolver problemas de programación lineal, incluye ejemplos desarrollados de programación lineal y método Simplex [4]
  • www.invope.com página que contiene problemas de programación lineal, incluye ejemplos desarrollados de programación lineal del Ing. santiago Javez Valladares

[5]