Artículos

Deducción de un nuevo algoritmo para la resolución de problemas de optimización con restricciones

Deduction of a new algorithm for solving constrained optimization problems

Manuel Vázquez Mourazos
Escuela Waldorf Meniñeiros, España

Deducción de un nuevo algoritmo para la resolución de problemas de optimización con restricciones

Revista Digital: Matemática, Educación e Internet, vol. 22, núm. 1, pp. 1-19, 2021

Instituto Tecnológico de Costa Rica

Recepción: 13 Septiembre 2020

Aprobación: 10 Mayo 2021

Resumen: Con el objetivo de aportar una nueva visión en la resolución de algunos problemas de optimización, este artículo versará acerca de la deducción de un nuevo método numérico en optimización. Para ello, se planteará una modelización genérica de los problemas que se pretenden resolver. De este modo, se introducirán los preliminares necesarios para poder proceder con la deducción que posteriormente se hará. En este sentido, el método planteado se enmarcará dentro de los métodos de direcciones factibles, por lo que se introducirán conceptos topológicos sencillos (relacionados con el conjunto admisible) y definiciones relacionadas con las direcciones factibles y de descenso que se podrán considerar. Posteriormente se procederá con la deducción del algoritmo que presenta este artículo, procurando que el lector pueda observar el procedimiento de construcción del mismo. Además, se introducirán los aspectos computacionales del método y se propondrán una serie de códigos que permitirán implementar el algoritmo en un lenguaje de programación, en el caso de este artículo se utilizará MatLab. Finalmente se mostrarán los resultados obtenidos al ejecutar el método junto con otros métodos ya conocidos para poder comparar los resultados. De esta forma, se finalizará aportando las conclusiones más relevantes y las futuras líneas de investigación para mejorar el métodopresentado.

Palabras clave: optimización con restricciones, programación matemática, dirección de descenso, dirección factible, discretización, método de Gram-Schmidt, método de direcciones factibles.

Abstract: With the aim of providing a new vision in solving some optimization problems, this articlewill deal with the deduction of a new numerical method in optimization. To do this, a generic modelingof the problems to be solved will be proposed. In this way, the necessary preliminaries will beintroduced to be able to proceed with the deduction that will be made later. In this sense, the proposedmethod will be framed within the feasible directions methods, for which simple topological concepts(related to the admissible set) and definitions related to the feasible and descent directions that maybe considered will be introduced. Subsequently, we will proceed with the deduction of the algorithmpresented in this article, ensuring that the reader can observe the procedure for its construction. Inaddition, the computational aspects of the method will be introduced and a series of codes will beproposed that will allow the algorithm to be implemented in a programming language. In the caseof this article, MatLab will be used. Finally, the results obtained when executing the method will be shown together with other methods already known to be able to compare the results obtained. In thisway, it will be concluded by providing the most relevant conclusions and future lines of research toimprove the presented method.

Keywords: constrained optimization, mathematical programming, descent direction, feasible direction, discretization, GramSchmidt method, feasible direction methods.

1. Introducción

La optimización es una disciplina matemática estudiada desde hace tiempo. Importantes matemáticos como Pierre de Fermat (1601-1665) en su memoria Methodus ad disquirendam maximan et minimam (escrita sobre 1629 pero publicada en 1679 después de su muerte por su hijo Samuel), ya estableció reglas para el cálculo de máximos y mínimos. También Joseph Louis Lagrange (1736-1813) en su publicación Mécanique Analytique (1788-89), fue capaz de hallar fórmulas basadas en el cálculo que permitieron caracterizar los valores óptimos que optimizaban ciertos problemas de optimización. Otros, dieron solución a problemas clásicos que ya se enmarcaban dentro del contexto de la optimización, como Leonhard Euler (1707-1783), con su famoso problema de los siete puentes de Königsberg. Además, cabe resaltar las aportaciones de Isaac Newton (1642-1727) y Johann Carl Friedrich Gauss (1777-1855) los cuales propusieron métodos iterativos que convergiesen a un óptimo.

Posteriormente, a mediados del siglo XX se resolvieron problemas más complejos dentro de esta disciplina. En esta época, se produjo un impulso del estudio de estos problemas; así, se puede consultar [3, pags. 326 - 332] para comprobar la aplicabilidad de los mismos. Además, desde el punto de vista matemático, la resolución de estos problemas resulta especialmente interesante al requerir de distintos conocimientos matemáticos como la topología, el análisis o la matemática computacional. Este hecho, se puede apreciar en [5], ya que en esta obra se puede observar la optimización desde un punto de vista teórico, estudiando casos especiales que ofrecen situaciones idílicas en las que es fácil calcular un óptimo.

Hogaño, debido a la amplia (y creciente) uso de la optimización en ciencia, ingeniería, economía e industria, tal y como se comenta en el prefacio de [12], se hace esencial el estudio de nuevos algoritmos que resuelvan este tipo de problemas. De hecho, hoy en día todas las empresas desean utilizar la optimización en sus procesos de fabricación, desde ahorrar los costes hasta maximizar los beneficios obtenidos. El estudio e implicación de esta disciplina en otras ramas del conocimiento, se puede ver en estudios como los que se incluyen en [7], [6], [9] o [15].

