Least square with inequality constraints and Large Data fmincon
2 views (last 30 days)
Show older comments
Hello,
I have a least square regularized problem with inequality constraints that follows the form:
With inequality constraint (positive derivative)
I know there is different ways to solve this and on matlab I use fmincon with the following call:
% Set fmincon options
options=optimoptions(@fmincon,'Algorithm','interior-point','Display','iter',...
'MaxIterations',150,'MaxFunctionEvaluations',5000000);
% Call fmincon with inequality constraint
[ghat] = fmincon(@ObjFun,ghat0,[],[],[],[],[],[],[],@nonlcon,options);
function Min=ObjFun(ghat)
% Calculate the convolution with iterized ghat
y=real(ifft(fft(f,2*nData-1).*fft(ghat,2*nData-1))); % With zero padding
y=dTconv(1:nData); % Select good portion of the convolution
% Set the objective function to minimise: first-order derivative regularization least square problem.
Min=sum((y-y_REF).^2) + lambda*sum((diff([0;ghat]).^2);
end
function [c,ceq]=nonlcon(ghat)
% Set the non linear constraint: positive first-order differentiation.
c=-diff([0;ghat]); % Compute the derivative of ghat
ceq=[];
end
My problem is that my initial vector f and iterized ghat have lengths of about 30 000 values. Without thinning the data, the RAM consumption (even if I have 32 Gb) is way to high.
As you can see, I have tried using a convolution with the Fourier transform (fft and ifft) to avoid working with Toeplitz matrix, but it's still 1) way too long to compute and 2) way to costly in RAM.
My questions are then:
- Is it possible to limit the RAM usage?
- Is there another way to accelerate the computation?
Thanks in advance for your help
0 Comments
Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!