16 Apr

SolverStudio 0.6.0 (2014.04.07) – Excel 2013 support, plus more

SolverStudio 0.6.0 (2014.04.07) has been released, with numerous bug fixes and improvements. This experimental beta includes:
  • beta Excel 2013 compatibility – please let us know how it works for you
  • fixes for NEOS changes,
  • the latest CBC and IPOPT solvers,
  • the latest GMPL,
  • much easier CPython support for scripting Excel,
  • a new Scintilla editor with syntax highlighting,
  • and numerous small improvements,

We have also include a new example file, “Common Formulations.xlsx”, that makes it easy to solve common optimisation models, including transportation, transshipment, assignment and knapsack model. You can also enter and solve a standard (inter) linear program, and should be able to solve more quickly than you can using OpenSolver. None of these require any understanding of SolverStudio models, and so are suitable for a wider range of users.

The new editor (and thus SolverStudio) needs the full .Net Framework 4.0, and not the .NET Framework 4 Client Profile as was used previously. This will be installed if required, and may require administrator privileges.
All feedback most welcome.
25 Jun

SolverStudio_00_50_40 (2013.06.25): Bug fixes and Improvements

This latest version of SolverStudio (SolverStudio_00_50_40 2013.06.25) has many bugs fixes and improvements. Many thanks go to Ted Ralphs for testing SolverStudio in his classes; he has uncovered lots of issues and encouraged us to make numerous improvements. Daniel Frances has also made valuable contributions to this release by encouraging us to provide an installer suitable for use in a lab where SolverStudio must be available to all users.

The (almost) full list of fixes and changes is given in the extract below from ChangeLog.txt. This covers 3 releases, only the last of which was a public release.
Package version 0.5.4 (2013.06.25),
1/ Added beta support for all-user installations on 32 and 64 bit Windows
2/ Added support for suffixes in AMPL (and AMPL on NEOS), so naming a data item rhs.dual will allow an AMPL statement like “display rhs.dual > Sheet;” to show the dual variable values on the sheet. (Previously, dots in data item names were banned.) Thanks to Ted Ralphs for requesting this.
3/ Added an AMPL menu to allow the user to choose the SolverStudio AMPL installation, meaning solvers and AMPL.exe are used from the downloaded student version of AMPL. If this is not chosen, any AMPL and any solvers found on the machine will be used (which will typically use up licenses from a license server.)
4/ Added a work around for Pyomo to write data as AMPL tables, not lists, thereby by-passing a Pyomo limitation. (This limitation is being fixed by the Pyomo team. Thanks go to Ted Ralphs for pointing this out.)
5/ Added a new File menu item to view the SolverStudio XML data added to the spreadsheet; this is most useful for debugging.
6/ Fixed a bug where hidden rows/columns caused a crash when displaying data items
7/ Changed the code to update the internal data within the spreadsheet (including the model text and settings) on each change if it has not been updated in the last 30s. This means model changes will be saved as part of Excel’s Auto Save functionality, with less being lost if Excel crashes. (Previously, the internal spreadsheet structures were only updated before a user save.) Thanks, Ted Ralphs, for pointing this out.
8/ Updated to PuLP 1.5.4 (with a minor tweak by AJM)
9/ Updated to GMPL GLPK 4.51
10/ Added a new SolverStudio.UpdateDataItemsOnSheet() method that Python models can use to push changes in data items back onto the sheet during the running of a Python model.
11/ Fixed the data items display to work with hidden rows and columns
12/ Update examples to include an AMPL suffix example
13/ Improved the centering of the install AMPL dialog
14/ Added a File … View Examples menu

