1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【CLPEXメモ】COS導入済み環境でDO Python APIを動かす

Posted at

始めに

IBMの最適化ソリューションCPLEXの標準的な開発環境は、IBM ILOG CPLEX Optimization Studio(略称COS)です。
COS導入済みのPCでは、通常Eclipseのプラグインを使ってOPLと呼ばれる最適化専用の言語でモデル開発をしますが、Python APIを使った開発も可能です。
その手順のメモを記載します。

参考リンク

Setting up an optimization engine

前提

動作確認は、

MacOS: 10.14.6
CPLEX Optimization Studio: 12.9

の環境で行いました。

設定手順

COSの導入

COSに関しては、通常の方法ですべてデフォルトで導入を行います。

anacondaの導入

テストはJupyter Notebookで行いました。
その前提のanacondaに関しても、通常の方法で、全部デフォルトで行っています。

COS/cplex導入先パスの確認

次のコマンドでCOS導入先パスを確認します。

$ ls -l /Applications | grep CPLEX

手元の環境では

drwxrwxr-x  11 AKAISHI@jp.ibm.com  admin  352  9 13 10:19 CPLEX_Optimizer129

という結果でした。

Python versionの確認

次のコマンドで確認します。

$ python -V

手元の環境では、次の結果でした。

Python 3.7.3

環境変数 PYTHONPATHの設定

今までの結果を元に、次のような行を ~/.bash_profile に追加します。

export PYTHONPATH=/Applications/CPLEX_Optimizer129/cplex/python/3.7/x86-64_osx

3.7/x86-64_osxの部分に関しては、Pythonバージョンとプラットフォームに対応して適宜修正して下さい。

ライブラリの導入

次のpipコマンドで、DO Python APIライブラリの導入を行います。

$ pip install docplex

動作確認

以上で、必要な準備は完了です。環境変数PYTHONPATHが設定されている状態で、

$ jupyter notebook

で、Jupyter Notebookを起動します。

Watsonで巡回セールスマン問題を解く
で紹介しているJupyter Notebookファイルをダウンロードし、読み込みます。

後は、Shift + Enterでセルを順番に実行すると、下の図のような最適な道順をCPLEXがみつけてくれるはずです。

スクリーンショット 2019-12-02 15.28.01.png

機能制約とライセンスの関係

COSには、無料で利用な評価版もあります。評価版を使って、上記の設定を行い、巡回セールス問題を解こうとすると、以下のようなメッセージが表示されます。

CPLEX Error  1016: Community Edition. Problem size limits exceeded. Purchase at https://ibm.co/2s0wqSa.

これは、文字通り評価版の機能制約(ルール数最大1000個)で起きたエラーです。
評価版の場合、循環セールス問題で点の数(N)=5と修正して実行すると、機能制約にヒットしなくなり、正常終了するようになります。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?