En este artículo se presentará la deducción de un nuevo algoritmo de resolución en los problemas de optimización en varias variables con restricciones. Para ello se realizará una reseña de los resultados más importantes que se utilizarán de forma reiterada. En concreto, se introducirá la definición genérica del problema de estudio, junto con definiciones topológicas que permitan caracterizar el conjunto admisible y las direcciones de descenso, las cuales cobrarán gran importancia en el algoritmo que se planteará. A continuación, se introducirá la deducción del método que presenta este artículo. En esta sección se propondrá la construcción de una sucesión que converja al valor óptimo del problema.

Para ello, se propondrá una idea intuitiva, cuya eficacia quedará entredicho al plantear un contraejemplo, lo que permitirá visualizar una carencia en este sentido. Luego, a partir de la visión del contraejemplo se introducirá una definición que permita solventar la dificultad observada. A partir de este punto, se incluirán una serie conceptos como las coordenadas esféricas en un espacio n-dimensional o el método de Gram-Schmidt para poder exponer un algoritmo aplicable. Finalmente, se estudiarán los aspectos computacionales del algoritmo para poder implementarlo en un lenguaje de programación numérica, concretamente se utilizará MatLab. De este modo, se hará una serie de ejecuciones para comprobar el funcionamiento del método planteado y se comparará con las soluciones exactas a los problemas resueltos y con los resultados obtenidos por otros métodos ya conocidos.

Con este artículo se pretende aportar una nueva visión en la resolución de algunos problemas de optimización. A partir del método propuesto, este queda a objeto de estudio del lector con vistas a una posible mejora en sus aspectos computacionales u otros que se consideren.

Notación 1

Antes de comenzar con la redacción, se hacen las siguientes aclaraciones correspondientes a lanotación que se empleará en lo sucesivo:

1. A lo largo del artículo se emplearán escalares, vectores y matrices de forma frecuente. Para diferenciarlos, se escribirá a los vectores en letra negrita minúscula (por ejemplo v), a las matrices por letra negrita mayúscula (por ejemplo M) y en letra normal minúscula a los escalares (por ejemplo k).

2. El empleo de los vectores será muy reiterado. Dado un vector v , si se desea referirse a su componente i-ésima, esta se denotará en letra normal minúscula con el subíndice, es decir, v i .

3. En una sucesión de vectores, se denotará al vector k-ésimo de la sucesión con la siguiente escritura: v k .

4. A los conjuntos se les denotará en letra normal mayúscula, por ejemplo S. El término Int(S) se refiere al interior del conjunto y S para denotar a la frontera del conjunto.

5. Dada una función f : n , se denotará por f ( x ) al valor del gradiente de la función f evaluado en el vector (o también se denominará por punto) x .

6. Si f ( x ) y g ( x ) son funciones definidas en un entorno de un punto x 0 , entonces f = o ( g ) cuando x x 0 , si y sólo si, para todo ε > 0 se tiene que | f ( x ) | < ε | g ( x ) | para todo x en un entorno de x 0 .

7. Se utilizará el concepto de la esfera unitaria n -dimensional, que se denotará por S n y se definirá del siguiente modo: S n = { x n : | | x | | = 1 }

2. Preliminares

Antes de comenzar con la deducción del método que se expondrá en este artículo, se hará una recopilación de preliminares que se utilizarán con cierta frecuencia. Para la realización de estos preliminares se consultaron las referencias: [2], [12], [16], [17], [13], las cuales se pueden aportar una mayor ampliación de los contenidos aquí mostrados.

En este artículo se considerará el problema (1),

(1)

Este problema pretende minimizar la función J ( v ) , denominada funcional objetivo, en un subconjunto de su dominio, el cual se denominará conjunto admisible o factible. Según las restricciones, φ i ( v ) , el conjunto admisible quedaría definido del siguiente modo:

S : = { v n : φ i ( v ) 0 , i = 1 , . . . , m }

De esta manera, el problema inicial (1) se podría reescribir considerando la notación mostrada en (2),

mín v ∈S J ( v ) (2)

Para resolver el problema (2) se cuentan con múltiples opciones de algoritmos. Algunos de ellos se basan en la creación de una función auxiliar cuyo mínimo en todo su dominio coincida con el mínimo del problema de estudio, otros se caracterizan por la transformación del problema (2) en un problema cuya solución se pueda calcular de un modo más sencillo (como los métodos SQP). Sin embargo, en este artículo se presentará un método que tiene en consideración el concepto de dirección factible, se podría consultar [17, Cap. XI] para estudiar métodos inscritos en esta disciplina. Por este motivo, a continuación se introducirán una serie de definiciones y resultados que serán de enorme importancia para la deducción del algoritmo final.

Definición 1

Dado un funcional J : n y un conjunto admisible S , se dice que u es solución al problema (1) si se verifica que existe un ε > 0 tal que,

