MODELIZACIÓN
2.1.- MODELOS: CLASIFICACIÓN
En numerosas ciencias, entre ellas la Economía, 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. Como acabamos de ver con anterioridad una de las fases de la 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 (iconico, analógicos, 
simbólicos, etc.), sin embargo, solo estamos interesados en los modelos matemáticos, es decir, 
los modelos formales basados en la lógica matemática, y se basan en un conjunto de relaciones 
matemáticas (tales como 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.). La importancia de la construcción de los modelos matemáticos en la Economía 
es evidente, no obstante vamos a enumerar algunas de ellas (2):
1.)  La construcción de modelos revela, a veces, relaciones que no son evidentes a primera vista. 
Este resultado se alcanza con el mejor conocimiento que se adquiere cuando se empieza a 
modelar, es decir, cuando mejor se va conociendo la realidad del fenómeno que se intenta 
representar.
2.)  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).
3.)  En la mayoría de las situaciones económicas del mundo real, no es factible experimentar con 
la realidad, ya que puede ser prohibitivamente caro, peligroso ó hasta, 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 esta 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:
a)  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.
b)  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.
c)  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).
2.2.- 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:
1.- 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.
2.- 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.
3.- 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:
a) 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 .
b) 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.
c)  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.
d) 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.
2.3.- REGLAS BÁSICAS DE MODELIZACIÓN
De curso anterior ya tenemos una serie de ideas básicas sobre los modelos, aunque ahora nos 
interesa profundizar en algunos aspectos que se trataron de una forma superficial. 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:
a) 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.
b) 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)
1.- 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).Véase a este respecto, el 
anexo de este capitulo.
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.
2.- 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.
3.- 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.
4.- 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.
5.- 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 evaluar
el 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.
6.- 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, para
ilustrar este caso consideremos el siguiente pequeño ejemplo, de un sistema lineal de dos 
ecuaciones con dos incógnitas:
Sea el sistema:
                                            x +           y = 2
                                            x + 1,0001 y = 2
este sistema tiene como solución : x = 2 e y = 0.
Pero consideremos ahora una pequeña variación en el termino independiente de la segunda 
restricción, es decir, que en lugar de ser 2 sea 2,0001, el nuevo sistema es:
                                          x  +  y = 2
                                          x + 1,0001 y = 2,0001
este sistema tiene como solución: x = 1 e y = 1, notablemente distinta de la anterior. Por tanto, en 
la medida de lo posible debemos evitar el construir en el modelo este tipo de restricciones.
La razón está en que el determinante de la matiz esta muy próximo al valor cero, es decir, es una 
matriz casi-singular.
7.- 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. 
8.- 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.
1.- 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.
2.- 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.
3.- 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.
2.4.- COMPLEJIDAD
Vamos a describir el tamaño y el tiempo de resolución en los problema enteros-binarios. Así, por 
ejemplo, consideremos un problema con el siguiente numero de variables:
Si hay una variables binaria el numero de posibles soluciones es 2. Si tenemos dos variables el 
numero de soluciones es 2^2  = 4. Si las variables son tres, las soluciones son 2^3 = 8, y así 
sucesivamente, de la forma 2^n. 
Muchas veces no somos conscientes de la numerabilidad de las soluciones, así como de su 
dificultad.
Por ejemplo, si tenemos un problema con 10 variables binarias, el numero de soluciones posibles 
es de 2^10 = 1.024.
Si duplicamos las variables, es decir, tenemos 20variables, el número de posibles soluciones es 
de 2^20 = 1.048.576.
Si observamos que el numero de variables se ha multiplicado por 2 el numero de posibles 
soluciones se ha multiplicado por 1.024.
No obstante, creo que merece la pena analizar un poco mas el tema de la complejidad de los 
problemas. Supongamos que tenemos un problema con 100 variables binarias (de tamaño pequeño
-medio). Como ya sabemos, el numero de posibles soluciones es de 2^100. Parece un numero 
grande pero no sabemos cuanto, si lo transformamos en potencia de 10, tenemos: 1,26765E+30, 
es decir un numero con 30 cifras. Parece grande, pero veamos realmente lo difícil que resulta 
analizar todas las soluciones. Para ello supongamos que disponemos de un ordenador capaz de 
analizar todas las combinaciones posibles. Ese ordenador será un CRAY-1, se trata de un tipo de 
supercomputador que de manera informal se utiliza para poder comparar la velocidad de las 
operaciones de los supercomputadores. Este ordenador es capaz de analizar 1000 millones de 
operaciones por segundo, es decir, se trata de un ordenador capaz de evaluar
1000 millones de posibles soluciones del problema binario con 100 variables. La pregunta es 
cuanto tiempo tardaría este superordenador en evaluar todas las posibles soluciones: 10 minutos, 
15 días, 3 meses, cuanto?. La respuesta son simples operaciones.
Si en un segundo es capaz de analizar 100 millones, es decir, 1E+9. Bastara con dividir el número
de posibles soluciones por 1E+9, y ver cuantos segundos son:
1,26765E+30 / 1E+9 = 1,26765E+22 segundos.
Si transformamos esos segundos en minutos tenemos:
1,26765E+22 / 60 = 2,11275E+20 minutos
Si transformamos los minutos en horas tenemos:
2,11275E+20 / 60 = 3,52125E+18 horas.
Así sucesivamente, pero ya vemos que el numero de horas es grande, pero hasta cuanto tiempo 
seria necesario. 
La respuesta es 4.075.523 millones de siglos. Si tenemos en cuanta que el Big Bang (origen del 
universo fue entre 12.000 y 20.000 millones de siglos), podemos llegar a la conclusión que aun 
disponiendo de un superodenador desde el comienzo de los tiempos, aun nos faltarían varios 
millones de millones de siglos para poder evaluar todas las soluciones de un problema de 100 
variables binarias.
Si mejoramos es ordenador y este es capaz de realizar 100 BILLONES de operaciones ( es decir 
100 millones de millones de operaciones), es este caso la cosa mejora notablemente ya que en 
este caso solamente son necesarios 4 millones de siglos.
 
Ref: 
(1) Aracil, J. (1983): "Introducción a la dinámica de sistemas". Ed. Alianza. Madrid. Pág. 18
(2) Puede verse a este respecto, Williams, H.P. (1978): "Model Building in Mathematical 
Programming".John Wiley & Sons. Nueva York. Pág. 3
(3)  Williams, op.cit. Pág 213.
(4)  Véase a este respecto: 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.