Cómo lidiar con las restricciones de desigualdad de la norma

8


Quiero resolver la tarea de optimización (convexa):

maxr,zr
sujeto a las siguientes dos restricciones\ | z \ | \ leq 1r \ geq0
rxixiTz0i=1,,N
z1
r0

r es un escalar, z es un vector, las xi son vectores de la misma dimensión y es el simple eucl. norma. Se puede suponer que la región factible no está vacía.

¿Hay una manera fácil de resolver esto? Creo que esto debería ser fácil porque sin la restricción z1 esto es solo un programa lineal. Antes de referirme a los paquetes de software, ¿puede dar una pista sobre el enfoque general que es útil para este tipo de tarea?
Gracias DG

dgray
fuente

Respuestas:

3

Tiene un par de opciones, dependiendo de cuán crucial sea que tome la norma euclidiana de .z

  1. Use su formulación tal cual, con un pequeño ajuste:

    maxr,zr
    sujeto a las siguientes dos restricciones
    rxixiTz0i=1,,N
    zTz1
    r0

    Este problema es un programa con restricciones cuadráticas, para el cual hay muchos solucionadores rápidos, como CPLEX y Gurobi. Este programa en particular también es un programa de cono de segundo orden, un programa semidefinido y un programa no lineal convexo, por lo que también puede usar cualquiera de esos solucionadores. La razón por la que reemplacé la restricción de la norma euclidiana con un producto escalar es que las dos restricciones son equivalentes, pero la última es diferenciable, mientras que la primera no. Las funciones no diferenciables requieren algoritmos más caros, y este problema no requiere ese tipo de maquinaria, por lo que es mejor evitarlo.

  2. Cambia la norma de . La norma 1 y la norma infinita son funciones lineales de los elementos de , y reemplazar la norma euclidiana en su formulación con cualquiera de esas normas da como resultado un programa lineal, para el cual los mejores solucionadores tienden a ser comerciales (Gurobi, CPLEX ), pero existen solucionadores libres más lentos (GLPK, solucionadores en la suite COIN-OR). Usar la norma 1 significa que cualquier solución a esa formulación también sería una solución factible de su formulación actual (es decir, usar la norma 1 generaría una restricción de su formulación actual). Usar la norma de infinito significa que cualquier solución a su formulación actual también sería factible en la formulación de norma de infinito (es decir, usar la norma de infinito produciría una relajación de su formulación actual).zz

Aunque es cierto que los solucionadores de programación lineal son muy eficientes, seleccionaría la opción 1, porque los solucionadores de programación con restricciones cuadráticas también son muy eficientes (en relación con los solucionadores de programación convexos y otros tipos de solucionadores de programación no lineales) y pueden resolver formulaciones grandes (en al menos cientos de miles de variables de decisión, la última vez que miré la literatura). A menos que su formulación sea asombrosamente grande, debería estar bien usando un solucionador de programación con restricciones cuadráticas en serie, y no necesita cambiar la norma en su formulación a menos que sea absolutamente necesario.

Una observación final: escalaría los vectores antes de construir su formulación para que todos tengan la unidad de norma, lo que probablemente ayudará con el condicionamiento de su formulación cuando la resuelva numéricamente. Es otro truco que no le cuesta prácticamente nada, pero lo protege contra las dificultades numéricas.xi

Geoff Oxberry
fuente
No debe llamar a esto un programa semidefinido. Es un programa con restricciones cuadráticas, o un programa de cono de segundo orden un poco más general. Llamarlo un programa semidefinido sería similar a llamar a un programa lineal un programa de cono de segundo orden (siguiendo el programa lineal de clases - programa restringido cuadráticamente - programa de cono de segundo orden - programa semidefinido)
Johan Löfberg
Tienes razón en que llamarlo QP sería mejor. Por alguna razón, vi un Gramian (incluso uno pequeño) y salté al patrón.
Geoff Oxberry
Creo que el programa cuadrático envía señales incorrectas, generalmente se limita a problemas con objetivos cuadráticos y restricciones lineales. problema cuadráticamente restringido, o, quizás el más común pero un poco más general que el problema aquí, un programa de cono de segundo orden.
Johan Löfberg
1

zTz1z1

Si tiene que mejorar el rendimiento, existen métodos para explotar la función de cono único. Aquí hay un ejemplo

SIAM J. Optim., 17 (2), 459-484. (26 páginas) Un método de configuración activa para programas de cono de segundo orden de un solo cono E. Erdougan y G. Iyengar

Me gustaría señalar que reemplazar la norma con una norma 1 probablemente no funcionará bien. La norma cuadrática tiene su origen en el fondo geométrico de este problema (que interpreto como encontrar un vector que tiene el ángulo más pequeño para un conjunto dado de vectores).

αzTz

zz106101

z = sdpvar(5,1);
r = sdpvar(1);

err1 = [];
err2 = [];
for i = 1:1000
    X = randn(5,10);
    Con = [r*sqrt(sum(X.^2,1)) <= z'*X,norm(z,2) <= 1]
    sol = solvesdp(Con,-r)
    if sol.problem == 0 & double(r)>1e-3
        zSOCP = double(z);
        Con = [r*sqrt(sum(X.^2,1)) <= z'*X];
        sol = solvesdp(Con,-r+0.001*z'*z);
        zQP = double(z/norm(double(z)));
        err1 = [err1 norm(zQP-zSOCP)];
        Con = [r*sqrt(sum(X.^2,1)) <= z'*X, norm(z,1)<=1];
        sol = solvesdp(Con,-r);
        zLP = double(z/norm(double(z)));
        err2 = [err2 norm(zLP-zSOCP)];
    end
end

Finalmente, el uso de la perspectiva geométrica podría conducir a un enfoque mucho mejor para resolver este problema. Básicamente, está buscando un centro particularmente definido de un conjunto de puntos en la esfera de la unidad.

Johan Löfberg
fuente