2018年度研究生の武市による改良型PGA-EAXのプログラムです. 本リポジトリはeclipseプロジェクトをそのまま貼り付けたものです.
インスタンスファイルである.tspファイルが入っています.
このディレクトリはローカルにあっても無意味で,ジョブの投入先で参照できるようにする必要があります. 適宜クラスタやTSUBAMEにコピーしてください.
expSuiteに入れるclusterinfo.txtのクラスタ版とTSUBAME版が入っています.
クラスターで実行したいときはcluster/clusterinfo.txtを,TSUBAMEで実行したいときはtsubame/clusterinfo.txtをコピーしてください.
クラスタライブラリのアレです.
同上
同上
ソースコードが入っています.
GA-EAXのコアなアルゴリズムに関するソースコードです. AB-Cycleの構成や,E-Set戦略,データ構造などが記述されています. AB-Cycleを改良するときは,ここをいじります.
GA-EAXのフレームワークに関するソースコードです.
以下に列挙するディレクトリの,*Main.javaを実行すると然るべきところにジョブが投入されます.
- src/gaeax2018/nagata12Stage1:永田先生のGA-EAX Stage1の実装です.
- src/gaeax2018/nagata12Stage2:永田先生のGA-EAX Stage2の実装です.
- src/gaeax2018/honda12Stage1:本田さんのPGA-EAX Stage1の実装です.
- src/gaeax2018/yamakoshi14Stage1:山越さんのGA-EAX Stage1の実装です.
- src/gaeax2018/yamakoshi14Stage2:山越さんのGA-EAX Stage2の実装です.
- src/gaeax2018/propose17Stage1:森下のPGA-EAX Stage1の実装です(枝エントロピーを使用).
- src/gaeax2018/propose17Stage2:森下のPGA-EAX Stage2の実装です(枝エントロピーを使用).
- src/gaeax2018/propose18Stage1:森下のPGA-EAX Stage1の実装です(独自の多様性指標を使用).
- src/gaeax2018/propose18Stage2:森下のPGA-EAX Stage2の実装です(独自の多様性指標を使用).
- src/gaeax2018/takeichiStage1 : 武市のPGA-EAX Stage1の実装です(AB-Cycleの生成を改良).
- src/gaeax2018/takeichiStage2 : 武市のPGA-EAX Stage2の実装です.
src/gaeax2018にあるベンチマークを走らせるときに必要なテキストデータです.
左からインスタンス名,集団サイズ,打ち切り改善失敗率r-base, 子個体生成数, 既知最良解(適当でもよい)を列挙しています.
#で始めればその行を無視します.
src/gaeax2018にあるベンチマークを実行する際, そのプログラムが実行されたのがローカルかリモートかを判別するためのファイルです.
.tspファイルが手元にある状態から,PGA-EAXの最終的な解を得るまでの手順を以下に示します.
プログラムの実行はsrc/gaeax2018の中身で完結します.
なお,ファイルの出力先を指定する場合は,あらかじめディレクトリを作っておいてください.
TNeighborListGeneratorMain.javaで.tspファイルから.neighbor.objファイルを生成します.
- instanceFilePath:.tspファイルパス
- neighborNum:近傍数
指定したfilename.tspファイルと同じ場所にfilename.neighbor.objの形式で出力されます.
TNagata12InitializePopulation.javaで初期集団ファイル.popを生成します.
- instanceFilePath:.tspファイルパス
- outputFilePath:出力先.popファイルパス
- populationSize:集団サイズ
- seed:乱数シード
指定したファイルパスに.popファイルが出力されます.
*Stage1Main.javaでstage1を実行します.
*の部分には,nagata12, honda12, yamakoshi14, propose17, propose18等が入ります.
全ての手法に共通するパラメータを以下に示します.
それぞれの手法特有のパラメータについては,design()メソッドのdesigner.begin()の引数を見てください.
- instanceFilePath:.tspファイルパス
- optimum:最適解の経路長(わからない場合は指定しない/適当で良い)
- initFilePath:初期集団.popファイルパス/初期集団.popファイルがあるディレクトリのパス
- outputPath : データの出力先のパス
リモートに生成されたexpSuite/Exp*/*/(指定した出力先)以下に,終了時の集団ファイルを初めとした色んなデータが出力されます.
*Stage2Main.javaでstage2を実行します.
*の部分には,nagata12, yamakoshi14, propose17, propose18等が入ります.
全ての手法に共通するパラメータを以下に示します.
それぞれの手法特有のパラメータについては,design()メソッドのdesigner.begin()の引数を見てください.
- instanceFilePath:.tspファイルパス
- optimum:最適解の経路長(わからない場合は指定しない/適当で良い)
- initFilePath:初期集団.popファイルパス/初期集団.popファイルがあるディレクトリのパス
- populationSize:集団サイズ
- childNum:子個体生成数
- failPath : データの出力先(子フォルダとしてpopフォルダとresultフォルダを事前に作ります)
リモートに生成されたexpSuite/Exp*/*/(指定した出力先)以下に,終了時の最良解を示した.resultファイルを始めとしたログファイルが出力されます.
.resultファイルの読み方を次に示します.
最良経路長,世代数.resultの形式で出力されます.
最良経路長,世代数,交叉回数.resultの形式で出力されます.