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.