Programación
lineal
|
|
Este
artículo o sección posee referencias, pero necesita más para
complementar su verificabilidad.
Puedes colaborar agregando referencias a fuentes fiables como se indica aquí. El material sin fuentes fiables podría ser cuestionado y eliminado. |
La programación lineal es un procedimiento o algoritmo matemático
mediante el cual se resuelve un problema indeterminado, formulado a través de
un sistema de
inecuaciones lineales, optimizando la función objetivo, también lineal.
Consiste en optimizar (minimizar o maximizar) una función lineal,
denominada 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
|
Año
|
Acontecimiento
|
|
Joseph Fourier anticipa la programación
lineal. Carl Friedrich Gauss
resuelve ecuaciones lineales por eliminación "gaussiana". |
|
|
Gyula Farkas concibe un método para
resolver sistemas de inecuaciones.
|
|
|
George Dantzig publica el algoritmo simplex y
John von Neumann desarrolló la teoría de la dualidad. Se sabe que Leonid Kantoróvich también formuló la teoría en forma independiente. |
|
|
Narendra Karmarkar introduce el método del punto
interior para resolver
problemas de programación lineal. |
|
El
problema de la resolución de un sistema lineal de inecuaciones se remonta, al
menos, a Joseph
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 de origen 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, diseñó
el llamado Algoritmo del elipsoide, a través del cual demostró que
el problema de la programación lineal es resoluble de manera eficiente, es
decir, en tiempo
polinomial.2 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 (factorial de 70, 70!) ; 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 factibles que deben 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
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.
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 cifras comerciales en una red lineal 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.
Ejemplo
Este 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"
produce 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 carbón; 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 se
preguntase a los pobladores de la zona cómo organizar el transporte, tal vez la
mayoría opinaría que debe aprovecharse el precio ofrecido por el transportista
que va de "a" a "d", porque es más conveniente
que los otros, debido a que es el de más bajo precio.
En este
caso, el costo total del transporte es:
- 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.

No hay comentarios:
Publicar un comentario