J ( u ) J ( v ) , v S B ( u , ε ) ,

donde B ( u , ε ) denota a la bola de centro u y radio ε

Para resolver el problema (2) se cuentan con múltiples opciones de algoritmos. Algunos de ellos se basan en la creación de una función auxiliar cuyo mínimo en todo su dominio coincida con el mínimo del problema de estudio, otros se caracterizan por la transformación del problema (2) en un problema cuya solución se pueda calcular de un modo más sencillo (como los métodos SQP). Sin embargo, en este artículo se presentará un método que tiene en consideración el concepto de dirección factible, se podría consultar [17, Cap. XI] para estudiar métodos inscritos en esta disciplina. Por este motivo, a continuación se introducirán una serie de definiciones y resultados que serán de enorme importancia para la deducción del algoritmo final.

Definición 2

Dado un punto v S y d n no nulo, si existe un δ > 0 de tal forma que v + t d S , para todo t [ 0 , δ ] , entonces se dice que d es una dirección factible de S en v . Además, el conjunto de dichas direcciones factibles se denotará como:

tal que v + t d S ; t [ 0 , δ ] } .

Observación 1

Para profundizar en la visión geométrica del concepto de dirección factible, se puede consultar [8, pags. 387-393].

Definición 3

Dado un punto v S , se define el conjunto de restricciones activas de v como sigue:

I ( v ) : = { i { 1 , . . . , m } : φ i ( v ) = 0 }

La Definición 2 hace referencia a aquellas direcciones, a partir de las cuales, se puede desplazar una cierta distancia, desde un punto admisible, permaneciendo en el conjunto factible. En la Figura 1 se muestran algunos ejemplos. En ella se vislumbra un conjunto admisible (el conjunto rayado) y desde algunos puntos se dispersan una serie de direcciones que permiten desplazarse a través de ellas permaneciendo en el conjunto.

En este artículo, el método que se planteará utilizará las direcciones factibles como punto de partida. Esta idea se inscribe en aquellos métodos que se conocen con el nombre de métodos de direcciones factibles. La idea consiste en partir de un punto cualquiera del conjunto admisible y, a partir de él,

Ejemplos de direcciones factibles.
Figura 1:
Ejemplos de direcciones factibles.

moverse a través de direcciones factibles que permitan descender el valor del funcional. Para ello, es necesario establecer la Definición 4.

Definición 4

Dado un punto v 2 S, se define el conjunto de restricciones activas de v como sigue:

J ( v + t d ) < J ( v ) para algún t ,

entonces d es una dirección de descenso de J en el punto v .

La Definición 4 caracteriza a las direcciones correspondientes a un punto dado que permiten descender el valor del funcional. Este hecho se puede comprobar utilizando la fórmula de Taylor. Pues bien, partiendo de un punto arbitrario v S se puede desarrollar la expresión (3),

J ( v + t d ) = J ( v ) + t Δ J ( v ) T d + o ( t ) (3)

Así, es fácil comprobar que,

(4)

si y sólo si, d es una dirección de descenso de J correspondiente al punto v .

Por consiguiente, dado un punto factible cualquiera, la idea que se enmarca dentro de los métodos de direcciones factibles, es la de moverse dentro del conjunto admisible a través de direcciones de descenso que sean factibles. De este modo, una vez que se obtenga un punto para el que no existen direcciones de descenso que sean admisibles, se habrá conseguido un mínimo al problema de partida.

En la Figura 2 se muestra un ejemplo del hecho comentado. En la gráfica se aprecian las curvas de nivel del funcional objetivo J ( v ) = 1 . 8 - 1 . 5 v 1 2 + v 2 2 · s i n ( v 1 ) c o s ( v 2 ) y una elipse que delimita el conjunto admisible. El mínimo del problema se sitúa en el origen, el punto marcado en la gráfica, y de él salen distintas direcciones que delimitan el cono de las direcciones de descenso en el punto. Sin embargo, ninguna de esas direcciones permite permanecer en el conjunto admisible, por lo que no existen direcciones factibles de descenso.

Ejemplo de imposibilidad de descenso a través de direcciones de descenso dentro de un conjunto factible considerando el funcional objetivo J(v).
Figura 2:
Ejemplo de imposibilidad de descenso a través de direcciones de descenso dentro de un conjunto factible considerando el funcional objetivo J(v).

3. Deducción del método

En esta sección se deducirá el método a estudiar en este artículo. Para ello se comenzará aproximando el problema original (1) por el problema (5),

(5)

para un valor suficientemente pequeño de ε > 0 .

La ventaja de esta notación radica en que el conjunto admisible S es abierto. Por tanto, dado un punto v S existe un conjunto abierto W S tal que v W S . Entonces, tomando δ = mín y W | | y v | | se tiene que cualquier dirección d n , con | | d | | = 1 , es admisible, pues v + t d S para todo t [ 0 , δ ] .

