Dados dos vectores x, y en R ^ n, ¿cómo encuentras un cst escalar que minimizas || c * x – y || _1 (distancia de Manhattan)?

Emplearía una formulación de programación lineal (LP) de la siguiente manera, suponiendo que [math] c [/ math] no sea negativa, de lo contrario, se puede utilizar el truco de diferencia de dos variables no negativas.

[matemáticas] \ begin {eqnarray} \ min_ {c, t} & \ mathbf {1} ^ T \ mathbf {t} \\\ text {st} & \ forall i \ in \ {1, \ ldots, n \ }, \\ & c \ cdot x_i – y_i \ leq t_i \\ & y_i-c \ cdot x_i \ leq t_i \ nonumber \ end {eqnarray} [/ math]

De hecho, uno de los sistemas de modelado y resolución establecidos, CVX, transforma automáticamente ambos problemas [$ \ ell_1, \ ell_ \ inf $] en LP.

Aquí hay un script MATLAB que compara lo anterior con la solución de CVX:

% obtener los vectores
n = 10;
x = rand (n, 1);
y = rand (n, 1);

% formula el problema de LP en MATLAB
[opt_sol, fval] = linprog ([0, ones (1, n)], [x, -eye (n, n); -x, -eye (n, n)], [y; -y]);
c_mat_lp = opt_sol (1);
% para comparación con CVX
% utilizando la expresión incorporada CVX
cvx_begin quiet
variable c (1)
minimizar (norma (c. * xy, 1))
cvx_end
% De formulación LP en CVX
cvx_begin quiet
clp variable
variable t (n)
minimizar suma (t)
sujeto a
clp. * x – y <= t
y – clp. * x <= t
cvx_end

disp ([‘Solucionador LP MATLAB: obj-val’ num2str (fval) ‘c-val’ num2str (c_mat_lp)])
disp ([‘CVX L1-norma solucionador: obj-val’ num2str (norma (c. * xy, 1)) ‘c-val’ num2str (c)])
disp ([formulación ‘CVX LP: obj-val’ num2str (norma (clp. * xy, 1)) ‘c-val’ num2str (clp)])

La norma l1 es convexa pero no suave. Puede usar el método decente de subgrado.

[matemáticas] \ frac {\ partial || cx-y || _1} {\ partial c} = \ frac {\ partial \ sum_i | cx_i-y_i |} {\ partial c} = \ sum_i signo (cx_i-y_i) x_i [/ ​​matemáticas]

La función de signo se define aquí. Función de signo

Puede usar este subdegradado para realizar un paso decente.

Esta nota puede ser útil.

https://see.stanford.edu/materia

SQP, SLP, la optimización evolutiva lo haría en un orden descendente de preferencia.