Code Monkey home page Code Monkey logo

tsp2018_takeichi's Introduction

はじめに

2018年度研究生の武市による改良型PGA-EAXのプログラムです. 本リポジトリはeclipseプロジェクトをそのまま貼り付けたものです.

内容物?

data

インスタンスファイルである.tspファイルが入っています.

このディレクトリはローカルにあっても無意味で,ジョブの投入先で参照できるようにする必要があります. 適宜クラスタやTSUBAMEにコピーしてください.

escape

expSuiteに入れるclusterinfo.txtのクラスタ版とTSUBAME版が入っています. クラスターで実行したいときはcluster/clusterinfo.txtを,TSUBAMEで実行したいときはtsubame/clusterinfo.txtをコピーしてください.

expSuite

クラスタライブラリのアレです.

lib/.svn

同上

remoteShells

同上

src

ソースコードが入っています.

src/gaeax

GA-EAXのコアなアルゴリズムに関するソースコードです. AB-Cycleの構成や,E-Set戦略,データ構造などが記述されています. AB-Cycleを改良するときは,ここをいじります.

src/gaeax2018

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の実装です.

benchmark_setting.txt

src/gaeax2018にあるベンチマークを走らせるときに必要なテキストデータです. 左からインスタンス名,集団サイズ,打ち切り改善失敗率r-base, 子個体生成数, 既知最良解(適当でもよい)を列挙しています. #で始めればその行を無視します.

designDirectory

src/gaeax2018にあるベンチマークを実行する際, そのプログラムが実行されたのがローカルかリモートかを判別するためのファイルです.

実行方法

.tspファイルが手元にある状態から,PGA-EAXの最終的な解を得るまでの手順を以下に示します. プログラムの実行はsrc/gaeax2018の中身で完結します.

なお,ファイルの出力先を指定する場合は,あらかじめディレクトリを作っておいてください.

1 近傍リストの生成

TNeighborListGeneratorMain.java.tspファイルから.neighbor.objファイルを生成します.

パラメータ

  • instanceFilePath:.tspファイルパス
  • neighborNum:近傍数

出力

指定したfilename.tspファイルと同じ場所にfilename.neighbor.objの形式で出力されます.

2 2-Optの実行

TNagata12InitializePopulation.javaで初期集団ファイル.popを生成します.

パラメータ

  • instanceFilePath:.tspファイルパス
  • outputFilePath:出力先.popファイルパス
  • populationSize:集団サイズ
  • seed:乱数シード

出力

指定したファイルパスに.popファイルが出力されます.

3 Stage1の実行

*Stage1Main.javaでstage1を実行します. *の部分には,nagata12, honda12, yamakoshi14, propose17, propose18等が入ります.

パラメータ

全ての手法に共通するパラメータを以下に示します. それぞれの手法特有のパラメータについては,design()メソッドのdesigner.begin()の引数を見てください.

  • instanceFilePath:.tspファイルパス
  • optimum:最適解の経路長(わからない場合は指定しない/適当で良い)
  • initFilePath:初期集団.popファイルパス/初期集団.popファイルがあるディレクトリのパス
  • outputPath : データの出力先のパス

出力

リモートに生成されたexpSuite/Exp*/*/(指定した出力先)以下に,終了時の集団ファイルを初めとした色んなデータが出力されます.

4 Stage2の実行

*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ファイルの読み方を次に示します.

nagata12, yamakoshi14の場合

最良経路長,世代数.resultの形式で出力されます.

propose17, propose18の場合

最良経路長,世代数,交叉回数.resultの形式で出力されます.

tsp2018_takeichi's People

Contributors

takeichim avatar

Watchers

James Cloos avatar Y. Aoki avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.