Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Mínimos cuadrados lineales con restricciones enlazadas

Muchas situaciones dan lugar a problemas lineales de mínimos cuadrados dispersos, a menudo con límites en las variables. Puede utilizar el algoritmo para resolver problemas de restricción de límite disperso.'trust-region-reflective' El siguiente problema requiere que las variables no sean negativas. Este problema viene de ajustar una aproximación de función a una spline lineal por tramos. Específicamente, las partículas se dispersan en el cuadrado de la unidad. La función que se va a aproximar se evalúa en estos puntos y se construye una aproximación de spline lineal por tramos con la condición de que los coeficientes (lineales) no sean negativos. Hay 2000 ecuaciones para ajustarse a 400 variables:

load particle   % Get C, d lb = zeros(400,1); options = optimoptions('lsqlin','Algorithm','trust-region-reflective'); [x,resnorm,residual,exitflag,output] = ...               lsqlin(C,d,[],[],[],[],lb,[],[],options);
Local minimum possible.  lsqlin stopped because the relative change in function value is less than the square root of the function tolerance and the rate of change in the function value is slow. 

El preacondicionamiento diagonal predeterminado funciona bastante bien:

exitflag,resnorm,output
exitflag =      3  resnorm =    22.5794  output =    struct with fields:           iterations: 10           algorithm: 'trust-region-reflective'       firstorderopt: 2.7870e-05        cgiterations: 42     constrviolation: []        linearsolver: []             message: 'Local minimum possible.↵↵lsqlin stopped because the relative change in function value is less than the square root of the function tolerance and the rate of change in the function value is slow.'

Para los problemas restringidos enlazados, la optimalidad de primer orden es la norma de infinito de, donde se define como in, y es el degradado.v.*gvRestricciones de cuadrog

Puede mejorar (disminuir) la medida de optimalidad de primer orden utilizando una factorización de QR dispersa en cada iteración. Para ello, establezca:SubproblemAlgorithm'factorization'

options = optimoptions(options,'SubproblemAlgorithm','factorization'); [x,resnorm,residual,exitflag,output] = ...                lsqlin(C,d,[],[],[],[],lb,[],[],options);
Optimal solution found.

La medida de optimalidad de primer orden disminuye:

exitflag,resnorm,output
exitflag =      1  resnorm =    22.5794  output =   struct with fields:          iterations: 12           algorithm: 'trust-region-reflective'       firstorderopt: 5.5907e-15        cgiterations: 0     constrviolation: []        linearsolver: []             message: 'Optimal solution found.'

Temas relacionados