Hecho este análisis, el objetivo es conseguir, a partir de un punto factible inicial u ( 0 ) S cualquiera, una sucesión { u ( k ) } k u , donde u es un mínimo local del problema (5). En este sentido, se optará por construir la sucesión de tal forma que se reduzca el valor del funcional en cada iteración del método, es decir, la sucesión { u ( k ) } k se construirá de tal manera que:

J ( u ( k + 1 ) ) < J ( u ( k ) ) < . . . < J ( u ( 1 ) ) < J ( u ( 0 ) )

Con este objetivo, se propone descender por el conjunto admisible a través de direcciones de descenso. Generalmente no todas las direcciones de descenso son admisibles, pero debido a que DF ( v , S ) = n para todo v S , entonces cualquier dirección de descenso es factible.

Intuitivamente se podría considerar, en un primer momento, como dirección de descenso en la iteración k-ésima el valor de J ( u ( k ) ) , pues esta es la dirección de máximo descenso en un punto. Sin embargo, este razonamiento intuitivo (que parecería funcionar) no resulta de utilidad debido a las posibles formas que puede tomar el conjunto factible. A continuación se presenta el siguiente Contraejemplo 1 propio, propuesto en este artículo, para visualizar un caso.

Contraejemplo 1

Se considera el problema de minimización

(6)

Representación del contraejemplo 1
Figura 3:
Representación del contraejemplo 1

En la Figura 3 se representa el problema 6. Tomando como punto inicial u ( 0 ) = ( 1 , 5 / 2 ) T (el punto verde) y como dirección de descenso d ( 0 ) = J ( u ( 0 ) ) , lo que se obtendría es un punto contenido en la recta roja de la imagen (dentro del conjunto admisible). Procediendo sucesivamente, sin salir del conjunto factible, se obtendría como punto de acumulación el ( 1 / 2 , 5 / 4 ) T (el punto morado de la representación) que dista una distancia de 0.55902 unidades del mínimo del problema (que es el ( 0 , 1 ) T ). Por consiguiente, no se está convergiendo a la solución que se busca.

Entonces, por el motivo visto en el Contraejemplo 1, es necesario ampliar el concepto de dirección de descenso a un marco mayor. Con este objetivo, se plantea la Definición 5.

Definición 5

Se denominará dirección de descensoen el conjunto S respecto de un punto v a una dirección de descenso d n con | | d | | = 1 , tal que, siendo α el máximo valor verificando que v + α d S y J ( v + α d ) < J ( v ) , esta cumple que:

J ( v + α d ) < J ( v + α ' d ' ) , d ' dirección de descenso.

Observación 2

La Definición 5 toma como dirección de descenso aquella a través de la que más se desciende el valor del funcional. Como el conjunto admisible no es el total, puede que dicha dirección no sea la de máximo descenso (en el sentido habitual). Dicho de otro modo, puede que otra dirección de descenso recorra una mayor distancia permaneciendo en el conjunto admisible, y esto haga que el valor del funcional descienda más que usando simplemente el valor negativo del gradiente del funcional en el punto.

Teniendo en cuenta la Definición 5, sin pérdida de generalidad, se van a considerar a partir de ahora las direcciones de descenso normalizadas. Como el objetivo es crear una sucesión { u ( k ) } k u donde u es solución al problema (5), en cada iteración se va a procurar aproximar la dirección d ( k ) = u ( k ) u | | u ( k ) u | | y el valor α k = | | u ( k ) u | | , para tomar u ( k + 1 ) = u ( k ) + α k u ( k ) .

El mayor inconveniente de este procedimiento erradica en la aproximación de las direcciones d ( k ) . Para ello se usará el concepto de discretización en el sentido de ángulos. Pues bien, d ( k ) = u ( k ) u | | u ( k ) u | | es una dirección de descenso, luego d ( k ) T J ( u ( k ) ) < 0 . Ahora bien, como

d ( k ) T J ( u ( k ) ) = | | d ( k ) | | | | J ( u ( k ) ) | | c o s ( ( d ( k ) , J ( u ( k ) ) ) ) < 0

se deduce que ( d ( k ) , J ( u ( k ) ) ) ( π / 2 , π / 2 ) .

Considerando entonces J ( u ( k ) ) , se pretende discretizar los valores de los ángulos que forman con J ( u ( k ) ) un ángulo comprendido en el intervalo ( π / 2 , π / 2 ) . Es decir, se calculan direcciones separadas por un mismo ángulo entre ellas cumpliendo que su producto escalar con la dirección demáximo descenso sea negativo.

Por otra parte, como las direcciones calculadas deben tener norma 1, se pueden interpretar como puntos de la esfera S n . Así, si se tiene en cuenta lo que se pretende hacer con la discretización, lo que se busca es calcular una discretización de puntos del hemisferio de la esfera S n que tiene como polo el punto ( k ) = J ( u ( k ) ) / | | J ( u ( k ) ) | | . Con este objetivo, se recurre a las coordenadas polares, las cuales resultan cómodas desde el punto de vista práctico.

Ejemplo 1

