10
$\begingroup$

Not sure if this question is appropriate here.

I used to run customized spline fitting with commercial package such as mosek and gurobi.

Since beginning of this year, I tried to migrate to open source packages like tensorflow. I am surprised that the performance is not too bad.

They only difference seems to me that commercial packages are faster.

What's your view on this ? Can we say that commercial packages are more for real-time or semi-real-time problems where speed matters?

$\endgroup$
  • $\begingroup$ @JakobS, thanks for the comments. When you say discrete decision, are you referring to Mixed-Integer optimization? $\endgroup$ – eight3 Sep 23 at 9:59
  • 1
    $\begingroup$ Yes, so regarding your specific problem of spline fitting I'd suppose you do not have any discrete aspects? In that case you probably could a variety of solvers from different areas (Ipopt for example is a nonlinear solver which probably could also be worth a try). $\endgroup$ – JakobS Sep 23 at 10:02
  • $\begingroup$ What type problems are you solving? How large are they? Do you get the same solution quality for all approaches? $\endgroup$ – ErlingMOSEK Sep 24 at 16:28
  • $\begingroup$ I've deleted my comment as it now is a full answer... $\endgroup$ – JakobS Sep 24 at 20:59
10
$\begingroup$

I'd say that you are comparing software packages with very different aims and capabilities. Tensorflow was developed to solve problems which involve (deep) neural nets. Mosek and gurobi on the other hand are usually used to solve optimization problems that involve discrete decisions (i.e. variables that can take only discrete values which means you are dealing with a Mixed-Integer Optimization Problem). While they are also able to solve (certain) continuous problems, they perform best on the former problems. Tensorflow on the other hand is specifically tailored for the neural nets.

Regarding your specific problem of spline fitting I'd suppose you do not have any discrete aspects? In that case you probably could use a variety of solvers from different areas (Ipopt for example is a nonlinear solver which probably could also be worth a try). Again, special tailored algorithms and program packages will very likely perform better than general purpose programs or algorithms that work on a generalized form of a problem.
For example you can state SVM as a linear problem and solve it via a linear solver (CLP, SCIP, Gurobi, Mosek, CPLEX, Xpress, you name it...) but specialized SVM solvers will probably perform better as they use special tricks which are inherent in the underlying structure of the problem. General problem solvers might not be able to detect these structures and thus perform not as good. To be honest I would be very interested in a benchmark between programs specifically written for SVM and general purpose LP solvers that solve the problem.

$\endgroup$
  • $\begingroup$ Mosek is more used for continous problems than discrete. $\endgroup$ – ErlingMOSEK Sep 24 at 16:27

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.