SCIPをMacにインストール

  • 6
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

非商用で最も高速に混合整数(非)線形計画問題を解けると言われるSCIPのMacへのインストール方法です.
結論から言えば,特に問題なくソースからコンパイルできました.

私の理解ではSCIPは以下の点が良いです:

  • 非商用,無償の中では速い
  • いろいろ解ける
    • linear programming (LP), mixed integer programming (MIP), and mixed integer nonlinear programming (MINLP)
  • PythonやJavaから呼び出せる

執筆時点2014.12.07にて最新のVer. 3.1.0を前提に書いています.
また,SCIPの非商用ライセンスZIB Academic Licenseにて利用する場合の内容です.

ダウンロード

scipoptsuite-3.1.0.tgzSCIPからダウンロード

  • Downloadをクリック
  • Source code: SCIP Optimization Suiteをクリック
  • I certify that I will use the software only as a member of a noncommercial and academic institute and that I have read and accepted the ZIB Academic License.を選択
  • Start Downloadをクリック

コンパイル

tar fzxv scipoptsuite-3.1.0.tgz
cd scipoptsuite-3.1.0
make

テスト

** Build complete.
** Find your SCIP binary in "/Users/kato/dev/SCIP/scipoptsuite-3.1.0/scip-3.1.0/bin".
** Enter "make test" to solve a number of easy instances in order to verify that SCIP runs correctly.

と表示されるので

make test

を実行.

SCIPのインストール

cd scip-3.1.0
make install INSTALLDIR=/usr/local/

特に問題なくインストールが終わってしまった.
(Macでインストールする時に何か問題が起こることを期待していたのだけれど・・・).

Interactive Shell

以下を実行するとInteractive Shellを開ける:

scip

問題の読み込み

SCIP> read check/instances/MIP/stein27.fzn

read problem <check/instances/MIP/stein27.fzn>
============

original problem has 29 variables (29 bin, 0 int, 0 impl, 0 cont) and 118 constraints

問題の最適化

SCIP> optimize
...
SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 0.79
Solving Nodes      : 3838
Primal Bound       : +1.80000000000000e+01 (315 solutions)
Dual Bound         : +1.80000000000000e+01
Gap                : 0.00 %

解の出力

SCIP> display solution

objective value:                                   18
true                                                1   (obj:0)
x0001                                               1   (obj:1)
x0002                                               1   (obj:1)
x0005                                               1   (obj:1)
x0008                                               1   (obj:1)
x0009                                               1   (obj:1)
x0011                                               1   (obj:1)
x0012                                               1   (obj:1)
x0016                                               1   (obj:1)
x0017                                               1   (obj:1)
x0018                                               1   (obj:1)
x0019                                               1   (obj:1)
x0020                                               1   (obj:1)
x0022                                               1   (obj:1)
x0023                                               1   (obj:1)
x0024                                               1   (obj:1)
x0025                                               1   (obj:1)
x0026                                               1   (obj:1)
x0027                                               1   (obj:1)