Si se tiene un problema de dimensión 2, se consideraría la esfera S 2 (la circunferencia usual).Entonces, se parte de θ k [ 0 , 2 π ] el valor que define el punto ( k ) en coordenadas polares, es decir, ( c o s ( θ k ) , s e n ( θ k ) ) T = k . Luego, se divide el intervalo ( 0 , π / 2 ) en una serie de puntos igualmente espaciados 0 < t 1 < . . . < t m < π / 2 , por lo que tomando


se obtienen 2 m + 1 puntos que discretizan el hemisferio de la esfera S 2 , cuyo polo es el punto ( k ) .

En la Figura 4 se muestra un ejemplo de discretización de la esfera S 2 entorno al punto ( 2 / 2 , 2 / 2 ) T (punto rojo). En torno a él, los puntos morados son los que generan la discretización buscada (con 4 puntos en este caso, 8 en total) y los puntos en amarillo serán los que tendrían producto escalar nulo al operarlos con el punto de estudio en este caso.

Para un espacio de dimensión n > 2 , es necesario recurrir a la expresión de las coordenadas esféricas. En el caso general, para una esfera de dimensión n , se tiene que las coordenadas de un punto arbitrario

Discretización de la esfera S2
Figura 4:
Discretización de la esfera S2

v vienen dadas por,


donde r es el radio de la esfera (en este caso 1, por lo que se puede omitir), y los valores de τ 1 , . . . , τ n 1 vienen dados por:


donde τ 1 , . . . , τ n 1 [ 0 , π ] y τ n 1 [ 0 , 2 π ) .

Con estas fórmulas es posible crear una discretización de un hemisferio de la esfera S 2 , con n > 2 . Para ello se procede como en el caso de la esfera S 3 , salvo que en este caso existen más variables. Para los ángulos τ 1 , . . . , τ n 2 , se divide el intervalo ( 0 , π / 2 ) en m partes iguales ( 0 < t 1 < . . . , t m < π / 2 )

Discretización de la esfera S3
Figura 5:
Discretización de la esfera S3

y se toman los ángulos τ j + t i con j = 1 , . . . , n 2 e e = 1 , . . . , m . Por otra parte, para τ n 1 se divide el intervalo [ 0 , 2 π ) de tal modo que 0 < q 1 < . . . < q 4 m < 2 π y se toman los ángulos τ n 1 + q 1 con l = 1 , . . . , 4 m . Entonces, haciendo todas las posibles combinaciones entre los ángulos obtenidos, se obtiene toda la discretización buscada de un hemisferio de la esfera S n . En la Figura 5 se muestra un ejemplo visual de una discretización de S 3 con m = 4 para el hemisferio que tiene por polo el punto e ( 3 ) = ( 0 , 0 , 1 ) T .

Sin embargo, el problema que resulta de esta construcción de la esfera, es que esta se entiende como una superficie de revolución. En este caso el eje bajo el que se gira es entorno al vector e ( 1 ) = ( 1 , 0 , . . . , 0 ) T , pero el interés es que sea sobre el vector que determina k . Para ello, bajo la discretización obtenida del hemisferio cuyo polo es el vector e ( 1 ) , lo que se hará es una isometría f : n n de tal manera que f ( e ( 1 ) ) = ( k ) . Para construir dicha isometría se comenzará tomando el vector ( k ) y se completará a una base del espacio vectorial n . Luego, para conseguir que esta nueva base sea ortonormal, se puede usar algún procedimiento conocido como el método de ortogonalización de Gram-Schmidt que se muestra en el Algoritmo 1, y cuya demostración y deducción se puede consultaren [4, pag. 273] o [10, pág. 365-366].

Algoritmo 1 Método de ortogonalización de Gram-Schmidt

Si B = { u ( 1 ) , . . . , u ( n ) } es una base del espacio euclideano V , entonces se puede construir una ortogonal B ' = { v ( 1 ) , . . . , v ( n ) } tomando


donde λ i j = u ( i ) T v ( j ) v ( j ) T v ( j )

Entonces se completa ( k ) a una base y, con el método de Gram-Schimtd, a una base ortonormal. De este modo, sea A la matriz que tiene por columnas los vectores de esta base ortonormal, si el determinante | A | = 1 , se intercambian dos columnas (sin incluir la primera). Así se obtiene que | A | = 1 , por lo que esta matriz determina una aplicación lineal que mantiene la orientación del espacio y, en consecuencia, define una isometría f : n n tal que f ( e ( 1 ) ) = ( k ) . De esta manera, si se emplea la aplicación definida por A a cada punto de la discretización obtenida por el procedimiento que tiene por polo el punto que se buscaba.

Una vez vistos todos los aspectos relativos a la discretización, sólo queda comparar todas las direcciones calculadas por el método de discretización para escoger la mejor. Es decir, se comprobará (numéricamente) cuál, de entre todas las direcciones obtenidas, cumple la Definición 5. Una vez hallada dicha dirección, d ( k ) , se toma u ( k + 1 ) = u ( k ) + α k d ( k ) , de tal manera que J ( u ( k + 1 ) ) < J ( u ( k ) ) , por lo que se crea una sucesión { u ( k ) } k de tal forma que

