5

For a side project, I'm looking to install COIN-OR project solvers on a Microsoft Azure Ubuntu VM. (I will be running Pyomo optimization models on this VM as well; using NEOS isn't cutting it.) Anybody have any experience in installing these solvers on Unix-like machines? Any advice? Right now my plan is to google and indiscriminately copy-paste command line statements.

Progress thus far is crossposted to https://stackoverflow.com/questions/56618861/solver-did-not-exit-normally-jupyter-python3-ubuntu

Ralph
  • 371
  • 2
  • 5
  • 4
    Based on this answer on meta, I would say that this question is out of scope for OR.SE and should be posted on SO. What do others think? – LarrySnyder610 Jun 14 '19 at 01:41
  • 6
    Questions about software installation or software development are off-topic here, but can be asked on Stack Overflow. – Marcus Ritt Jun 14 '19 at 02:06
  • 1
    Even if you think it is off-topic, why downvote it? Is this such a terrible, horrible question? It's a reasonable question for somewhere. – Mark L. Stone Jun 14 '19 at 09:53
  • 5
    I figured this was fairly appropriate for OR SE since there aren't many regular SO users who will have experience with using Pyomo and COIN-OR. Also as an industry practitioner of OR, installing / configuring specialized OR software is something my coworkers and I deal with with some regularity. At any rate, googling did the trick (mostly). – Ralph Jun 14 '19 at 11:40
  • @Ralph no worries, it's reasonable for you to have posted here, but at least at the moment we have converged on a policy that if the question doesn't require any OR knowledge, even if it's about OR software, then it belongs elsewhere. – LarrySnyder610 Jun 14 '19 at 11:58
  • 2
    To @MarkL.Stone's comment -- remember, folks, that a downvote means "sloppy, poorly researched, etc." To indicate "off-topic", use vote to close instead. (If you feel it's both, then cast both votes, of course.) – LarrySnyder610 Jun 14 '19 at 11:59
  • @LarrySnyder610 I haven't converged there. I think Ralph makes a good case in his comment. I kind of like the one-stop shopping for all your O.R. needs and all aspects of O.R.. I'd much rather have questions such as Ralph's than posting of homework problems, even if only soliciting hints (do your own homework, I did) - if it were up to me, I'd make that off-topic. Presumably (hopefully), a lot of COIN-OR people will frequent this site. – Mark L. Stone Jun 14 '19 at 16:02
  • 1
    @MarkL.Stone So are you suggesting any question related to COIN-OR or a solver should be on topic, even if it’s an installation-type question or something else that doesn’t require OR knowledge? I don’t feel too strongly about it one way or another. If you want to make the case for that policy, maybe post on meta? – LarrySnyder610 Jun 14 '19 at 16:25
  • We drew a rather arbitrary line, and it could be drawn somewhere else instead. The key thing IMO is to get consensus on one policy or another so we can be consistent. Private beta is a good time to do that. – LarrySnyder610 Jun 14 '19 at 16:28
  • I definitely think "help with OR software" questions should be allowed. Are we going to turn away CPLEX, Gurobi, XPRESS, ... questions? What about R questions (if they are, say, about syntax rather than statistical niceties)? – prubin Jun 14 '19 at 17:34
  • leaving the "on-topic" issue aside, on other stackexchanges trying to google the answer for your question is more or less a requirement before posting. And apparently "googling did the trick". – Michael Feldmeier Jun 14 '19 at 17:49
  • 1
    I don't think we should close software-specific questions. However, where there is a dedicated effective forum, such as CPLEX https://www.ibm.com/developerworks/community/forums/html/forum?id=11111111-0000-0000-0000-000000002059 it might be better for people to post there with syntax and installation questions specific to that software..I think COIN-OR questions, of whatever sort, should be welcome and encouraged on OR SE. Maybe "OR Software Forums" https://or.stackexchange.com/questions/242/or-software-forums can be expanded to provide more guidance? – Mark L. Stone Jun 14 '19 at 17:50
  • 3
    Well, googling did mostly work... but the remaining portion is something where I can find very little useful tidbits online. This is a case where I think that allowing software questions in OR SE will be very useful. – Ralph Jun 14 '19 at 22:20
  • 1
    I agree with Ralph and feel that this kind of question should definitely be allowed here. I believe it is right on topic for someone working in the field of OR. This is not an arbitrary piece of software. It is OR software and is definitely of interest to people in the OR field, and would likely not be of interest for most people contributing to StackOverflow. – Mark H Jun 17 '19 at 04:20
  • 1
    Thanks Mark H. FWIW, I've had just one person on SO (a Pyomo developer) give spot-on answers to my Pyomo and COIN-OR questions. Searching SO mostly just turns up unanswered variants on my questions. – Ralph Jun 17 '19 at 11:14
  • 1
    This question currently being discussed on Meta here and here and here. After monitoring the comments here, I've voted to reopen while the Meta discussion continues. – SecretAgentMan Jun 18 '19 at 04:27
  • 2
    I vote to close the question again. Not for being off-topic (I'll let meta decide about that), but for "not clear what you are asking". Edit the question to tell us what specific problems you have with installing the software, and what you tried so far. – Michael Feldmeier Jun 18 '19 at 17:16
  • original post is edited with the URL for a post I created on StackOverflow. – Ralph Jun 22 '19 at 13:47

2 Answers2

3

I do not have direct experience myself with installing COIN-OR solvers under unix-based operating systems, but I do know that it can be done.

I have seen it successfully done for CLP (Linear Program Solver) and CBC (Branch and Cut Solver) by directly downloading the (open) source code and integrating these libraries with other source code. This is the approach I personally would take.

Having said this, there are binary distributions. See

https://projects.coin-or.org/CoinBinary

and for Debian based systems (such as Ubuntu) see

https://projects.coin-or.org/CoinBinary/wiki/CoinDeb

Ralph, I would be interested in hearing about how you went and about what information you were able to find out.

Mark H
  • 550
  • 3
  • 11
3

The Coin-OR stack is pretty complex with a huge dependency chain.

In general i would say, that the usual rules apply: easiest to hardest in general looks like

  1. System Packages
  2. Official Builds
  3. Build from Sources

In all cases it might be critical if someone only needs an executable (probably sufficient for pyomo) or a shared library (often easier to obtain the first; and always easier to provide some software to call the binary instead of linking or loading shared libs).

1. System Packages

This boils down to recognizing ones system and it's package-repositories. Then check is pre-made builds are available.

The usual cli-commands like lsb_release -a and the GUI-based package-managers can help.

For Coin-Cbc for example, one would find those.

2. Official Builds

It's sometimes not trivial to find those builds (and CoinOR is no exception in terms of competing documents where some are outdated and some are not). You will eventually see dead links (or 5 years old builds) trying to follow the links in Mark's answer: CoinBinary.

I would start with some of the development-places. While maybe not the core-dev place, Coin Cbc's github page for example links to this bintray providing builds.

3. Build from Sources

If there would be one thing i learned from the past it would be: CI can be a blessing! Exploit this.

Example

Let's give you some example with CHiPPS-BLIS. We want to develop something with it and therefore need our environment ready to link against it. It might be a good idea to build the current version from source and make use of it's makefiles for our work too (which is another terribly complex thing).

We start with above github entry and find Install.md:

We learn:

  • There is an extra project available just for handling Coin-OR installs / dependency management / builds: COIN-OR-OptimizationSuite
  • This route is recommend in the Install.md

But we will shortly recognize the outdated nature as:

./coin.install.sh fetch build --no-prompt --main-proj=Blis

will not do.

Now: outdated documentation is very common. But here there is a cure (and this covers most Coin-OR projects): Continuous Integration.

The main-page will show you some CI-buttons under section TESTING STATUS and it's green, so how hard can it be?

We might follow this one and arrive at some Travis-CI build.

Now we can emulate what's been done there and this case: we directly see the problem from before:

export PROJECT=`echo $TRAVIS_REPO_SLUG | cut -d "/" -f 2`
./coin.install.sh fetch --no-prompt --main-proj=$PROJECT > /dev/null

-> either one tries to understand the export syntax or one restrict to guessing
-> it's just the name within the travis-address:
    -> https://travis-ci.org/coin-or/CHiPPS-BLIS/jobs/506947381)

CHiPPS-BLIS is the project name needed for COIN-OR-OptimizationSuite

Blis (as mentioned in Install.md) is not used (and won't work)!

Now there are other important things in those build-logs helping to make something work. We see for example which version is checked out (and guaranteed to build assuming we got the same sane system) and some dir-change order to follow.

In general, these CI-scripts, when maintained, really seems to help and i won't miss out on these in the future. The above was some Coin-focused example, but recently, i again failed following official install guides and made it work following CI with Google's or-tools (Coin deps, Protobuf deps and co.).

I think it's safe to assume, that outdated documentation is more common than failed and unhandled CI-checks which will result in some ugly broken flags (and usually E-Mails).

sascha
  • 505
  • 4
  • 11