Top
個別メモ
Latest update on 2012年3月5日 (月) at 10:54:46.
【第1959回】 バグ潰し+α(2011年8月16日)
- 実行させたまま眠ったわけだが,当然の如くバグがあるわけで,途中で止まっていた。どうやら最初のループで全滅してしまうようだ。きっと死亡率が高すぎるのだろうと思ったら,果たして1を超えていた。何たる間抜けな。
- 6:30に起床し,30分以上草取りをしてからシャワーを浴びて朝食をとって出発。新幹線の中でバグとりして,たぶん成功したと思う。しかし,バグがとれても,それだけではダメだ。遅すぎる。柏野さんからお教えいただいたRcppという手は最後の手段にして,その前にアルゴリズムで何とか工夫できないか考えてみよう。やっていることは単純だがループ回数が多すぎるのと,乱数呼び出しのオーバーヘッドが多いのを何とかしたい。
- ふと思いついた。2つの属性を両方個人属性にしなくてはいけないと思うから行列演算にできないので,片方は割り切って月齢従属にしてしまえばいけるかも。2つのパタンの関数を作って,速いコンピュータならオリジナル版を使い,遅いコンピュータの場合は,多少現実性は落ちるが行列演算にしたバージョンを使えばいいのではないか。それでもダメだったらRcppへの移植を考えればいいのだ。そもそものループが劇的に減ることと死亡関数の計算には乱数を使わなくなることから考えて,たぶんそこまでしなくても大丈夫な気がする。
- トレーニング・ジャーナルの最新号が届いた。いつもご恵贈くださりありがとうございます(>Aさん)。今回の特集はセルフモニタリングということだった。復路に読もう。
- 14:30頃,ベクトル計算にはしなかったが,乱数を使うのを止め,コンパートメント化して人数の期待値の計算で済ませたら劇的に速くなった(当たり前だが)。少なくともoptim()で最適パラメータを探索する内部の関数定義としてはこっちの方がいいはず。しかも,意味合いとしては個人ベースで定義されたパラメータだから,optim()で得た結果を個人ベースシミュレーションに使っても問題ないだろう。optim()の"..."部分をfnに渡すためには,gr=NULLを明示的に入れなくてはいけない,という点に気付くのに暫くかかったが,これで大丈夫だろう。後は,optim()の方法を"Nelder-Mead"にするのと"SANN"にするのとどっちがいいかだな(その先にはベクトル計算にするとか,Rcppを使うという手もあるが……)。
- "Nelder-Mead"で2年分の結果が出るまでに4時間ほどかかった。たぶんあんまり収束は良くない。あと,たぶん固定パラメータのL1が小さすぎたかもしれない。"SANN"ではどうかと思って18:30頃実行させ始めてしまったけれど,ゲリラ雷雨が通り過ぎた20:20頃になっても終わらなかったのでスリープさせて帰途に就いた。両毛線が遅れていて,復路あさま549号になった。Y5をスリープから復帰させたら計算の続きはやってくれているようだ。
- ゲリラ雷雨中,事務補佐のYさんがやってきて,コンピュータが起動しないという。画面のメッセージをみたら\system32\hal.dllが見つからないのでインストールし直すように,と出ていた。Googleで検索してみたら,おそらく壊れているのはhal.dllではなく,boot.iniらしい。ともかく起動CDを使って修復コンソールを出してbootcfg /rebuildという方法を,明日試してみよう。
▼前【1958】(月曜は普通に出勤(2011年8月15日)
) ▲次【1960】(物欲(2011年8月17日)
) ●Top
△Read/Write COMMENTS
Notice to cite or link here | [TOP PAGE]