J ( u ( k + 1 ) ) < J ( u ( k ) ) < . . . < J ( u ( 2 ) ) < J ( u ( 1 ) )

Cuando el valor de α k es muy pequeño, indica que, de entre todas la direcciones, en la que mayor descenso se produce y se avanza, el avance es mínimo y, por tanto, se alcanza una convergencia. Por consiguiente, un criterio de parada que se podría tomar, sería que α k fuese menor que una cierta tolerancia.

Con esto, se concluiría la deducción del método que se plantea. Haciendo una recopilación de lo visto, se puede presentar el siguiente algoritmo:

Algoritmo 2

Se procede con el siguiente procedimiento iterativo:

PASO 0: Se parte de un u ( 0 ) S , un valor de tolerancia t o l > 0 pequeño y k = 0 .

PASO 1: Se calcula ( k ) y, a partir de él, se construye una discretización.

PASO 2: A partir de la discretización obtenida, se comparan todas las direcciones para encontrar aquella que cumple la Definición 5, de lo que se obtiene como solución la dirección d ( k ) y el paso α k .

PASO 3: Se toma u ( k + 1 ) = u ( k ) + α k d ( k ) . Si α k < t o l se finaliza y, en caso contrario, se vuelve al PASO 1.

4. Aspectos computacionales

Para poder aplicar en la práctica el Algoritmo 2, este se debe poder programar en algún lenguaje de programación para su utilización. Por ello, en esta sección se presentará una manera de programar el método planteado en el lenguaje de MatLab.


Programa principal
Código 1:
Programa principal

En Código 1 se muestra un ejemplo de programa principal. En este programa se muestra una forma de programar el Algoritmo 2. Sin embargo, en él se utilizan diferentes funciones auxiliares. En concreto se utiliza la función “discretizacion” para crear la discretización de las direcciones y la función “conjunto” para determinar si el punto obtenido al desplazarse en una dirección un determinado valor, a partir de un punto dado, pertenece al conjunto admisible.



Función que calcula la discretización
Código 2:
Función que calcula la discretización

En Código 2 se expone la función empleada para calcular la discretización del hemisferio de la esfera S n cuyo polo es un vector determinado. Los datos de entrada son d , el vector que determina el polo en torno al que se desea discretizar la esfera, y el valor de k que se corresponde con el número de puntos de la discretización. De este modo, para un k mayor se obtienen más puntos de la discretización, mientras que si se reduce su valor, también lo hace el número de direcciones a comprobar. Por otra parte, se utiliza una función con el nombre “gramscb” que lo que hace es aplicar el método de ortogonalización de Gram-Schmidt explicado en el Algoritmo 1 (dado que el método de Gram-Schmidt es de fácil aplicación, se deja su programación al lector).

Función que verifica la factibilidad de un punto obtenido a partir del anterior mediante una dirección y un valor α concreto
Código 3:
Función que verifica la factibilidad de un punto obtenido a partir del anterior mediante una dirección y un valor α concreto

En Código 3 se expone el programa utilizado para comprobar la factibilidad de un nuevo elemento obtenido a partir de un punto arbitrario, una dirección y un valor “alpha” que se corresponde con el desplazamiento desde el punto arbitrario en la dirección dada. Este programa verifica si el siguiente iterante del Algoritmo 2 es admisible para el problema (2) tomando como valor de ε el propio épsilon de la máquina.

De esta forma se concluiría con los aspectos computacionales referentes al Algoritmo 2. Es importante resaltar que la programación aquí mostrada es un ejemplo de cómo se podría llevar a la práctica, pero en realidad podría haber otras versiones. Un ejercicio interesante resultaría de reflexionar la forma en la que se podría abaratar el coste computacional de esta programación. Estos aspectos se dejan a reflexión de los lectores y a juicio del público para mejorar el método y la programación planteados.

5. Pruebas y ejecuciones

Con el objetivo de testear el buen funcionamiento del Algoritmo 2, se ha probado su ejecución en una serie de problemas de sencillo cálculo empleando la programación expuesta en la Sección 4. Para ello se seleccionaron una serie de problemas, extraídos de [11], con los que corregir el método creado y comprobar su funcionamiento, además de incluir el Contra-Ejemplo 1. Así mismo, esos mismos problemas se resolverán con otros algoritmos ya conocidos para comparar los resultados obtenidos. En este sentido, en [1] se pueden apreciar una recopilación de métodos ya conocidos que el lector puede consultar como ampliación de esta sección. Sin embargo, en este artículo se mostrarán los resultados obtenidos con la función fmincon de MatLab y el método del Lagrangiano aumentado presentado en el artículo [14].

- Solución al problema del Contraejemplo 1

Se considera el problema (6), que se tomó en el Contraejemplo 1, para ver el funcionamiento del algoritmo en este caso:

(7)

