I am trying to solve an optimization problem

$$\begin{align} &\min f(x)\\ &\text{subject to } Ax\leq b\\ &x \in R^{\sim 10000},\ b \in R^{\sim 10000} \end{align}$$

$A$ is somewhat sparse (usually less than 5% populated) and I can efficiently evaluate $f(x)$ and $\nabla f(x)$. The Hessian of $f(x)$ comes at prohibitive computation times. $f(x)$ is a convex, non-linear, smooth function.

I tried Matlab's built-in solver fmincon but I keep receiving memory errors even though I am running on a system with 32GB memory. The exact Matlab settings I use are

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);

I would be very happy if someone could recommend a suited open source solver I could use for this problem -preferably with some Matlab interface- or even better: more elaborate settings for Matlab's fmincon to circumvent the memory issues.

I already found the tomopt package. However, this is not open source. In case I cannot find any open source alternative, I will check this out.

  • $\begingroup$ Can you get a "good" initial guess for $x$? $\endgroup$
    – fibonatic
    Mar 30 '15 at 7:04
  • $\begingroup$ I can solve the problem without linear constraints $Ax \leq b$ considering only positivity on $x$ quiet efficiently. That would give a pretty good intial guess I think! $\endgroup$
    – Mark
    Mar 30 '15 at 8:42
  • $\begingroup$ Did you tried CPLEX, it can be used with MATLAB also. $\endgroup$
    – Parag
    Mar 30 '15 at 18:34
  • $\begingroup$ As far as I understand, CPLEX is only applicable for linear and quad problems. I am interesting in general non-linear functions... $\endgroup$
    – Mark
    Mar 31 '15 at 18:55
  • 1
    $\begingroup$ Are you storing $A$ in memory as a sparse matrix or as a dense matrix? If you write whos A in MATLAB, does it say that it is sparse (should be in the last column of the output)? $\endgroup$ Apr 3 '15 at 12:35

IPOPT is a good interior point method solver for convex nonlinear problems, and has a MATLAB interface, although I haven't used the MATLAB interface. (The solver, called from GAMS, is very good.)

CVX is also a good package for convex problems, and YALMIP is slightly more general; both of these packages provide a modeling language for posing nonlinear programs, which may or may not be what you want.

There's a whole host of open source optimization software under the auspices of the COIN-OR project, and if you're familiar with GAMS or AMPL, you might be able to use the NEOS server to submit your problem as a job and use the closed- and open-source solvers they have available.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.