I am trying to solve an optimization problem with 1000-60000 variables. My objective function is smooth and of general nonlinear form. I can efficiently calculate the gradient of my objective function, calculating the Hessian would be associated with prohibitive computational overhead. I would like to work with up to ~10^5 linear constraints and my optimization variables should all be >=0.
http://de.mathworks.com/help/optim/ug/choosing-a-solver.html suggests to use fmincon for such a problem, however, we quickly run into memory issues with the ldl factorization if we include a lot of linear constraints.
The code I am running is
%bounds
lb = zeros(n,1);
ub = inf * ones(n,1);
%options for fmincon
options = optimoptions(@fmincon,'GradObj', 'on','SubproblemAlgorithm', 'cg', 'Display', 'iter','Hessian',{'lbfgs',20}, 'MaxIter', 50, 'Diagnostics', 'on');
[x,fval] = fmincon(@(x)myObjFunc(x),x0,A,b,[],[],lb,[],[],options);
Could anybody advise on better settings to solve such a problem with matlab or are these huge problems still beyond managable with matlab?
BTW We already specify A using a sparse matrix.
Thanks a lot for your help! Mark
http://de.mathworks.com/help/optim/ug/choosing-a-solver.html suggests to use fmincon for such a problem, however, we quickly run into memory issues with the ldl factorization if we include a lot of linear constraints.
The code I am running is
%bounds
lb = zeros(n,1);
ub = inf * ones(n,1);
%options for fmincon
options = optimoptions(@fmincon,'GradObj', 'on','SubproblemAlgorithm', 'cg', 'Display', 'iter','Hessian',{'lbfgs',20}, 'MaxIter', 50, 'Diagnostics', 'on');
[x,fval] = fmincon(@(x)myObjFunc(x),x0,A,b,[],[],lb,[],[],options);
Could anybody advise on better settings to solve such a problem with matlab or are these huge problems still beyond managable with matlab?
BTW We already specify A using a sparse matrix.
Thanks a lot for your help! Mark