INTRODUCCIÓN A LA PROGRAMACIÓN MATEMÁTICA.

Anuncio
Instrumentos económicos en la gestión y asignación de recursos hídricos (TAYGA 10/11)
INTRODUCCIÓN A LA PROGRAMACIÓN MATEMÁTICA.
Cuando se está mencionando el concepto de búsqueda del mejor es prácticamente inmediato
relacionarlo con un problema de optimización; entra en escena la optimización matemática, que puede ser
definida como la rama de las matemáticas (de la ciencia de la computación) que trata de dar respuesta a la
pregunta ¿qué es mejor? a partir de un modelo simplificado de la realidad.
Considerando el caso común de optimización en el cuerpo de los números reales, el problema más
simple de optimización es el denominado estudio de óptimos libres (sin restringir) de una función, que
puede ser resuelto con cálculo diferencial elemental. Algo más complejos resultan los denominados
problemas de optimización condicionada con restricciones de igualdad, que necesitan acudir a la
construcción del lagrangiano asociado. La optimización matemática condicionada con restricciones de
desigualdad constituyen en general los problemas más complejos, que tienen en el conocido teorema de
Kuhn-Tucker su aproximación diferencial.
Una de las posibles clasificaciones que se pueden realizar de los tipos de problemas de optimización
matemática es la presentada en la siguiente tabla, en la que se han considerado cuatro características
básicas:
Tabla 1 Tipos de problemas de optimización matemática
Característica
Propiedad
Número de variables de Una
decisión
Más de una
Número reales
Tipología de las variables de Enteros
decisión
Reales y enteros
Enteros en permutaciones
Sujeta a restricciones
Formulación
No sujeta a restricciones
Lineales
Tipos de funciones de las Cuadráticas
variables de decisión
No lineales diferentes de las
cuadráticas
Fuente: Elaboración propia
Clasificación
Univariante
Multivariante
Continua
Discreta ( o entera)
Mixta entera
Combinatoria
Restringida
Libre
Lineal
Cuadrática
No lineal
Bajo el término de programación matemática se hace referencia al conjunto de procedimientos
relacionados con el análisis de problemas de optimización restringida. Los problemas de optimización que
se van a utilizar en este trabajo son generalmente aquellos en los que un centro decisor desea optimizar
alguna(s) medida(s) de satisfacción seleccionando los valores de un conjunto de variables, satisfaciendo una
serie de condicionantes y/o restricciones que surgen de la misma naturaleza y realidad del proceso
optimizado. Así, la formulación genérica de un programa matemático de optimización restringida,
utilizando un sistema algebraico de representación, vendrá dada por la siguiente expresión:
Optimizar F( x )
Sujeto a (s.t.)
G( x ) ∈ R1
x ∈ R2
@jmpaz
1
donde x representa el vector de variables de decisión, llamadas así porque son aquellas sobre las que el
decisor puede actuar, modificando sus valores y que constituyen las “incógnitas” del problema. Los valores
de x son elegidos de forma que el objetivo del decisor sea optimizado, para lo cual se debe optimizar
(optimización que se concreta generalmente en maximizar o minimizar) una(s) función(es) F(x). Esta(s)
función(es) objetivo del problema es/son una(s) expresión(es) algebraica(s) de dicho(s) objetivo(s)
formulado(s) como una expresión de las variables de decisión. A su vez, el conjunto de restricciones o
acotaciones que deben cumplir las variables de decisión se representan algebraicamente mediante la
verificación de unas ecuaciones que aseguran el cumplimiento de las mismas y que restringen el espacio de
soluciones posibles a un subconjunto representado por R1. La misma naturaleza de las variables de
decisiones lleva a plasmar unas restricciones individuales de las mismas, que forman el subconjunto R2.
La formulación de optimización restringida más conocida es la denomina programación lineal,
considerada como la aproximación clásica de la programación matemática. Desde que en 1947 G. Dantzing
presentara sus trabajos para planificar las actividades de las fuerzas aéreas de los Estados Unidos, las
aplicaciones de la programación matemática han tenido un gran desarrollo, especialmente en su aplicación
a temas económicos. En general se conoce como programa lineal a aquel en el que tanto la función
objetivo como las restricciones tienen una formulación lineal sobre las variables de decisión. Los programas
lineales reales tienen en el algoritmo simplex asegurada su resolución.
Siendo el programa lineal real el tipo más simple, dependiendo de la naturaleza y características de
los distintos elementos que se acaban de definir surgen diferentes tipos de problemas:
Un problema de optimización se denomina problema de programación lineal si las funciones F(X) y
G(X) son lineales y los valores de X son no negativos. Si no se cumple la condición de linealidad en la función
objetivo y/o restricciones se trata de un problema de programación no lineal. Si la no linealidad sólo afecta
a la función objetivo, y esta es de naturaleza cuadrática se presenta un problema de programación
cuadrática.
La característica de la función objetivo también marca la distinción de dos tipos básicos de
programas de optimización: si sólo se considera un objetivo se hablara de programación monocriterio
(también conocida como tradicional); si por el contrario se esta construyendo un problema de optimización
con criterios múltiples, la programación pasa a considerarse multicriterio.
Respecto a la naturaleza de las variables de decisión lo más usual es encontrar una restricción de no
negatividad de las mismas dentro del cuerpo de los números reales. Pero si, como es usual en muchas
formulaciones, estas variables solo pueden tomar valores enteros, surgen los denominados problemas de
programación entera, que pueden ser puros si todas las variables de decisión pertenecen al cuerpo de los
números enteros o mixtos, si unas variables son enteras y otras reales. Un caso particular de la
programación entera es aquella en la que la naturaleza de las variables es de carácter binario, (del tipo 0,1
o si, no), obteniendo problemas de programación matemática binaria también denominados problemas
enteros cero-uno (puros o mixtos).
Otra característica del problema que debe ser considerado es su dimensión temporal: si se considera
únicamente un período estaremos en el ámbito de la optimización estática. Si por el contrario el problema
incluye una dimensión temporal, con diferentes períodos de tiempo involucrados en el análisis, la
optimización pasa a denominarse dinámica.
Otro aspecto importante de un programa es su carácter respecto a la certidumbre. Un programa de
optimización se considera determinístico cuando los coeficientes de la función objetivo y las restricciones
son constantes conocidas. Cuando alguno de dichos coeficientes no es constante, sino que es variable, pero
se conoce su función de distribución el programa de optimización toma un carácter estocástico o
probabilístico. Si ni tan siquiera se conoce dicha función de distribución la programación pasa a ser
@jmpaz
2
posibilística. Esta clasificación se deriva de los entornos en los que se puede desarrollar cualquier problema
de la teoría de la decisión y la investigación operativa, de los que son parte las técnicas de optimización.
La acotación del tipo de programa de optimización, dado por las características que se acaban de
mencionar, es muy importante desde un punto de vista empírico ya que, por ejemplo, determina el
algoritmo matemático que se debe usar en su resolución.
Uno de los elementos básicos de las técnicas de programación matemática es la del modelo. En
cualquier ciencia un modelo es una descripción significada de la realidad; al ser simplificada nunca será
exacta, y es una cuestión importante definir cuál es el grado de aproximación que se acepta con la
simplificación, de modo que tal simplificación mantenga la situación real que se intenta describir. Así los
modelos de programación representan la realidad mediante la formulación matemática de la misma.
En la fase de construcción de los modelos la estructura propuesta por Heady y Candler´s
1º Determinación del espacio de variables de decisión.
2º Desarrollo de las restricciones del modelo.
3º Construcción de la función objetivo, determinando su dirección de optimización.
4º Desarrollo de la estructura del modelo, en un proceso iterativo de incorporación de restricciones,
eliminación de redundancias,... terminando con la formulación en forma matricial del mismo.
5º Chequeo de los coeficientes técnicos (en el objetivo y las restricciones) incorporados al modelo,
comprobando condiciones como unidades homogéneas o aditividad. También es de interés el escalamiento
del modelo de forma que el rango numérico de las variables no sea muy dispar entre ellas, lo cual agilizará
la búsqueda de solución del problema en bastantes algoritmos.
6º Chequeo estructural simple del modelo desarrollado, con un análisis numérico del mismo, viendo
la validez de las funciones matemáticas en las que son expresados objetivos y restricciones.
7º Simplificación del modelo, fundamentalmente eliminando restricciones contenidas
implícitamente en otras u otras. Es cada vez más frecuente que el software de resolución de este tipo de
problemas contenga módulos que realizan de forma automática esta función, especialmente importante
para simplificar procedimientos numéricos complejos.
8º Resolución del programa, utilizando el método y algoritmo apropiado a las características del
problema.
9º Validación del modelo: esta es una fase fundamentalmente empírica que trata de constatar si el
modelo tiene finalmente la utilidad para la que fue creado. En un modelo predictivo la realidad es la prueba
definitiva. Si el modelo es prescriptivo el test final de validación es el propio decisor.
@jmpaz
3
Descargar