Solve different problems with TFOCS



I am dealing with big-large convex problems. With some of them I get good results with CVX but with some others I get memory problems and I have read that maybe TFOCS is the good way to solve them.

My optimization problems are related to the examples provided with TFOCS but they are slightly different. Before to take a deep look into the software I want to be sure that I am going to be able to solve them with this software.

My optimization problems can be solved in the following way with cvx:

  Min  ||x||  l=1
    st   |Ax|<=e  

or simple LP problems

   Min  f*y
   st   Ay<=e

Can I solve them?

Can I solve with TFOCS every problem that I am able to solve with CVX?

Thanks in advance!

(Erling D.Andersen) #2

How big is big?


I have been taking a deep look into “test_LinearProgram.m”, “solver_sLP.m” and “tfocs_SCD.m”. What I would have to change in those functions if I just want to modify the constraint Ax==b by Ax<=b?

(Michael C. Grant) #4

In theory, TFOCS can solve every problem that CVX can solve. However, this is not necessarily true in practice. TFOCS is really not a modeling framework for convex optimization; it’s a toolbox for building your own solvers.

For one thing, TFOCS requires problems to be translated to a specific standard form. CVX, on the other hand, performs these translations for you. For another, TFOCS does not include every possible constraint or function one could consider using, so you very likely would have to implement your own. And that’s not necessarily an easy thing to do.

I would have to say that the specific models you’ve listed would be difficult to solve with TFOCS. But I would encourage you to take a look at the TFOCS user guide. Look at how TFOCS works, look at its standard form, look at the included function list. Perhaps your actual models can be written in a form closer to that.

(Michael C. Grant) #5

FYI, in the future, just edit your existing question instead of posting a new “answer”. It might indeed be possible to modify solver_sLP.m to add such constraints. That solver uses tfocs_SCD to do its dirty work.