Tinker Tailor Solver Spy

Have you ever wondered what calculations Excel Solver does to discover your model? Be curious no longer; this spreadsheet (ObserveCalculations.xlsm) will show you exactly what goes on. Be sure to bring up the VBA Immediate window (Alt-F11) to watch the calculations in real time. To make it easier, we’ve also copied some of this output into the sheets. You can, of course, also use this to watch OpenSolver doing its work. Enjoy. PS: You’ll see that things have changed quite a bit between Solver 2007 and Solver 2010…

Ranges and ‘Assume Non-Negative’ Quirks

I learnt a lot working on OpenSolver 1.1beta. For example, did you know that Excel’s union operator can produce ranges with duplicate cells!? Pearson describes the problem here. (We haven’t implemented this yet in OpenSolver as it may slow things down, but will do if it causes problems.) I also realised that Excel allows ranges (such as for the decision variables) like “A1:A5,A2:A6” that internally overlap; OpenSolver now internally fixes ranges like this when they occur.

I’ve always told my students that Solver’s “Assume Non-Negative” applies zero lower bounds to all the variables. I was wrong, as demonstrated by Solver’s new wording “Make Unconstrained Variables Non-Negative”. Lower bounds are only applied to variables that don’t have ‘explicit’ lower bounds set for them in the constraints. ‘Explicit’ here means the variable appears in the left hand side of a constraint which has a right hand side specified by a range or a constant. However, my preliminary tests suggest that Excel 2010 also requires that the left hand side of the constraint not include any non-decision variables. This can lead to different solutions when you move to Excel 2010, which seems rather strange. OpenSolver used to apply zero lower bounds to all the variables. The new version now implements the 2007 approach; you can see this in the new Bounds section in the .lp files.

Finally, did you know the right hand side of a constraint can contain a formula? This is a direct consequence of Excel allowing formulae to be entered as a “named range” (not that it is actually a range!). OpenSolver now handles these (not that I’d suggest you use this obscure feature).

OpenSolver 1.1beta released (4 March 2011)

OpenSolver 1.1beta is now available for download. OpenSolver can now run in Excel 2010 as well as 2007, and solves much larger problems and does so more quickly. (We tested on a problem with 70,000 variables and 70,000 constraints sent in by a user!) There are lots of little bug fixes and big improvements, including an AutoModel feature that provides an optional alternative to the Solver dialog; many thanks to my student Iain Dunning for coding this up. We now also check that the model is linear, and highlight any problems. Thanks to Kathleen Gilbert for working over her holidays to make these improvements. You can download the beta here. We look forward to your feedback.

Cited in Interfaces

OpenSolver has been mentioned in the latest INFORMS Interfaces journal in a COIN-OR article by Kipp Martin, who writes: 

Users of Excel should also be aware of OpenSolver. This is an Excel VBA add-in that extends the Excel built-in solver from Frontline Systems Inc. This add-in allows the user to formulate a model using the builtin Excel solver. However, rather than optimize the model with the built-in Excel solver engine, with the OpenSolver add-in, you can solve the problem using the COIN-OR Cbc mixed-integer linear programming solver. Thus, there are no size limitations based on license restrictions. Students can build and experiment with large realistic-sized models. Another feature of OpenSolver is that it has a command, View LP Model, which shows the algebraic statement of the model. This is a nice feature for debugging and actually seeing the underlying constraints and objective function in an easily readable format. Although built on COIN-OR software, OpenSolver is not available at the COIN-OR website; it must be obtained at 

Martin, Kipp: Tutorial: COIN-OR: Software for the OR Community, Interfaces 40(6), pp. 465–476, INFORMS 2011 (subscription required) 

OpenSolver 0.98 beta (Jul 16, 2010)

OpenSolver has been upgraded to version 0.98 (still beta). This version includes bug fixes associated with quick solves (one GUI related, one that fixes the handling of multi-area ranges, and checks that the user is on the same sheet and workbook as that used to initialise the quick solve), and also improvements so that OpenSolver dynamically resizes its arrays to handle large problems (assuming everything fits in memory). All feedback appreciated… Andrew

Blogged by Mike Trick

Mike Trick, who visited New Zealand a few years ago, has blogged about OpenSolver. This has generated an interesting discussion about the GPL license, and whether this will limit what people want to do with OpenSolver. I’ve been having similar discussions with Ted Ralphs, the CBC maintainer, and Stu Mitchell of PULP fame. If anyone wants OpenSolver to be available under another license, then please let me know.

As well as all the contributions Mike made to OR in New Zealand during his stay, I also have to thank him for his Travelling Umpire Problem (TUP) which kept my Heuristics class very busy.

I hadn’t come across Larry’s IEOR Tools site before following the link on his OpenSolver comment. He too has written about OpenSolver. He’s created an interesting site with a good open source emphasis that I’ll be visiting more often.