Como vemos na resposta de Geoffs, esse é um problema quadraticamente restrito muito simples, ou mais geralmente um programa de cone de segunda ordem. Se você não possui requisitos extremos de desempenho ou dimensões enormes, resolvê-lo usando um solucionador não-linear padrão na forma quadrática ou usando um solucionador SOCP na formulação de normas funcionará perfeitamente bem.″ z ″ ≤ 1zTz≤ 1∥ z∥ ≤ 1
Se você precisar melhorar o desempenho, existem métodos para explorar o recurso de cone único. Aqui está um exemplo
SIAM J. Optim., 17 (2), 459-484. (26 páginas) Um método ativo definido para programas de cone de segunda ordem de cone único E. Erdougan e G. Iyengar
Gostaria de salientar que a substituição da norma por uma norma 1 provavelmente não funcionará bem. A norma quadrática tem sua origem no fundo geométrico desse problema (que eu interpreto como encontrar um vetor que tenha o menor ângulo para um determinado conjunto de vetores).
Curiosamente, uma aproximação de QP do problema parece funcionar extremamente bem. Remova a restrição quadrática e adicione uma penalidade ao objetivo. Eu não ficaria surpreso se for possível provar algo sobre isso.α zTz
No código abaixo, implementado usando o YALMIP (Disclaimer, desenvolvido por mim) no MATLAB, usando o CPLEX como solucionador, a distância média do verdadeiro e calculado usando as heurísticas do QP é da ordem de , enquanto a distância para a solução da formulação LP (1 norma) está na ordem .z 10 - 6 10 - 1zz10- 610- 1
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
Por fim, o uso de insight geométrico pode levar a uma abordagem muito melhor para resolver esse problema. Você está procurando essencialmente um centro particularmente definido de um conjunto de pontos na esfera unitária.