総組み合わせを算出するプログラムを作りました。プログラムとしては貧弱(最低)ですが、実行させることだけ考えて作りました。
プログラムソース
Linuxでベタに実行する方法です。
1.FTP等でファイルのアップロード
今回はパッケージ:roundrobin毎アップロード。今回はホームディレクトリにjavaフォルダを作ってその中にroundrobinをいれます。
2.mysql-connectorの設定
Javaの設定ももちろんですが、コネクタの設定もしておきます。
http://mizunolab.sist.ac.jp/2015/11/linuxjavamysql.html
3.コンパイル、実行
まずサーバにsshで接続します。rootで接続した場合(証明書あり)
# su -ユーザ名
$ cd java
またはユーザで接続する場合
ssh -l ユーザ名 ホスト名
[コンパイル]
java]$ javac roundrobin/*.java
[実行]
java]$ java roundrobin.Roundrobin_main
[データベースの確認]
今回使っているテーブルはcombinationsとpointsの2つです。
combinationsテーブルにアクセスすると、ID、Nのところに値が入ってきます。NはnCrのrの部分のところです。
そこのViewをクリックすると、関係してあるpointsレコードが出力され、ID, Facility_id, Combination_idに値が入ってきます。
※一番最初だけテーブルをtruncateしておいた方が確認しやすいかもしれません。
[総組み合わせの修正]
今回はnCrのnは固定(n=42)、rを変更していきます。
42C41を算出する場合
(1)
java]$ vi roundrobin/Roundrobin_main.java
int n = 42, k = 41;
kのところが41となっていることを確認します。
(2)java]$ vi roundrobin/Roundrobin_lib.java
for(idx[40] = idx[39]+1 idx[40] < n-k+41; idx[40]++){
・・・
・・・
}//40
のところが有効になっていることを確認します。
(3)コンパイル、実行、確認
java]$ javac roundrobin/*.java
java]$ java roundrobin.Roundrobin_main
データベースも確認します。
42C40を計算する場合
java]$ vi roundrobin/Roundrobin_main.java
int n = 42, k = 40;
kのところが40に変更。
java]$ vi roundrobin/Roundrobin_lib.java
// for(idx[40] = idx[39]+1 idx[40] < n-k+41; idx[40]++){
//}//40
この2行だけをコメントアウトします。
inputResult(index, idx);
mysql.insertCombination(k, idx);
index++;
はコメントアウトしない
このような感じで42C39を実行する場合も
java]$ vi roundrobin/Roundrobin_main.java
int n = 42, k = 39;
kのところが39に変更。
java]$ vi roundrobin/Roundrobin_lib.java
このようにidx[39]のところを対でコメントアウトします。
このように数を減らしていきながら、ファイルのコメントアウトを増やしていきます。
0 件のコメント:
コメントを投稿