• [rcssbase][rcssserver][rcssmonitor][rcssmonitor_classic][rcsslogplayer] CVSのタグを作成. (akiyama) 00:02:17

リリースのタグを付けるのを忘れていたので作成.

$ cd rcssbase
$ cvs tag rcssbase-11_0_0
(以下,各パッケージで繰り返し)
  • [rcssserver] CentOS 4.4上での不具合修正 & 11.0.1 をリリース (akiyama) 23:20:42

JapanOpenの競技用マシンでrcssserver-11.0.0を実際に動かしてみると,全くまともに動いてくれないどころか,モニタの表示までおかしくなってしまった. 調べてみると,boost::uniform_real の動作がおかしいことが原因と判明. へテロのパラメータの生成などで全く見当違いに巨大な値が出力されていて,クライアントがまともに動けなくなってしまっていたようだ.現地ハックでそれらを修正すると,問題なく動作するようになった.

boost::random では,以下のようにvariate_generatorを使うことが推奨されている.

boost::mt19937 engine( std::time( 0 ) );
boost::uniform_real<> dist( 0.0, 1.0 );
boost::variate_generator< boost::mt19937,
                          boost::uniform_real<> > gen( engine, dist );
double value = gen();

しかし,variate_generatorのoperator()がやっていることは,これだけ.

 result_type operator()() { return _dist(_eng); }

よって,uniform_real を使うときは以下のように書くだけで良いはず.

boost::mt19937 engine( std::time( 0 ) );
double value = boost::uniform_real<>( 0.0, 1.0 )( engine );

実際,boost-1.33の環境や研究室で使っている他のCentOSマシンでは,この簡略化した書き方で問題無かった. だがしかし,会場のマシンでは,この書き方だとありえない値が出てくる. テスト用の小さいプログラムを作ってた試してみた限り,これは uniform_real でのみ起こる問題らしい. 他のuniform_smallintなどは,簡略化した書き方でもOKだった. どういことだろう? しかたないので,variate_generatorを使うように書き換えてコミット.そして,11.0.1としてリリースした.

あ,またCVSでタグを付けるのを忘れてた.ブランチも作らなきゃ.


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-03-14 (月) 14:51:37 (2052d)
SourceForge.JP
Creative Commons License
RoboCup tools by Hidehisa Akiyama is licensed under a Creative Commons 表示-非営利 2.1 日本 License.