memorandumsスマートフォン用の表示で見るmemorandums日々の作業ログです。cplex先日のスケジューリングシンポジウム2010で大学の時間割をソルバーを利用して作成している、という研究を聞きました。意外と簡単にできそうな印象でした(もちろん、うまく解かせるために本質的な理解と試行錯誤が必要だと感じましたが)。本学部でも時間割の作成に苦慮していると聞いていました(直接の担当になったことがないので)。「時間割なんて毎年同じでいいじゃん」と思われるかもしれませんが、意外なことに制約条件(例えば、学生数や担当教員の構成、教室など)が毎年変動するので大変です。あと、(特に私大は)カリキュラムの見直しも定期的に行われるため2つのカリキュラムが同時に進行すると大変なようです。横道に逸れましたが、とりあえずソルバーがないと始まらないので、CPLEXを入手して、まず動かしてみようと思いました。CPLEXは大学で講義や研究で利用する場合、無償で入手することができます。企業の方や一般の方はお金を出さなければなりません。役に立たない情報ですね。今回やってみて手順を忘れそうなので自分用にメモしておこうというのが動機です。自分用なので、手順とポイントだけ書きます。Initiativeのメンバー登録をします。迷ったのが「ネット上で自分がその大学に所属していることを確認できるURLを示せ」という項目。学科HPの教員一覧を入力しました。個人情報を入力してsubmitボタンを押すと、数分後に承認完了メールが届きます。次に以下にアクセスしてソフトウェアをダウンロードするためカタログページに移動します。カタログページでCPLEXと入力して、windows版とosx版をダウンロードしました。ダウンロードしたファイルはcplex_studio122.acad.macos.binなのですが、このファイルをダブルクリックしても圧縮が始まるだけで展開できません。cplex_studio122.acad.macos.bin」と入力するとインストーラが起動します。インストール先はどこでもいいようなので自分のホームディレクトリ以下(/Users/hoge←ユーザ名がhogeの場合)にインストールしました。ライセンスファイルを取得してインストールします。私はこれを忘れて1時間くらいムダにしました。以下のアドレスにアクセスします。http://www.ibm.com/services/forms/preLogin.do?lang=en_US&source=ai-ILOGKEY自分の登録情報が表示されるので確認してsubmitボタンを押します。nowのリンクをクリックするとaccess.ilmというファイルがダウンロードできます。このファイセンスファイルの登録の仕方は(http://download.boulder.ibm.com/ibmdl/pub/software/dw/university/support/ILOGQuickStart.pdf)に書いています。設置方法は2通りあります。/usr/ilog/ilm/というディレクトリを作成してそこに置くか、その他の好きな場所に置く場合です。私は後者を選択しました。CPLEXをホームディレクトリにインストールしたので/Users/hoge/ILOG/CPLEX_Studio_AcademicResearch122/licenses/access.ilmに置きました(ユーザ名がhogeの場合です)。ホームディレクトリの.bash_profileに以下の行を追加しました。ライセンスファイルが正しく登録できたか確認します。ターミナルで以下のコマンドを実行します。cplexのコマンドインタフェースです。表示されコマンド入力待ちになります。うまくいかなければ環境変数名の間違いやパス名の間違いなどが考えられます。/Users/hoge/ILOG/CPLEX_Studio_AcademicResearch122/cplex/bin/x86-64_darwin9_gcc4.0/cplex※ここまででとりあえずCPLEXのインストールは終了です。以降はCPLEXをeclipse上のJavaから利用する手順を書きます。これも結構大変でした。わかってしまえば何てことはないのですが。長くなったので手順は要点だけ書きます。eclipseを起動します。Javaプロジェクトを新規作成してApplicationというクラスを新規作成します。このプロジェクトのビルドパスを開き外部JARにcplex.jarを追加します。場所は~//ILOG/CPLEX_Studio_AcademicResearch122/cplex/libにあります。クラスの使い方はこれから勉強するとして、とりあえず動作することを確認したいと思います。以下のページにサンプルプログラムがあります。外部JARが正しく設定できていればコンパイルは問題なくいくはずです(Eclipseではコンパイルは自動的になされますので赤波線が表示されなければOKです)http://www.lkn.ei.tum.de/arbeiten/faq/man/ILOG/CPLEX/cplex75/doc/javaguide/html/CPLEX_Java_Ch1_Start2.htmlちなみに短いので上記のリンクにあるプログラムを以下に示します。コピペしたプログラムを実行するには少し準備が必要です。私はここでもはまりました。やったことは2つです。私はEclipseを日本語化していないのでメニュー名が異なると思いますがもし以下参考にされる方は適宜、読み替えてください。Configurations...を選択します。argumentsの入力欄に以下を入力します。-Djava.library.path=/Users/hoge/ILOG/CPLEX_Studio_AcademicResearch122/cplex/bin/x86-64_darwin9_gcc4.0(2)次にEnvironmentsタブを押して名前「ILOG_LICENSE_FILE」、値「/Users/hoge/ILOG/CPLEX_Studio_AcademicResearch122/licenses/access.ilm」の変数を1つ追加します。やってはいませんが、恐らく、ライセンスファイルをデフォルタの場所(/usr/ilog/ilm/)においた人はこの設定は不要と思われます。Applicationとして実行)。実行が成功するとConsoleウィンドウに赤字で以下が表示されるはずです。手順6−7のプログラムは何も計算させていないので動いたかどうかわかりません。そこで以下のページのプログラムをコピペして再度実行します。このプログラムのクラス名はLPex1なのでクラス名を変えるかクラスファイル名を変えるなどして両者をあわせてください。あと、このプログラムは実行時引数(-rとか-cとか)が必要です。その設定も上記のRunメニューからしてくださいね。http://www.lkn.ei.tum.de/arbeiten/faq/man/ILOG/CPLEX/cplex75/doc/javaguide/html/CPLEX_Java_Ch2_LPex16.htmlふーーーう、長かった。»プロフィールid:ke_takahashiソフトウェア開発、工作、面白ガジェットに興味があります。(1)はてなブログをはじめよう!ke_takahashiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。