August, 2009

Posts
  • Nathan Brixius

    Int'l Symposium on Mathematical Programming, Day 2

    • 0 Comments

    Here are my notes from the second day of ISMP.  (Here are my day 1 notes.)  I spent the whole day going to IPM talks:

    Meszaros: Unfortunately I missed the plenary talk by Friedrich Eisenbrand due to microbrews.  I attended an IPM session after that - first up was Csaba Meszaros - interesting to hear from him because BPMPD has been such an impressive code for so many years.  His talk was about recent improvements in BPMPD.  BPMPD has been in continuous development for 15 years or so.  His recent work appears to focus on a) QCQP b) exploiting "hypersparsity".  He is using a primal-dual log barrier method  - not a primal-dual HSD method as we at Solver Foundation have chosen for our SOCP solver.  So his handling of starting points and infeasibility detection is different.  He went into the tradeoffs between using augmented and normal systems for the search direction, which affect both performance and numerical stability.  He has implemented both and has logic on top to determine which to use.  He also talked about QCQP presolve, which often whittles down the size of "real" models substantially.
     
    An interesting bit of trivia: he showed a table that compared lines of code in various modules, "then and now":

     	2009	1981
    Ordering	5700	155
    Cholesky	2825	100
    Backsolve	820	45
    

    I think the difference is indicative of both Csaba's commitment to improving BPMPD as well as the number of practical issues you need to think about when building an industrial grade solver.
     
    Bliek (IBM): Next up - IPM session chair Christian Bliek from IBM.  His talk was about barrier improvements in CPLEX.  For the single threaded case, CPLEX 12 is about 5% faster than 11 [note that these numbers are totally unofficial and any errors are my own].  With 4 threads it is about 20% better.  There was no magic bullet here, more tuning at the solver and algebra layer.  With a sophisticated solver such as CPLEX the improvements come through hard work, no tricks.  There was also some data on simplex vs. barrier.  For their complete set of their benchmark LPs, for problems that take 100 seconds or more barrier (without crossover) beats dual simplex on average.  If you allow crossover, then performance vs dual simplex is about even for small problems (~1s solution time) and after that crossover really takes over.  For problems that take 1000s and up, the geometric mean for the performance ratio against dual is 0.55.  So almost twice as fast.
     
    For QP, barrier is way better than their active set approach.  Of course this does not take into account scenarios where warmstart could be used, where simplex rocks.  More on that later.  They also have a "concurrent" setting, meaning to race the simplex & IPM solvers.  This setting gives the best results.  Solver Foundation Services has also supported this type of "transparent parallelism" since version 1.0. The last bit of the talk was about some experiments using PARDISO instead of the solver's own algebra stack.  Their conclusion was that using a "black box" linear algebra module shows potential.
     
    Warmstart: The last talk in the session was by Anthony Vannelli, who talked about IPM warmstart.  He takes a very pragmatic approach and layed out a very sensible procedure for attacking the difficult problem of using the solution of an IPM problem to seed the solution of a related problem.  The net was that using a relatively simple warmstart procedure they were able to get (roughly) a factor of 3 speedup for their test set.  There were also some other IPM warmstart researchers in attendance - in particular Alper Yilidrim and Hande Benson. Alper had a great survey talk of existing IPM warmstart methods, and Hande is one of the top researchers in the area.  I am sure there have been interesting discussions this week!
     
    Erling Andersen (Mosek): The afternoon IPM session had talks by Erling Andersen from Mosek, Jacek Gondzio, and myself.  Erling talked about SOCP improvements in MOSEK 6 (which will be out later this year).  He's had SOCP support forever, but for version 6 he has refactored and reworked much of the implementation.  He has run into problems getting high accuracy solutions (I feel his pain), and he has had some problems with infeasible or nearly infeasible problems.  He had some interesting thoughts on infeasibility criteria, rooted in his experience with real problems.  He's going to get about a 15% speedup, which is quite impressive since he is already starting with a very fast solver.  Erling has built a great set of solvers and I wish him well with Mosek 6.

    Jacek Gondzio talked about the use of indirect methods (such as preconditioned conjugate gradient) in IPM.  This hasn't worked out well in the past because such methods are not able to solve the systems to the accuracy required by IPM search directions.  And the problem is still not solved, but for his new approach he did show some impressive results for dense problems.
     
    The title of my talk was Interior Point Methods in Solver Foundation.  I gave an overview of where IPM sits in the Solver Foundation stack, discussed our user and solver models.  (And why different user and solver models are necessary - the "user model" serves Solver Foundation Services as well as programmers, whereas the solver model is structured so as to attain the most numerically stable, high performance solver possible.  Separation of concerns!)  Then I gave a high-level overview of our solution approach, and talked about a couple of implementation issues including handling of free variables, equality constraints, etc.  Lastly I talked about some numerical stability issues. I got nice feedback from people afterwards and there was a lot of curiosity about who is using our stuff and what is next. 

     

  • Nathan Brixius

    Int'l Symposium on Mathematical Programming, Day 1

    • 0 Comments

    I am attending the ISMP math programming conference in Chicago, representing the Solver Foundation team. Here are some of my impressions of Day 1 at ISMP:

    Plenary [Steven Boyd]: The plenary speaker was Steve Boyd who talked about real-time embedded convex optimization.  He considered cases where problems need to be solved in milliseconds or less: control, signal processing, resource allocation, and even finance (think flash trading).   The approach is basically to extend "disciplined convex programming".  DCP is a modeling system where problems are convex "by construction" because they combine operators with well-known properties; the system is then able to rewrite the problem in the standard form required by a convex programming solver (such as an IPM QP/SOCP solver). The new step is that the system can now generate highly optimized C code for a custom solver for the particular problem family described by the model.  (The algorithm itself is standard IPM.)  You can do all sorts of optimizations in this case: the problem structure is known so the symbolic ordering can be done in advance, you can ensure better memory locality, etc.  He gave many example where small QP instances were solved in tensof microseconds.  Fun stuff.

    Morning Sessions: I attended a morning session concerning approaches for nonconvex optimization problems. Jon Lee talked about solving a particular class of parametric nonlinear problems, Kurt Anstreicher talked about *nonconvex* QP and associated bounds.  I then went to a straight-up theory session talking about convergence rates & asymptotic costs for IPM - there were a couple of new results and an interesting "corrector-predictor" (instead of the other way around) approach that attains better asymptotic convergence.  There is an embarrassment of riches at ISMP: I missed by John Hooker about integrating MIP, constraint & global optimization, a great MIP session including Bob Bixby from Gurobi, and all sorts of other stuff.  There are a staggering number of good talks to attend.

    Afternoon Sessions [Modeling / Stochastic]: I went to a modeling languages track in the afternoon.  The first speaker was from LINDO Systems who talked about their new LINGO offering.  The primary new feature is to support stochastic modeling. There were some screenshots from What's Best, their spreadsheet solver. They had a few nice samples as well.

    Gautam Mitra from OptiRisk was up next - he talked about SAMPL, stochastic extensions for AMPL.  They have extended SAMPL to support:

    1. Chance constraints
    2. Integrated chance constraints
    3. Robust optimization

    Chance constraints are interesting - they occur in a range of financial problems including VaR and CVaR calculation.  Gautam riffed on the difference between stochastic and robust optimization by invoking Rumsfeld:  there are known knowns [deterministic optimization], known unknowns [stochastic],  and unknown unknowns [robust optimization].  In robust optimization you may have problem coefficients that are in some range with an unknown distribution and you want the constraints to hold in all (or most) possible circumstances.  Robust optimization also has SOCP reformulations, and I am a big believer because I think RO can be cleanly expressed in modeling languages.  The last talk in the session was about YALMIP support for robust optimization - YALMIP has had widespread adoption by control theory specialists and has had a long history of improvements.  This talk was very code-oriented and fun to watch. 

    A few overall impressions: I think it is fair to say that SOCP is entering the mainstream with LP/QP/MIP - it came up a lot today.  On the modeling side, it was interesting to see that stochastic was featured in all three talks in the session I attended.  A larger trend is that MINLP (mixed integer nonlinear programming) is hot.  There are tons of tracks on it, and it is [unsurprisingly] being taken on by both the MIP and NLP communities.  The problem description is very general so of course there are applications, but the dust has not settled on the solver side. 

Page 1 of 1 (2 items)