Source: http://www.cs.us.es/~fsancho/?e=94
Timestamp: 2019-02-19 00:15:23+00:00

Document:
El modelado de problemas - Fernando Sancho Caparrini
9. Una introducción a Prolog (10710 vistas)
10. Entrenamiento de Redes Neuronales: mejorando el Gradiente Descendiente (9557 vistas)
« Sobre la Inteligencia… « || Inicio || » El auge de un joven p… »
Última modificación: 15 de Mayo de 2016, y ha tenido 5609 vistas
Etiquetas utilizadas: grafos || inteligencia artificial || modelado || simulacion
En numerosas ciencias se hace necesario el estudio y análisis de fenómenos del mundo real, y por ello se hace necesaria la aplicación del método científico a este estudio. Una de las fases de aplicación del método científico se basa en la construcción de modelos o formulación de hipótesis. En nuestro caso nos centraremos en la construcción de modelos.
Aunque hay numerosas acepciones y definiciones de un modelo, hemos elegido la de Aracil (1):
“Un modelo constituye una representación abstracta de un cierto aspecto de la realidad, y tiene una estructura que esta formada por los elementos que caracterizan el aspecto de la realidad modelada y por las relaciones entre estos elementos"
A partir de este concepto de modelo se pueden obtener distintas clasificaciones (icónico, analógico, simbólico, etc.). En nuestro caso, estamos interesados en los modelos matemáticos, es decir, aquellos modelos formales basados en la lógica matemática, y que se basan en un conjunto de relaciones matemáticas (en forma de ecuaciones, inecuaciones, relaciones lógicas, etc.) que se corresponden con las relaciones del mundo real (tales como relaciones tecnológicas, leyes físicas, restricciones del mercado, etc.). Aunque la importancia de la construcción de modelos matemáticos es evidente, vamos a enumerar algunas de las ventajas que presentan:
La construcción de modelos revela, a veces, relaciones que no son evidentes a primera vista. Este resultado se alcanza gracias al mejor conocimiento del problema que se adquiere cuando se empieza a modelar, al ir obteniendo más información de la realidad del fenómeno que se intenta representar.
Una vez construido el modelo matemático, es posible extraer de él propiedades y características de las relaciones entre los elementos que de otra forma permanecerían ocultas. También, es posible representar situaciones complejas que no son admisibles en otro tipo de modelos, y no sólo es esa posibilidad de modelización, sino también la de resolución del mismo, aunque no sea una solución analítica sino numérica (realizada por un ordenador).
En la mayoría de las situaciones del mundo real, no es factible experimentar con la realidad, ya que puede ser prohibitivamente caro, peligroso, o imposible. Por ejemplo, si se intenta conocer el impacto de la puesta en practica de una determinada acción de Política Económica en un determinado país. En este caso, para evaluar las consecuencias, se construye un modelo donde se puedan analizar los resultados en diversas situaciones con un coste prácticamente nulo y sin riesgos sociales ni económicos.
Es importante resaltar que un modelo está realmente definido por las relaciones que incorpora. Estas relaciones son independientes de los datos a introducir en el modelo, ya que un modelo puede ser usado para diferentes ocasiones y en varios contextos diferentes. Aunque acabamos de ver algunas de las ventajas de la modelización, sobre el uso de los modelos en la economía hay posturas diferentes, por una parte están las personas que ponen en tela de juicio la validez de los modelos, en tanto en cuanto, no son capaces de cuantificar muchas instancias de los problemas reales, por ejemplo, el coste o la utilidad social. Otros niegan su utilidad basándose en el grado de precisión de los datos a incorporar al modelo matemático. Pero frente a estos, en el otro extremo están los fervientes defensores de la modelización total para la toma de decisiones, en este caso convendría resaltar que la calidad de las respuestas que produce el modelo, depende obviamente, de la seguridad de su estructura y de los datos a él incorporados, y que una excesiva confianza en ellos es peligroso.
No vamos a entrar en esta polémica, sino que lo único que queremos es poner de manifiesto que los modelos deben usarse como una herramienta más para la toma de decisiones y que deben valorarse en su justa medida, ya que difícilmente es comprensible un problema complejo sin una mínima modelización, aunque también hay que reconocer que no es posible modelar la totalidad de las situaciones reales.
Con anterioridad nos hemos referido a tipos de modelos basados en sus formas de representación (iconico, analógicos, simbólicos), no obstante podemos establecer otros tipos de clasificaciones de los modelos matemáticos:
Clasificados según su función:
Modelos predictivos: Este tipo de modelos nos informan del comportamiento de la variable en un futuro, es decir, lo que debería ser. A este tipo de modelos corresponden aquellos basados en técnicas estadísticas y/o econométricas, es decir, modelos de previsión.
Modelos evaluativos: Una técnica evaluativa corresponde a medir las diferentes alternativas, y así poder comparar los resultados de ellas. Este tipo de modelos se corresponden con los denominados arboles de decisión.
Modelos de optimización: Se trata de modelos que tratan de identificar un optimo (por lo general, el optimo global ) del problema, es decir, buscan la mejor de las alternativas posibles. Estos métodos son los que están basados en las técnicas de programación matemática.
Otra clasificación de los modelos se basa en la realidad que pretender modelar, así podemos hablar de :
Modelos deterministas versus modelos estocásticos. En los modelos deterministas todos los datos del problema se conocen con absoluta certeza, mientras que cuando esto no es así tenemos los modelos estocasticos. Por lo general los modelos más realistas son los modelos estocasticos, pero tienen la dificultad de poderlos resolver adecuadamente, y muchas de las técnicas aplicables a los modelos estocasticos tratan de reducir el problema a su versión determinista para poderlo resolver.
Modelos estáticos versus modelos dinámicos. En un modelo estático la variable tiempo no desempeña un papel relevante, mientras que en los modelos dinámicos la variable fundamental, y de la que dependen las restante variables relevantes. Además, la variable tiempo se considera como una variable continua.
Una vez establecida una serie de clasificaciones de los modelos, es conveniente plantear una medida de su solución, ya que el objetivo de plantear el modelo es el poderlo resolver y extraer de la solución los resultados necesarios para la toma de decisiones. El nivel de resolubilidad de los problemas es función de tres características fundamentales:
El tamaño del problema: El numero de variables y ecuaciones que contiene. Cuanto mayor sea este numero, más difícil de resolver es.
La clase del problema: Lineal, Entero y No lineal, y además por ese orden, es decir, los problemas lineales son "fácilmente" resolubles, mientras que los no lineales son "intrínsecamente" difíciles de resolver.
El tipo de instancias utilizadas: Ciertas o deterministas, con riesgo (conocemos las probabilidades de ocurrencia),con incertidumbre (conocemos los resultamos posibles pero no las probabilidades de ocurrencia) y turbulencia ( no conocemos nada).
Fases del proceso de modelización
Acabamos de exponer algunas ideas generales sobre los modelos. Interesa, ahora, resaltar brevemente cuales son, en general, las etapas a seguir para llegar a construir un buen modelo:
Fase de Conceptualización. Llegar a tener un profundo conocimiento de la realidad que se trata de modelar, es decir, ser capaces de representar conceptualmente el problema sin ningún tipo de contradicciones lógicas ni de errores de análisis.
Fase de Formalización. Establecer de forma clara y correcta (desde el punto de vista matemático) las relaciones entre los elementos, de tal forma que, además, sea fácilmente entendible y que puedan detectar rápidamente los errores. El éxito de esta fase depende, obviamente, de que se haya establecido correctamente la fase anterior.
Fase de Evaluación. En esta fase, además de establecer la forma en la que debe ser el procedimiento de resolución a emplear, será posible interpretarlo correctamente.
Para la aplicación practica para modelar un problema de optimización podemos seguir los siguientes reglas basadas en la experiencia:
Análisis del problema. Buscar o intuir los deseos del decisor ( a veces no es la misma persona) de forma que se establezca claramente cual es el objetivo que se persigue, que limitaciones existen, etc. Todo ello debe tenerse en cuenta aunque no este formalizado, sino simplemente una relación de las diferentes condiciones.
Definición de las variables, es decir, identificar las posibles decisiones. Esta es una de las fases criticas de la modelización, por ello es conveniente prestar mucha atención a esta definición. Esta fase hay que identificar (e interpretar el significado ) y denominar a las variables. Este segundo aspecto, aunque puede parecer trivial es también de gran importancia. Hay que denominar a las variables de forma que sean fácilmente reconocibles, es decir, que nos indique que quieren representar. Muchas veces, se denominan a las variables, por sencillez, x1 , x2 , xb , etc., pero estos nombre no nos informan de forma inmediata de su significado, por ello es conveniente denominarlas de forma más coherentes, por ejemplo, si queremos identificar la cantidad de madera necesaria para producir mesas la podríamos denominar MADMESA en lugar de x2. La elección del nombre debe ajustarse a las características del decisor, y también a la longitud de caracteres admisibles por los programas de ordenador que resuelven estos problemas, por lo general seria admisible un nombre de hasta ocho caracteres. A la hora de identificar las variables tenemos que tomar en consideración si las variables son deterministas o estocasticas, si son endogenas o exógenas, etc., es decir, ante que clase de variables vamos a tratar en el problema.
Identificación y formalización de las restricciones. Esta es también una fase importante, posteriormente realizaremos algunos comentarios sobre esta fase al hablar de los problemas no lineales. Se trata en definitiva de identificar cuales son las limitaciones a las que esta sujeto el problema, y el plantearlas matemáticamente. A veces esto no resulta muy sencillo. En esta fase hay que denominar e identificar a las restricciones con los nombre adecuados, de forma que sea fácil interpretar los resultados obtenidos.
Por ultimo, hay que identificar la función objetivo, es decir, la cuantificación de los resultados que se desean alcanzar. Aunque no en todos los problemas es inmediato definir el objetivo, siempre es posible encontrar una función que permita evaluar los resultados de cada una de las acciones.
Para verificar estas condiciones, seguidamente abordaremos algunas consideraciones para llegar a concretar las fases enumeradas anteriormente, estos pasos son simplemente una derivación de las reglas del sentido común aplicadas a la construcción de los modelos.
En primer lugar, abordaremos algunos aspectos importantes sobre los modelos lineales, lo más usuales en el campo económico, para posteriormente ir aumentando la complejidad vía los modelos discretos y los modelos no lineales.
No obstante, estos principios generales se concretaran para el caso más general de los problemas no lineales.
Reglas básicas de modelización
Los modelos lineales son aquellos en los que tanto la función objetivo como las restricciones son funciones lineales y por tanto son susceptibles de resolverse a través de la programación lineal. Estos modelos, son los más conocidos y los más usados en las aplicaciones económicas, y por tanto no vamos a extendernos mucho sobre este aspecto, sino simplemente resaltaremos las hipótesis básicas sobre las que se asientan este tipo de modelos.
La primera hipótesis es la divisibilidad, es decir, todas las variables del modelo pueden tomar cualquier valor real. A efectos prácticos, si una variable no es infinitamente divisible, pero su nivel de actividad normal es muy grande en términos de sus unidades de medida, la suposición de divisibilidad puede servir como aproximación conveniente.
La segunda hipótesis es la de linealidad, estos significa:
Proporcionalidad en las contribuciones. La contribución individual de cada variable es estrictamente proporcional a su valor, y el factor de proporcionalidad es constante para todo el rango de valores que la variable puede tomar.
Aditividad de las contribuciones. La contribución total de todas las variables es igual a la suma de las contribuciones individuales independientemente de los valores de las variables.
La tercera hipótesis, aplicable fundamentalmente a los problemas económicos, es la no negatividad de las variables del problema. Esta hipótesis, no es en si absolutamente necesaria, ya que para problemas más generales donde las variables puedan tomar cualquier valor, es decir, lo que se conoce como variables libres, estas pueden expresarse como diferencia de dos variables restringidas a tomar valores no negativos.
Al ir eliminando algunas de esta hipótesis básicas de los modelos lineales aparecen los casos más generales, por una parte los modelos discretos o enteros que surgen al suprimir la hipótesis de divisibilidad, y por otra parte los modelos no lineales, los cuales tienen su origen al relajar la condición de linealidad de las relaciones.
Los modelos enteros, como hemos dicho anteriormente, surgen al eliminar la hipótesis primera de los modelos lineales, es decir, al exigir que las variables tomen solo valores enteros. En este caso aparece la denominada programación discreta o entera, y en el caso de mantener la hipótesis de linealidad, tenemos su representación más característica que son los modelos lineales y enteros,
Vamos a considerar una serie de reglas generales, aplicables tanto a los problemas lineales, enteros o no lineales, y posteriormente se hará hincapié en algunas reglas especificas para modelos particulares.
Vamos a enumerar algunas de las situaciones y condiciones que deben tenerse en cuanta a la hora de construir modelos enteros (3) y modelos no lineales (4):
Formular, primero, un modelo sencillo e ir agregándole características en consonancia con la dirección de optimización deseada. Un modelo a optimizar debe ser desarrollado buscando un equilibrio razonable entre la seguridad en el modelo (lo que usualmente implica añadir complejidad a la formulación) y la facilidad de optimización. Esto puede conseguirse utilizando un procedimiento de optimización sobre versiones cada vez más complejas del modelo, es decir, en forma de un refinamiento 'paso a paso'. Con ello se consigue que los efectos sobre el modelo de la introducción de mayor complejidad puedan ser de alguna forma "visualizados", y poder así descubrir mucho antes las dificultades importantes que si el modelo se plantea de forma directa en su versión más completa. Este procedimiento iterativo de la construcción de modelos esta especialmente indicado cuando tenemos que modelar un sistema con algunos subsistemas interconectados, y en los cuales cada uno de ellos requiere extensos cálculos. En el caso particular de los modelos enteros, antes de decidir la construcción de un modelo entero, debe hacerse una estimación del tamaño potencial, ya que si el numero de variables enteras es de algunos cientos y el modelo no tiene alguna estructura especial, es probable entonces que el programa entero sea demasiado costoso de resolver. (Conviene resaltar que los problemas enteros son no polinomiales, es decir, que el tiempo de resolución crece de forma exponencial con relación al numero de restricciones, pero especialmente con relación al numero de variables enteras que contenga el modelo). También en los problemas enteros, si el modelo construido resulta demasiado difícil de resolver por los métodos generales de programación entera, es posible a veces recurrir a los denominados métodos heurísticos que en determinadas ocasiones pueden producir aproximaciones bastante buenas para los problemas de grandes dimensiones.
Evitar definir en un modelo funciones que sean el resultado de algún procedimiento iterativo (como la solución de una ecuación diferencial o la resolución de una integral). Las funciones del modelo definidas por un procedimiento iterativo son, a menudo, una fuente de discontinuidades que pueden impedir el avance de los procesos de optimización. La solución de estos subproblemas (aunque sea posible definirla con una precisión total) requiere un considerable esfuerzo computacional, y esto puede considerarse como un despilfarro, dado que la integral, la ecuación diferencial, etc., solo es una aproximación de algún fenómeno social más complicado. Por ello, una estrategia a seguir en este caso consiste en discretizar el problema antes de aplicar el procedimiento de optimización, ya que las soluciones exactas de los problemas continuos se encuentran por refinamientos en la discretización entre las optimizaciones. Como pone de manifiesto esta estrategia se ve, nuevamente, lo valioso de intercalar modelización y optimización, puesto que la obtención de un grado creciente de exactitud es simplemente un proceso de modelización.
Tomar con precaución la naturaleza de las restricciones. Es importante analizar la naturaleza de las restricciones que intervienen en el problema con el fin de extraer de ellas sus propiedades para mejorar la eficacia de los métodos de optimización que debemos usar. A la hora de construir un modelo debemos separar las restricciones lineales, no lineales y de acotación, no solo para poder analizar mejor el modelo, sino también para servirnos de orientación acerca del software que debemos usar en cada caso concreto. Debemos, evitar la transformación de un tipo de restricciones en otro. La transformación de un problema de una forma a otra era en el pasado, a veces, inevitable cuando los algoritmos para la optimización no restringida eran más numerosos y más efectivos que los algoritmos de optimización restringida. Era una practica común, por ejemplo, en el caso de las restricciones de acotación es el transformarlas mediante un cambio de variable. No obstante, hoy por hoy, esta practica no es aconsejable y es más bien perjudicial, ya que los algoritmos para problemas con solamente restricciones de acotación simple o de cota generalizada son más eficientes que los algoritmos para problemas no restringidos. Y además, en la actualidad se tiende a incorporar restricciones de acotación sobre las variables con el fin de acelerar el proceso. En el caso de problemas enteros, realizar un examen en profundidad de la estructura del programa entero puede resultar muy valioso. Puede ser, por ejemplo, un modelo de problema entero puro con una estructura unimodular, y en este caso podría usarse la programación lineal, la cual en un tiempo razonable resuelve un problema con miles de variables y restricciones. Si el problema no tiene una estructura unimodular pero es parecida, seria posible transformarlo, y en este caso siempre podría recurrirse a la literatura y a la experiencia computacional para informarse acerca de la naturaleza y de las dificultades de los problemas con estructura similar.
No evitar las restricciones de igualdad. En este caso, no se trata tanto de convertir las restricciones lineales de igualdad en dos restricciones de desigualdad con signos opuestos, sino que se trata más bien de poner de manifiesto una practica que también era habitual antaño. El procedimiento era el siguiente: las variables se dividían en dos conjuntos, las variables "independientes" y las variables "dependientes", de tal modo que la optimización se realizaba únicamente con las variables independientes y las variables dependientes se determinaban al "resolver" las restricciones de igualdad, es decir encontrando la solución a ese sistema de ecuaciones no lineales formado por las variables dependientes una vez hallados los valores de las otras variables. Esta practica, que como hemos dicho era habitual antaño debido a las deficiencias del software, en la actualidad es de todo punto inviable no solo por lo erróneo del procedimiento sino también porque el esfuerzo computacional que requiere no compensa la realización de la optimización completa.
Distinguir entre las restricciones "hard" y "soft". Se denota, por lo general, restricciones "hard" a aquellas restricciones que no es posible violarlas, mientras que por restricciones "soft" se denotan aquellas restricciones en las que esta permitido que puedan violarse, si con ello se consigue una mejora sustancial, tanto en el modelo como en el procedimiento de optimización. Por ejemplo, en un modelo de planificación de la producción la disponibilidad de espacio de la planta seria una restricción del tipo "hard", es decir que no puede violarse, mientras que las disponibilidades de mano de obra no especializada seria una restricción "soft", restricción que podría violarse contratando a nuevos trabajadores a corto plazo. En general, las restricciones "soft" suponen un coste por la violación, por tanto, se trata de evaluarel coste de esa violación en términos de mejora de la función, y por ello, también se introducen variables de desviación para poder evaluar este impacto. Una consideración sobre la introducción de estas variables la podremos ver en el capitulo dedicado a la optimización con objetivos múltiples.
Evitar crear modelos que tengan restricciones de igualdad similares, es decir, que sean casi dependientes.El plantear modelos con restricciones que sean muy similares puede provocar que al introducir pequeñas variaciones en los datos del modelo se produzca una distorsión muy grande en los resultados esperados del modelo. Recuérdese que los puntos factibles del modelo se obtienen de la intersección de todas las restricciones, cuando dos restricciones son casi dependientes se convierten en casi paralelas, con lo que ello significa de alteración de las posibles soluciones.
Usar toda la información disponible sobre el problema para el escalamiento de las variables y las restricciones. La escala de un problema es la medida de la importancia de las variables y las restricciones, es decir, es una magnitud que nos informa de que es "grande" o "pequeño" en el modelo, es decir, de lo importante o no que puede resultar una variable o una restricción en el conjunto del modelo. Es importante resaltar la trascendencia respecto de la correcta resolución del modelo, el que tanto las variables como las restricciones estén perfectamente escaladas, es decir, este correctamente ponderada su importancia. Ello significa, tomando como ejemplo una variable, que si el valor que se espera pueda tomar al resolver el modelo tenga un numero significativo de dígitos (por ejemplo, la variable representa varios miles de millones de pesetas) en este caso seria conveniente que en lugar de expresar la variable en bolívares se expresase en millones de bolívares, con ello se evita la perdida de significación que se produce por la necesidad de almacenamiento en los ordenadores. Un caso similar, pero de significado opuesto ocurre cuando la magnitud de la variable es infinitesimal. Por ejemplo, en un problema de mezcla cuando la magnitud de la variable es de orden de 10 (6), en este caso el considerar la variable en su valor normal puede producir errores ya que el ordenador puede considerar este valor, significativo para el análisis, como cero si es inferior a la condición de tolerancia de factibilidad definida, y por ello seria conveniente amplificar su valor tomando el significado de la variable como millonésimas partes. El obviar estas consideraciones puede repercutir negativamente en la exactitud de la solución. Hay que notar que estas transformaciones tendrán un efecto posterior sobre otras magnitudes del la solución, por ello hay que tener la precaución de una vez resuelto el problema interpretar correctamente los resultados y las posibles implicaciones. Un ejemplo de este tipo de escalamiento, así como su correcta interpretación lo analizaremos con posterioridad al ver algunas aplicaciones de la programación lineal.
Verificar cuidadosamente todos los datos introducidos en el problema. La introducción de datos es la fuente de la mayoría de los errores que se producen en la resolución de los problemas, por ello habrá que revisar varias veces, y a ser posibles por persona distinta, todos los datos introducidos en el problema, ya que se trata de los errores de más difícil detección y con ello la generación de soluciones no adecuadas al fin perseguido es muy común.
En el caso de los problemas no lineales, tendremos que añadir una serie de reglas adicionales a las expuestas con anterioridad.
Intentar modelizar con funciones que sean diferenciables. Posiblemente, la propiedad más importante de las funciones en los modelos con respecto a la facilidad de optimización sea la diferenciabilidad, esto es importante ya que la mayoría de los algoritmos están basados sobre el uso de la información disponible en un punto para deducir su comportamiento en otros puntos. Si las funciones del modelo son de clase C (2), la capacidad de un algoritmo para localizar las soluciones óptimas se ve muy favorecida en comparación con los modelos similares, donde las funciones son no diferenciables. Otra de las ventajas de modelar funciones diferenciables, esta relacionada con la convergencia propia de cada algoritmo, así como con la precisión tanto de la función como de la precisión relativa de las maquinas sobre las que se va a resolver el problema.
Tratar de obtener la mayor cantidad de información posible sobre la función. De forma que podamos tomar en consideración la mayoría de las propiedades importantes de cara al proceso de optimización posterior. Como ya hemos dicho anteriormente, una de las propiedades deseables es construir funciones que sean diferenciables, de forma que se puedan usar algoritmos diferenciales en el proceso. Otra de las características importantes a conseguir seria que la función verifique alguna propiedad relacionada con la convexidad para así poder tener un mayor numero de elementos de juicio acerca de la naturaleza y calidad de la solución.
Verificar cuidadosamente las funciones del problema, así como una correcta determinación de un punto de partida. Antes de empezar el proceso de optimización con el algoritmo especificado es absolutamente necesario verificar la correcta introducción de las funciones que haya definido el usuario, ya que ello proporciona el error más común. Tales errores no son nunca pequeños, y ningún algoritmo puede funcionar correctamente ente la presencia de inexactitudes en la evaluación de dichas magnitudes. Así mismo, todos los algoritmos necesitan de un punto de partida para iniciar la búsqueda del optimo, por ello es vital elegir un buen punto de partida, o mejor dicho, no partir de un mal punto. Podemos denominar puntos de partida "malos" aquellos que producen algún problema en la función, por ejemplo, puntos donde se anula alguna derivada, punto donde no esta definida la función, etc.
(1) Aracil, J. (1983): "Introducción a la dinámica de sistemas". Ed. Alianza. Madrid. Pág. 18
(2) Williams, H.P. (1978): "Model Building in Mathematical Programming".John Wiley & Sons. Nueva York. Pág. 3
(3) Williams H.P., op.cit. Pág 213.
(4) Gill, P.E.; Murray, W.; Saunders, M.A. y Wright, M.H. (1985): "Model building and practical aspects of nonlinear programming". NATO ASI Series. Vol F15. Springer-Verlag. Berlin - Heildelberg. Pág 209 - 247.
Wikipedia: Modelado Matemático
Wikipedia: Modelado Computacional
Wikipedia: Modelo Científico
Wikipedia: Modelo Físico
Wikipedia: Simulación
JASSS: Why Model? J. M. Epstein (2008)
Coursera: Model Thinking. Scott E. Page
10. Ejercicios de Lógica Proposicional (10277 vistas)

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución