Cómo calcular el elipsoide máximo en un poliedro dado

8

Me enfrento con el problema de encontrar el elipsoide ( es una matriz definida positiva simétrica) de volumen máximo dentro de un conjunto convexo dado como un conjunto de desigualdades lineales . Comprendí cómo se formaliza como un problema de optimización convexa como se da en "Convex Optimization, Stephen Boyd and Lieven Vandenberghe, Cambridge University Press, 2004" [versión pdf] . Mi enfoque sería utilizar métodos de punto interior, introducir un parámetro de precisión t> 0BBCC={x|aiTxbi,i=1,,m}

minB,d[logdetB1]s.t.:||Bai||2+aiTdbi,i=1,,m
t>0e incorpore las restricciones en el objetivo a través de una función de barrera logarítmica como se explica en el capítulo 11 del libro anterior e intente minimizar el problema no controlado resultante \ min_ {B, d} \ quad \ underbrace {\ left [\ log \ det B ^ {-1} - \ frac {1} {t} \ sum_ {i = 1} ^ m \ log (b_i- || Ba_i || _2-a_i ^ Td) \ right]} _ {= f (B, d )}.
minB,d[logdetB11ti=1mlog(bi||Bai||2aiTd)]=f(B,d).
Por lo tanto, tomaría derivadas parciales de f :
fB=B1+1ti=1m(BaiaiT||Bai||bi||Bai||2aiTd)
que es una matriz y
fd=1ti=1m(aibi||Bai||2aiTd)
que es un vector. Y luego a partir de un punto inicial (factible) (B0,d0)Actualizaría iterativamente la solución real (Bk,dk) acuerdo con las derivadas parciales negativas:
Bk+1=BksBf(Bk,dk)Bdk+1=dksdf(Bk,dk)d
donde sB>0 y sd>0son parámetros de tamaño de paso hasta que se cumple un criterio de detención predefinido. \ ¿No estoy seguro de si esta es una forma correcta de resolver el problema? Me parece muy incómodo y no muy elegante. No soy un experto en técnicas de optimización y no estoy seguro de poner todos los ingredientes (derivados parciales, método de punto interior, minización sin restricciones, etc.) juntos de la manera correcta. Me pregunto cómo un experto resolvería este problema. En el libro mencionado anteriormente, esta tarea se mostró como un ejemplo para un problema convexo, pero por lo que puedo ver, se proporcionó un algoritmo tan explícito para resolver la tarea. Aunque creo que el Sr. Boyd tiene en algún lugar un script de Matlab en sus páginas para resolver la tarea, pero quiero comprender las técnicas básicas primero antes de usar un algoritmo de "caja negra". Parece que hay otros enfoques en " Algoritmos polinómicos de punto interior en la programación convexa; Yurii Nesterov y Arkadii Nemirovskii, estudios SIAM en matemáticas aplicadas; vol.13, 1994 "y" Sobre la complejidad de aproximar el elipsoide máximo inscrito para un politopo, Leonid G. Khachiyan y Michael J. Todd, Mathematical Programming 61 (1993), 137-159 "pero no los entiendo porque Están escritos a técnicos para mí.

Por cierto: ¿Cómo se ve el problema dual del primer problema? ¿Y cómo se deriva?

Gracias por adelantado

Denis K.
fuente
1
Hay solucionadores que harán todas estas cosas por usted. ¿Hay alguna razón por la que quieras hacerlo tú mismo? Hablando como alguien que, en un momento, aprendió sobre métodos de punto interior, y trabajó en un laboratorio de optimización, y codificó algunos de los métodos en MATLAB (para tareas), todavía usaría el solucionador de caja negra .
Geoff Oxberry
1
Me apego al principio de comprender / implementar al menos una versión básica de un método antes de usar rutinas estándar. Creo que este principio viene con dos aspectos favorables: 1) Viene con un inmenso efecto de aprendizaje y una comprensión más profunda de los métodos. 2) En la mayoría de las aplicaciones, una versión básica de un algoritmo matemático es suficiente (al menos para las aplicaciones a las que me enfrento). Para que pueda mantener su código pequeño y simple y no tener que preocuparse por las cosas de la licencia (en caso de que quiera ganar algo de dinero con él).
Denis K.

Respuestas:

1

Bueno, estás en el camino correcto. No es mágico resolver estos problemas utilizando métodos de punto interior, son de naturaleza iterativa y se basan en linealizaciones, etc.

Sin embargo, un algoritmo típico de punto interior para estos problemas no daría un paso en la dirección del gradiente, sino que también calcularía información de segundo orden y, por lo tanto, daría un paso de Newton. Por lo tanto, se realiza una búsqueda de línea a lo largo de la dirección de Newton, se da un paso óptimo y se repite el procedimiento. Una vez convergido (también con una precisión adecuadamente definida), el parámetro de barrera disminuye (con algún factor adecuado) y el procedimiento se repite nuevamente.

Para que funcione en la práctica, debe pensar detenidamente cómo realiza las actualizaciones de parámetros, y lo más frecuente es que realice todo en el espacio primario-dual.

Si busca en Google sillysdp, encontrará una implementación simple de un solucionador de SDP que implementa, esencialmente, el ejemplo 11.9 en la referencia de Boyd & Vandenberghe que está leyendo. Tal vez un comienzo para la inspiración (ya que la programación semidefinida es una generalización de un SOCP que está resolviendo, descuidando el término logdet en el objetivo, lo que realmente no complica las cosas)

Johan Löfberg
fuente