13 May

Analytics Textbook using SolverStudio

If you speak German, you may be interested in the recently published book:

Mike Steglich, Dieter Feige und Peter Klaus: Logistik-Entscheidungen: Modellbasierte Entscheidungsunterstützung in der Logistik mit LogisticsLab, 2. aktualisierte und komplett überarbeitete Auflage, De Gruyter, Berlin und Boston 2016.

This covers using SolverStudio and the CMPL modelling language. Mike Steglich has done a great job of adding CMPL support to SolverStudio; it is great to have SolverStudio as a core part of his new book.

For more information, including CMPL examples, see the Logistics Lab.

27 Apr

Quick patch for NEOS Incompatibility

You may find that SolverStudio (v 0.09.02 or earlier) is not working with NEOS. NEOS have recently tweaked their systems, and so you need to edit RunGAMSNEOS.py or RunAMPLNEOS.py and change all lines with “time.sleep(1)” into “time.sleep(5)”. This will be fixed in the next release. Andrew

10 Apr

The Joys of Running External Programs

As part of adding Julia, we’ve been looking at making an interactive console, i.e. capturing the output produced by a program, and letting us send commands to it. Making this work has a surprising number of traps.

Firstly, our current approach to running an external process was slightly flawed; the site CSharpTest.Net has sample code that shows how it should be done (which is not the way Microsoft do it in their sample!). Our code suffered from several of the common mistakes they list. The next release will do this better (which allows Julia 0.3.3 to work, for example, which it did not before).

As part of this exploring, we have also worked out how to run Julia and Python in a C# console so that we can send them commands interactively. This did not work “out of the box” in the way we’d expected. We now know why. When run from C#, these programs no longer think they are connected to a TTY (i.e. an interactive) terminal, and so they change their behaviour to act as if a file was passed to them (which means they just seem to hang, with no output being produced).

This is good description of why re-directing input (stdin) and output (stdout) fails for these programs. One solution is to use an intermediate program that really is a TTY terminal. Another trick is to force Python and Julia to run in interactive mode even though they are no longer connected to the “right sort” of input/output. The “-i” (interactive) flag makes them do this.

Hopefully this will all result, one day soon, in (1) faster running Julia code as a result of re-using a single Julia instance for each run, and (2) a truly interactive console in SolverStudio.

27 Feb

SolverStudio_00_06_13_00 20150227 released with CMPL support

We have now released a second experimental release (SolverStudio_00_06_13_00 20150227) with support for the COIN-OR CMPL language.  This version lets you use the CMPL Server to solve models on remote machines (all without leaving Excel). Many thanks to Mike Steglich for his hard work in adding SolverStudio support for CMPL. This also fixes problems with CPython in the SolverStudio_00_06_12_00 20150216 release, adds Python examples (to help you better understand how data items get mapped into Python variables), and improves error reporting in CMPL. And, error messages can now be double-clicked to go to the error line in your model.

21 Jan

SolverStudio+GAMS speedup: 2 hours to 2 minutes

This user feedback helps summarise why we created SolverStudio.

Dear Andrew,
Couple of months ago you had advised me to solve [my OpenSolver] model (which takes 1.5 hours to even create set up file) in SolverStudio.

I followed your advise and now I would like to share my real life experience about such a big model.
While OpenSolver was solving my large problem in 2-2.5 hours (including setup and solution), SolverStudio GAMS formulation reduced the solution time to 2 minutes. I’d like to take this opportunity to thank everyone who developed such a tool. Also, SolverStudio greatly quickened up NEOS solver use. It was kind of painful to NEOS solver on its own…