El iterante inicial tomado es u ( 0 ) = 1 5 / 2 T de tal forma que J ( u ( 0 ) ) = 2 9 / 4 . La solución exacta al problema es u = 1 5 / 2 T , lo que implica que el valor del funcional objetivo en el mínimo es J ( u ) = 1 .

Tabla 1:
Resultados obtenidos al problema (7)
Resultados obtenidos al problema (7)

- Problema de 2 dimensiones:

Se considera el problema (8), que se corresponde con el ejemplo número 22 en [11],

(8)

Resultados por iteraciones del problema (7).
Figura 6:
Resultados por iteraciones del problema (7).

El iterante inicial tomado es u ( 0 ) = 0 0 T de tal forma que J ( u ( 0 ) ) = 0 . La solución exacta al problema es u = 1 1 T lo que implica que el valor del funcional en el mínimo es J ( u ) = 1 .

Tabla 2:
Resultados obtenidos al problema (8).
Resultados obtenidos al problema (8).

Resultados por iteraciones del problema (8).
Figura 7:
Resultados por iteraciones del problema (8).

- Problema de 3 dimensiones:

Se considera el problema (9), que se corresponde con el ejemplo número 35 en [11],

(9)

El iterante inicial tomado es u ( 0 ) = 1 / 2 1 / 2 1 / 2 T , de tal forma que J ( u ( 0 ) ) = 2 . 2 5 . La solución exacta al problema es u = 4 / 3 7 / 9 4 / 9 T , lo que implica que el valor del funcional en el mínimo es J ( u ) = 1 / 9 .

Tabla 3:
Resultados obtenidos al problema (9).
Resultados obtenidos al problema (9).

Resultados por iteraciones del problema (9).
Figura 8:
Resultados por iteraciones del problema (9).

- Problema de 4 dimensiones:

Se considera el problema (10), que se corresponde con el ejemplo número 43 en [11],

(10)

El iterante inicial tomado es u ( 0 ) = 0 0 0 0 T , de tal forma que J ( u ( 0 ) ) = 0 . La solución exacta al problema es u = 0 1 2 - 1 T , lo que implica que el valor del funcional en el mínimo es J ( u ) = 4 4 .

Tabla 4:
Resultados obtenidos al problema (10).
Resultados obtenidos al problema (10).

Resultados por iteraciones del problema (10).
Figura 9:
Resultados por iteraciones del problema (10).

A la vista de los resultados obtenidos se puede comprobar como el testeo del Algoritmo 2 ha respondido de forma positiva. Se podrían hacer más testeos, e incluso más complejos, pero se deja como ejercicio al lector. Lo que se ha querido mostrar con estas ejecuciones es el correcto funcionamiento del método planteado que se aproxima al valor del mínimo del problema original.

Por otra parte, un aspecto importante son los tiempos de ejecución, que no se incluyen en los resultados debido a que estos varían en función de cada computadora. Sin embargo, hablando de los tiempos obtenidos mediante el Algoritmo 2, es conveniente decir que en el problema (8) se obtiene el resultado en un tiempo razonable, algo que incluso sucede con el problema (9). Sin embargo, en la resolución del problema (10) el tiempo de ejecución se dispara a más de un minuto, algo extraño en un problema de sólo cuatro dimensiones. Este hecho se debe al número de direcciones que el algoritmo debe de evaluar en cada iteración. Con dimensiones pequeñas el número de direcciones de descenso, creadas con la discretización, no es demasiado elevado, pero este número crece de forma exponencial según se aumenta la dimensión del problema.

Esta carencia es importante tenerla en cuenta. De hecho, para que el Algoritmo 2 aporte resultados concluyentes, es importante construir una discretización amplia para poder comparar el mayor número de direcciones de descenso posibles. Por este motivo, el algoritmo se ve limitado en el tiempo de ejecución y, al mismo tiempo, en la memoria requerida en cada iteración para almacenar las direcciones que se deben de comprobar.

Por consiguiente, una futura línea de investigación para el método planteado en este artículo es la forma en la que se podría reducir la memoria y el tiempo de ejecución empleado por el algoritmo. En este sentido se podría hacer un estudio acerca de la forma en la que se podría reducir el número de direcciones de descenso en la discretización sin que esto implique menor precisión del método.

6. Conclusiones y futuras líneas de investigación

En base al trabajo desarrollado en el presente artículo, se obtienen las siguientes conclusiones:

  1. 1. El método expuesto se enmarca dentro del conjunto de métodos de direcciones factibles, permitiendo resolver una serie de problemas de optimización con restricciones cuyos conjuntos admisibles sean cerrados y conexos.
  2. 2. El interés prioritario del algoritmo planteado se basa en el aporte teórico de su deducción. A lo largo del artículo se muestran diferentes interpretaciones geométricas y se relacionan distintas disciplinas matemáticas para obtener el método final.
  3. 3. Una de las ventajas del algoritmo es que permite crear una sucesión de puntos factibles que descienden el valor del funcional objetivo en cada iteración. Así pues, siempre se está descendiendo el valor del funcional en cada iteración.
  4. 4. La principal desventaja que presenta el método es su coste computacional, lo que implica altos tiempos de ejecución en la práctica según aumenta la dimensión de los problemas a resolver. Por otra parte, el coste de memoria de la programación expuesta es también una desventaja del método según se aumenta el de la dimensión de los problemas a resolver.