SolverStudio Package 0.5.2 (2013.06.03) (prvivte release)
2/ Updated the AMPL, GMPL and AMPL on NEOS Python code to all close the ‘sheet’ file after processing it; it was previously being left open
3/ Changed SolverStudio C# code to version SolverStudio_00_05_20 (2013.06.03) to:
3A/ Fix a serious bug where enabling VBA code in a sheet resulted in the model/sheet connection being broken, causing random models to show up as the active sheet was changed. This only happened when the user “enabled” the VBA code after first loading the sheet, which caused Excel to apparently open a new workbook (while actually re-opening the old one, and hence confusing SolverStudio).
3B/ Create (and then delete) temp working directories with randomised names, thsu allowing multiple SolverStudio’s to run at the same time on the same PC. Code is also more efficient now in that it remembers the folder name once it has been created
3B/ Support “all users” installations by reading registry keys from HK_Local_Machine as well as HK_Current_User
3C/ Added in more debug output as part of fixing 3A
4/ Updated colours in Data Items editor dialog (now version 0.52 beta) to be more standard (and look better on newer Windows)
5/ Added work-around to COOPR/Pyomo code to handle Pyomo’s errors reading is data files containing simple indexed lists (thanks to Ted Ralphs’ error report)
6/ CHanged AMPL and AMPLonNEOS to output numeric data items using “g” format, meaning integer values end up as integers (eg 5, and not 5.0) within AMPL sets and indices
7/ Changed Pyomo Solver list to be anything found in Solvers folder, plus a bunch of standard solvers (which are not checked for being installed)
8/ Solver check for existance in AMPL is currently disabled
9/ Upgraded to a new CBC with AMPL support (thanks Victor from AMPL).
10/ Added support for data items with suffixes, eg var.rc, as need in AMPL (and AMPL on NEOS) to get duals, reduced costs etc. This ishandled via “escaping” of data item names. Itis not yet implemented out AMPL and AMPLonNEOS
11/ Improved the uninstall code in About SolverStudio to uninstall both current and all-users, and forcibly remove registry entries if the current-user uninstall fails.
12/ Added a new Use SolverStudio’s AMPL Student Version menu which will use the AMPL+Solvers installed using the Install AMPL Student Version, even if there is another AMPL+solvers installed.
13/ Fixed a bug in the modified COOPR code where quotes were missing around strings with spaces in them

SolverStudio_00_05_01_00 (2013.03.27) (private release)
1/ Changed the Data Items editor to fix problems where some data items were not being correctly displayed after edits
2/ Fixed a problem runnig Gurobi when SolverStudio was installed in a directory containing spaces
3/ Introduced a ‘package version’ as distinct to the C# code version which is now reported in the About SolverStudio.
4/ Centered the Gurobi licesing output dialog

28 Feb

Major New Release: SolverStudio 00_05_00_00 (2013.02.28)

