2013年6月23日日曜日

同じshellなのに?

sensitivityanalysis.shが一晩走らせたら終わっていたのでMatlabで結果を解析してみると変なエラーがあることに気づいた。それは、二つのパラメータ(excret, excret2)のときだけ11回されるはずのシミュレーションが10回しかされていなかった。この二つが共通して他のパラメータと違う点はデフォルト値が0.05ということ。

そしていろいろ調べた結果:

次のコマンドを自分のMacbookとACEnetのPlacentiaで打ってみる。

for it in `seq 0.025 0.005 0.075`; do echo "$it"; done

すると不思議なことに双方で結果に違いがあった。

Macbook:

0.025
0.03
0.035
0.04
0.045
0.05
0.055
0.06
0.065
0.07
0.075

Placentia:

0.025
0.03
0.035
0.04
0.045
0.05
0.055
0.06
0.065
0.07

もちろん正しいのは前者。なぜか後者では最後のiterationがされていない。これを他の数字で検証してみる。

for it in `seq 0.025 0.005 0.085`; do echo "$it"; done

すると、

0.025
0.03
0.035
0.04
0.045
0.05
0.055
0.06
0.065
0.07
0.075
0.08
0.085

という解答が両者から得られた。

0.075はマジックナンバーなのか???

他のユーザーに同じことしてもらってもし同じ解答が得られたらACEnetに聞いてみよう。

さらに調べてみると他にもxsiremlab, nitrif, xremip, xpref2c, chlcdmも11回目のイタレーションは行われていなかった。これらのデフォルト値はそれぞれ、0.025, 0.05, 0.025, 0.1, 0.05である。これらの数字の規則性は何か。

もしACEnetが何もできないというのであればifを使ってスクリプトをtweakしないといけないな。

0 件のコメント:

コメントを投稿