Installation information

There are several ways to install GCG and its dependencies:

  1. install the SCIP Optimization Suite, which includes SCIP, SoPlex, ZIMPL, and GCG, or
  2. install SCIP, SoPlex, ZIMPL, hMETIS, Bliss, and GCG manually.

How to install the SCIP Optimization Suite

The easiest way to install GCG is to download the SCIP Optimization Suite because it already contains SCIP, SoPlex, ZIMPL, and GCG. After extracting the archive, a simple make compiles SoPlex, ZIMPL, and SCIP. Afterwards, GCG can be compiled by make gcg.

# tar xvfz scipoptsuite-[version].tgz
# cd scipoptsuite-[version]/
# make
# make gcg

The GCG binary can now be found in scipoptsuite-[version]/gcg-[version]/bin. Also, more detailed instructions on how to compile the SCIP Optimization Suite can be found at here.

Furthermore, the optional dependencies hMETIS and Bliss can be included to enable additional Detectors. Additionaly, Bliss is used to detect whether pricing problems can be aggregated. For simplicity, we assume that hmetis-[version]-linux.tar.gz and bliss-[version].zip are saved within scipoptsuite-[version]/.

hMETIS is only distributed as a binary and therefore a simple link to the GCG folder is enough to enable it.

# cd scipoptsuite-[version]/
# tar xvfz hmetis-[version]-linux.tar.gz
# cd gcg-[version]/
# ln -s ../hmetis-[version]-linux/hmetis hmetis

In order to enable Bliss, GCG needs to be recompiled and links to Bliss be set.

# cd scipoptsuite-[version]/
# unzip bliss-[version].zip
# cd bliss-[version]
# make
# cd ..
# make BLISS=true gcg

When the BLISS flag is set for the first time, we are asked for links to Bliss such that gcg-[version]/lib/bliss links to bliss-[version]/ and gcg-[version]/lib/libbliss.a to bliss-[version]/libbliss.a. If Bliss was unpacked within scipoptsuite-[version]/, we may enter

../../bliss-[version]/
../../bliss-[version]/libbliss.a

How to install GCG manually

Installing everything manually requires GCG, SCIP, SoPlex, ZIMPL, and additionally Bliss and hMETIS. Let assume that all source code archives were saved within one folder, i.e.

# ls
bliss-[version].zip  gcg-[version].tgz  hmetis-[version]-linux.tar.gz  scip-[version].tgz  soplex-[version].tgz  zimpl-[version].tgz

ZIMPL and SoPlex can be compiled by a simple make.

# tar xvfz zimpl-[version].tgz
# cd zimpl-[version]/
# make
# tar xvfz soplex-[version].tgz
# cd soplex-[version]/
# make

Compiling SCIP requires links to both ZIMPL and SoPlex.

# tar xvfz scip-[version].tgz
# cd scip-[version]/
# make

When asked for links to SoPlex, we need to set links from scip-[version]/lib/spxinc to soplex-[version]/src/ and scip-[version]/lib/libsoplex.* to soplex-[version]/lib/libsoplex.*. For the linker, a link to either libsoplex.*.a or libsoplex-*.so is enough, so in our case we only need to specify the path to libsoplex.*.a:

../../../soplex-[version]/src/
../../../soplex-[version]/lib/libsoplex.linux.x86_64.gnu.opt.a
<enter>

For ZIMPL, links need to point from scip-[version]/lib/zimplinc/zimpl to zimpl-[version]/src/ and from scip-[version]/lib/libzimpl.* to zimpl-[version]/lib/libzimpl.*. Again, we may also ignore the link to libzimpl.*.so:

../../../zimpl-[version]/src/
../../../zimpl-[version]/lib/libzimpl.linux.x86_64.gnu.opt.a
<enter>

Next, compile Bliss:

# unzip bliss-[version].zip
# cd bliss-[version]/
# make

Now, GCG can be compiled. The links to SCIP need to point from gcg-[version]/lib/scip to scip-[version]/.

# tar xvfz gcg-[version].tgz
# cd gcg-[version]/
# make BLISS=true
../../scip-[version]/
../../bliss-[version]/
../../bliss-[version]/libbliss.a

Finally, set a link from the GCG directory to hMETIS.

# tar xvfz hmetis-[version]-linux.tar.gz
# cd gcg-[version]/
# ln -s ../hmetis-[version]-linux/hmetis hmetis