Least square with inequality constraints and Large Data fmincon

2 次查看(过去 30 天)
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 个)

类别

Help CenterFile Exchange 中查找有关 Solver Outputs and Iterative Display 的更多信息

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by