Una vez expuestas las principales conclusiones, se muestran las principales líneas de investigación para mejorar el método expuesto en el artículo:

  1. 1. Resulta primordial poder reducir la memoria requerida por la programación del método. Sería muy interesante descartar, en cada iteración, una serie de direcciones en lugar de tener que considerarlas.
  2. 2. La reducción de direcciones de descenso debe de hacerse de tal forma que la discretización no se vea reducida, para no menguar el nivel de precisión del método.
  3. 3. En lugar de reducir el valor de α Importar imagen a la mitad cómo se hace en el Código 1, sería conveniente desarrollar un método más efectivo de calcular el valor de α. Para ello se podría investigar acerca de cómo aplicar la regla del Armijo, de Goldestein o de Wolfe-Powell a este algoritmo, las cuales se pueden estudiar en [17, Sec. 2.5], que podrían aportar un mejor método de reducir el valor inicial de α.

El método expuesto se enmarca dentro del conjunto de métodos de direcciones factibles, permitiendo resolver una serie de problemas de optimización con restricciones cuyos conjuntos admisibles sean cerrados y conexos.

El interés prioritario del algoritmo planteado se basa en el aporte teórico de su deducción. A lo largo del artículo se muestran diferentes interpretaciones geométricas y se relacionan distintas disciplinas matemáticas para obtener el método final.

Una de las ventajas del algoritmo es que permite crear una sucesión de puntos factibles que descienden el valor del funcional objetivo en cada iteración. Así pues, siempre se está descendiendo el valor del funcional en cada iteración.

La principal desventaja que presenta el método es su coste computacional, lo que implica altos tiempos de ejecución en la práctica según aumenta la dimensión de los problemas a resolver. Por otra parte, el coste de memoria de la programación expuesta es también una desventaja del método según se aumenta el de la dimensión de los problemas a resolver.

Bibliografía

[1] Ancau, M. Practical Optimization with MatLab. Cambridge Scholars Publishing. 2019.

[2] Boglárka G.-Tóth and Eligius M.T. Hendrix. Introduction to Nonlinear and Global Optimization. Springer. 2010.

[3] Crilly, A.J, and Pérez, E.H. 50 cosas que hay que saber sobre matemáticas, Ariel, 2014.

[4] De Burgos J. álgebra lineal y geometría cartesiana. Ed. MacGraw-Hill, Madrid, 1999.

[5] Eiselt, H.A. and Sandblom, C..L. Nonlinear Optimization. Methods and Applications. Springer. 2019.

[6] Eremeev, A. Khachay, M., Kochetov, Y. and Pardalos, P. Optimization Problems and Their Applications. Springer. 2018.

[7] Escudero Andino, F. F.Diseño de un modelo matemático para optimizar las rutas de recorrido del proceso de recolección de desechos sólidos para el Cantón Valencia. Master's thesis, Universidad Técnica de Ambato. Facultad de Ingeniería en Sistemas, Electrónica e Industrial. Maestría en Matemática Aplicada. 2021

[8] Gallier, J. and Quaintance, J. Fundamentals of Optimization TheoryWith Applications to Machine Learning. University of Pennsylvania Philadelphia. 2019.

[9] González Castaño, F. A. Análisis de ciclo de vida y optimización matemática como herramientas para la producción sustentable de energía y de productos químicos. 2019

[10] Hernández, E. álgebra y geometría. Ed. Addison Wesley, Madrid, 1994.

[11] Hock W. and Schittkowski K. Test Examples for Nonlinear Programming Codes, Lecture Notes in Economical and Mathematical Systems 187, Springer-Verlag, Berlin, 1981.

[12] Nocedal, Jorge and Wright, Stephen J. Numerical Optimization. Springer. 1999.

[13] Peressini, A.L; Sullivan, F.E and Uhl, J.J. The mathematics of nonlinear programming. Springer-Verlag. 1988

[14] Vázquez, M. Resolución de los problemas de optimización con restricciones mediante los métodos de penalización y del Lagrangiano aumentado. Revista digital Matemática, Educación e Internet, 21(2). 2021. Recuperado de: https://tecdigital.tec.ac.cr/revistamatematica/

[15] Silva Melgarejo, M. A., and Zevallos Diaz, A. J. E.Programación lineal para optimizar separación de grasas del proceso de fabricación de harina de pescado. Corporación Hayduk SA Coishco. 2019.

[16] Yang, X-S. Optimization Techniques and Applications with Examples. John Wiley and Sons. 2018.

[17] Sun W. and Y-X Yuan. Optimization Theory and Methods. Nonlinear Programming, Springer, 2006.

HTML generado a partir de XML-JATS4R por