SolverStudio 00_05_00_00 20130228 is our latest beta release. It adds lots of new features which we would welcome feedback on. This new version has been developed by Oscar Dowson of Engineering Science (University of Auckland), who has done an amazing job getting up to speed with the code. We are also grateful to GAMS for providing the DLL’s we use to access GDX files. The changes include:
1/ Added COOPR support + examples
2/ Added SimPy support + examples
3/ Changed Gurobi support to use Gurobi’s Python environment, meaning a full Python install is not needed. Added Gurobi License Manager + examples
4/ Added GAMS on NEOS support + examples
5/ Added integrated GAMS GDX file support via C# API
6/ Changed GAMS to use GDX files
7/ Changed the GAMS data command to $GDXIN “SheetData.gdx” in models
8/ Changed the GAMS display command
9/ Changed wording of help text in the Ribbon Menu (previously said ‘Python PuLP’ regardless of language
10/ Added a Fix Minor Errors command to AMPL. This will correct choice of Solver, and missing data, solve and display commands.
11/ Added compression for large files being sent to NEOS
12/ Added menu items to select choice of solver on NEOS; this is written to the model in AMPL as an AMPL ‘option’, and stored (invisibily) with GAMS.
13/ Split examples into different workbooks
14/ Removed CPython from SolverStudio download. Now requires user to install manually if needed
15/ Added lines to data items in Highlight Data Items and Data Items Editor to show direction of tuples
16/ Added the ability to resize the Data Items Editor
17/ Added local precedence to the Data Items Editor. Creating an items with the same name as a global hides the global. Deleting the local shows the global.
18/ Added code to parse complex AMPL output; option_display_1col99999999 no longer needed
19/ Added option to choose NEOS queue (long/short).
20/ Fixed bug where sheets with single quotes ‘ in their name failed to find Data Items or solve
21/ Updated About Box
22/ Removed need to for ugly AMPL display options command
23/ The code is now signed using a Comodo certificate
24/ Registry settings now store (and remember) the model-window’s font size
25/ Added support for storing ‘settings’ such as the choice of solver in the spreadsheet along with the model
26/ Improved handling of data items to allow sets to have missing items (which are skipped) and to contain ‘uneven’ tuples (ie tuples with different lengths in the same set). Indexed sets can also contain values (but not indices) that can be uneven tuples. Any set used for indexing needs to have tuples of all the same length (being the number of rows or columns used to define the index). Indexed sets of tuples (even and uneven) can now be written to.

21 Jan

SolverStudio, OpenSolver and Bioinformatics

Came across the following quote in Briefings in Bioinformatics. “Interestingly, Microsoft Excel (http://office.microsoft.com/en-us/excel/), the commonly used spreadsheet package for storing metabolic models, has all the necessary components to create and analyse FBA models including well-designed form-based interface, plotting and drawing facilities, in-built optimization solvers and scripting language for automating tasks (i.e. MACROS). It should be noticed that Excel-based FBA application may face technical challenges in handling large-size models due to the limitation in its in-built optimization solver. However, this issue can be appropriately resolved by using relevant software technologies such as OpenSolver (http://opensolver.org), an open-source optimization solver for Excel that runs on advanced COIN-OR CBC optimization engine (https://projects.coin-or.org/Cbc) and SolverStudio (http://solverstudio.org), a software framework that can integrate Excel with other open sources as well as commercial solvers, e.g. GLPK (http://www.gnu.org/software/glpk/), COIN CLP (http://www.coin-or.org/Clp/), CPLEX and GUROBI (http://www.gurobi.com/).” Is this an area we OR types need to be looking at more seriously?

On another matter, thanks, Bob, for mentioning SolverStudio in your AMPL talk at Informs.

10 Oct

SolverStudio_00_04_08_24 (2012.10.10)

The latest version of SolverStudio (SolverStudio_00_04_08_24, dated 2012.10.10) has now been uploaded. The big new feature of this is support for running AMPL models in the cloud using the NEOS server; simply choose “AMPL on NEOS” as your language. Everything works as it does for AMPL, including output back to the spreadsheet, and choosing the Solver using the AMPL standard command “option solver <solvername>”. You can use any solver on NEOS with AMPL support; see this list.  Thanks, NEOS and AMPL, for making this cloud service available; it is a great contribution to the OR community.

28 Sep

NEOS: Cloud Optimisation using Excel

We’ve been working on improving SolverStudio to meet the needs of a student class we are teaching. As part of these changes, we are currently beta testing a new version of SolverStudio that allows AMPL models to be solved “in the cloud” using the excellent NEOS on-line optimisation service.

SolverStudio can now take an AMPL model, combine it with the data on your spreadsheet, and send it to NEOS to solve. The results are then sent back to your computer, and appear in your spreadsheet. Using NEOS instead of a local copy of AMPL is as simple as changing the model language from AMPL to ‘AMPL on NEOS’. NEOS supports a wide range of solvers, making it very easy to experiment with different ones, including heuristics.

This is all possible thanks to the XMLRPC (XML remote procedue call) support that NEOS provides. NEOS even provide a Python example, which made it easy to add a new ‘AMPLNEOS’ language to SolverStudio and then write the Python support files to pass the model and data to and from NEOS. Thanks, NEOS, for an excellent service.