* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * This file is part of the program and library * * SCIP --- Solving Constraint Integer Programs * * * * Copyright (C) 2002-2006 Tobias Achterberg * * * * 2002-2006 Konrad-Zuse-Zentrum * * fuer Informationstechnik Berlin * * * * SCIP is distributed under the terms of the ZIB Academic License. * * * * You should have received a copy of the ZIB Academic License * * along with SCIP; see the file COPYING. If not email to scip@zib.de. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * In the following, some of the names depend on your machine and your compilation settings: - $(OSTYPE): the operating system the string returned by "uname -s" in lower case with the following replacements: - "cygwin*" is replaced by only "cygwin" - "irix??" is replaced by only "irix" - "windows*" is replaced by only "windows" - $(ARCH): the architecture the string returned by "uname -m", modified by the following rules to subsume some architectures: - "sun??" is replaced by "sparc" - "i?86" is replaced by "x86" - "IP??" is replaced by "mips" - "9000????" is replaced by "hppa" - "Power Macintosh" is replaced by "ppc" - "00??????????" is replaced by "pwr4" - $(COMP): the compiler "gnu", "intel", "compaq", "sun", "insure", ... (see make/ directory) - $(OPT): the optimization level of compilation "dbg", "opt", or "prf" - $(LINK): the library linking type "static", "shared" - $(LPS): the LP solver to use "spx", "spx121", "clp", "cpx", "xprs", "msk" For example, if you want to install SCIP on a Linux system with a x86 processor using the gnu compiler in debug mode with static linking, and using Soplex version >= 1.3.0 as LP solver, you would have the following names: - $(OSTYPE) = linux - $(ARCH) = x86 - $(COMP) = gnu - $(OPT) = dbg - $(LINK) = static - $(LPS) = spx ----------------------------------------------------------------------------- Here is what you have to do to get SCIP running: 1. Create necessary soft-links in the /lib/ directory: (a) to use CPLEX (Version >= 8.0) - ln -s /lib/cpxinc (e.g. "cd scip; ln -s /cplex90/include/ilcplex lib/cpxinc") - ln -s /lib/libcplex.$(OSTYPE).$(ARCH).$(COMP).a for each operation system and architecture to use (e.g. "cd scip; ln -s /cplex90/lib/i86_linux2_glibc2.3_gcc3.2/static_pic/libcplex.a lib/libcplex.linux.x86.gnu.a") (b) to use XPRESS - ln -s /lib/xprsinc (e.g. "cd scip; ln -s /xpressmp/include lib/xprsinc") - ln -s /lib/libxprs.$(OSTYPE).$(ARCH).$(COMP).a for each operation system and architecture to use (e.g. "cd scip; ln -s /xpressmp/lib/libxprs.a lib/libxprs.linux.x86.gnu.a") (c) to use MOSEK - ln -s /lib/mskinc (e.g. "cd scip; ln -s /mosek/4/tools/platform/linux32x86/h lib/mskinc") - ln -s /lib/libmosek.$(OSTYPE).$(ARCH).$(COMP).so for each operation system and architecture to use (e.g. "cd scip; ln -s /mosek/4/tools/platform/linux32x86/bin/libmosek.so lib/libmosek.linux.x86.gnu.so") (d) to use SOPLEX (Version >= 1.3.0) - ln -s /lib/spxinc - ln -s /lib/libsoplex.$(OSTYPE).$(ARCH).$(COMP).a for each operating system and architecture to use (e.g. "cd scip; ln -s /soplex/lib/libsoplex.linux.x86.gnu.opt.a lib/libsoplex.linux.x86.gnu.a") Warning! The ".opt.static" in the name of the SOPLEX library does not appear in the name of the soft-link. (e) to use SOPLEX (Version <= 1.2.1) - ln -s /lib/spx121inc - ln -s /lib/libsoplex121.$(OSTYPE).$(ARCH).$(COMP).a for each operating system and architecture to use (e.g. "cd scip; ln -s /soplex121/lib/libsoplex.linux.x86.gnu.opt.a lib/libsoplex121.linux.x86.gnu.a") Warning! The ".opt" in the name of the SOPLEX library does not appear in the name of the soft-link. (f) to use CLP - ln -s /lib/clpinc (e.g. "cd scip; ln -s /COIN/include lib/clpinc") - ln -s /lib/libclp.$(OSTYPE).$(ARCH).$(COMP).a for each operating system and architecture to use (e.g. "cd scip; ln -s /COIN/lib/libClp.a lib/libclp.linux.x86.gnu.a") - ln -s /lib/libcoin.$(OSTYPE).$(ARCH).$(COMP).a for each operating system and architecture to use (e.g. "cd scip; ln -s /COIN/lib/libCoin.a lib/libcoin.linux.x86.gnu.a") (g) to use ZIMPL as additional file reader for reading *.zpl files - mkdir /lib/zimplinc - ln -s /lib/zimplinc/zimpl - ln -s ..a> /lib/libzimpl.$(OSTYPE).$(ARCH).$(COMP).a 2. Compile the library and the solver program: In your SCIP main directory, enter "make [options]" with the following options: - "OPT=opt" to use optimized compilation mode (default) - "OPT=dbg" to use debug compilation mode - "OPT=prf" to use performance analysis compilation mode - "LPS=cpx" to use CPLEX as LP solver (default) - "LPS=xprs" to use XPRESS as LP solver - "LPS=msk" to use MOSEK as LP solver - "LPS=spx" to use SOPLEX Version >= 1.3.0 as LP solver - "LPS=spx121" to use SOPLEX Version <= 1.2.1 as LP solver - "LPS=clp" to use CLP as LP solver - "COMP=gnu" to use GNU c/c++ compiler (default) - other compilers are available (see make/ directory) - "LINK=static" to use static libraries (default) - "LINK=dynamic" to use dynamic libraries - "ZLIB=true" to use zlib and enable reading of compressed files (default) - "ZLIB=false" disable zlib usage - "READLINE=true" to enable readline library for interactive shell (default) - "READLINE=false" to disable readline library - "ZIMPL=false" to disable ZIMPL file reader (default) - "ZIMPL=true" to enable ZIMPL file reader (needs ZIMPL to be installed, see 1. (e)) - "VERBOSE=false" to suppress display of compiler and linker invocations (default) - "VERBOSE=true" to display compiler and linker invocations On some machines, you should use gmake instead of make. If you get an error message of the type "make: *** No rule to make target `make/make.?.?.?.?.?'. Stop.", the corresponding machine dependent makefile for your architecture and compiler is missing. Create one of the given name in the make subdirectory. You may take "make/make.linux.x86.gnu.opt.static" or any other file in the make subdirectory as example. The readline library seems to differ sligtly on different OS distributions. Some versions do not support the remove_history() call. In this case, you have to either add "-DNO_REMOVE_HISTORY" to the FLAGS in the appropriate make/make.* file, or to compile with "make USRFLAGS=-DNO_REMOVE_HISTORY". Make sure, the file "src/scip/dialog.c" is recompiled. If this doesn't work either, disable the readline library with "make READLINE=false". On some systems, the sigaction() method is not available. In this case, you have to either add "-DNO_SIGACTION" to the FLAGS in the appropriate make/make.* file, or to compile with "make USRFLAGS=-DNO_SIGACTION". Make sure, the file "src/scip/interrupt.c" is recompiled. On some systems, the rand_r() method is not available. In this case, you have to either add "-DNO_RAND_R" to the FLAGS in the appropriate make/make.* file, or to compile with "make USRFLAGS=-DNO_RAND_R". Make sure, the file "src/scip/misc.c" is recompiled. On some systems, the strtok_r() method is not available. In this case, you have to either add "-DNO_STRTOK_R" to the FLAGS in the appropriate make/make.* file, or to compile with "make USRFLAGS=-DNO_STRTOK_R". Make sure, the file "src/scip/misc.c" is recompiled. If you encounter other compiler or linker errors, you should recompile with "make VERBOSE=true ..." in order to get the full compiler invocation. This might help to fix the corresponding machine dependent makefile in the make subdirectory. 3. To run the program enter "bin/scip.$(OSTYPE).$(ARCH).$(COMP).$(OPT).$(LINK).$(LPS)" (e.g. "bin/scip.linux.x86.gnu.opt.static.cpx") 4. To generate the documentation, you need to have doxygen installed, and enter "make doc" 5. To check the code with lint, you need to have flexelint installed, and enter "make lint"