Go言語でシミュレーション用のシンプルなフレームワークStageをつくった
DRANK

時系列に対するコンピュータシミュレーションを開発する機会が増えてきたので、共通する処理の流れをフレームワーク化した。 <a href=" コンピュータシミュレーション 状況に応じたクリック数の最大化や変化点検出のような、システムの適応的な振る舞いを検証するために、時系列に対するコンピュータシミュレーションを行うことがある。 また、実環境で発生するランダムな誤差を表現する場合、乱数を用いたシミュレーション技法であるモンテカルロ法も利用することになる。 このようなシミュレーションのプログラムでは、変化する時系列を入力に、振る舞いのシミュレーション結果を出力するだけではなく、乱数によって発生する誤差を均すためにシミュレーションを数百〜数千回繰り返す必要がある。 Stage Stageは、これらの一連の流れの実行とこれに伴う煩雑な処理(シミュレーションの並列化、乱数の管理、進捗の監視、ログ出力)を開発者から隠蔽する。 開発者は、時系列や振る舞い、ログフォーマットをGo言語で記述するだけで良い。 Stageで行っているメイン処理の「疑似コード」は以下の通りシンプルである。 for i := 0; i < iter; i++ { sem <- struct{}{} go func() {…

blog.monochromegane.com
Related Topics: Go (programming language)