【課題】
最大貯水量15000㎥ の本北方貯水池は次のように管理されている。
毎日,残りの貯水量に対して15%の割合に当たる量を放水する。
残りの貯水量が最大貯水量の20%以下となったとき放水を停止する。
さて,最初の貯水量が12000m³であるとき,今後30日間の貯水量が
どうなるか調べてみよう。
毎日,残りの貯水量に対して15%の割合に当たる量を放水する。
残りの貯水量が最大貯水量の20%以下となったとき放水を停止する。
さて,最初の貯水量が12000m³であるとき,今後30日間の貯水量が
どうなるか調べてみよう。
【考察】
数式モデル
[放水量]=[貯水量]×[放水割合]
[仮貯水量]=[前日の貯水量]ー[前日の放水量]
※放水停止量を下回った時点で放水は停止するが,停止しないものとして仮に算出しておく。
[貯水量]=[仮貯水量]と[放水停止量]の大きい方
※仮貯水量が放水停止量より多いときは仮貯水量,少ないときは放水停止量となる。
[放水量]=[貯水量]×[放水割合]
[仮貯水量]=[前日の貯水量]ー[前日の放水量]
※放水停止量を下回った時点で放水は停止するが,停止しないものとして仮に算出しておく。
[貯水量]=[仮貯水量]と[放水停止量]の大きい方
※仮貯水量が放水停止量より多いときは仮貯水量,少ないときは放水停止量となる。
変数一覧
貯水量
最大貯水量
最初の貯水量
仮貯水量
放水量
放水割合
放水停止量
放水停止割合
経過日数
最大経過日数
最大貯水量
最初の貯水量
仮貯水量
放水量
放水割合
放水停止量
放水停止割合
経過日数
最大経過日数
:chosui
:chosuimax
:chosuistart
:chosuikari
:hosui
:hosuiwariai
:hosuiteishi
:hosuiteishiwariai
:day
:daymax
:chosuimax
:chosuistart
:chosuikari
:hosui
:hosuiwariai
:hosuiteishi
:hosuiteishiwariai
:day
:daymax
※日々変動する貯水量
※放水を停止するときの貯水量
※初日は「0」とする
※ここでは「30」である
※貯水量が放水停止量より少なくなっても
放水を停止せず,そのまま続けたときに
到達すると考えられる計算上の貯水量
放水を停止せず,そのまま続けたときに
到達すると考えられる計算上の貯水量
※放水を停止するときの貯水量
※初日は「0」とする
※ここでは「30」である
アルゴリズムの工夫
放水量は,その時点での貯水量(前日の貯水量)から算出している。
ところが,放水中に貯水量が放水停止量を下回ったならば,本来はその時点で放水を停止しなくてはならない。従ってその日の放水量は先に計算をした放水量より少なくなる。
これを実現するため,放水停止量を下回っても気にせず,そのまま計算した仮貯水量という仮想的な数量を導入する。そしてもしその値が放水停止量以上ならば,そのまま仮貯水量を貯水量とし,放水量も計算どおりとする。逆にもし下回るようならば,貯水量は放水停止量とし,放水量は元の貯水量と放水停止量の差として求めることにした。
放水量は,その時点での貯水量(前日の貯水量)から算出している。
ところが,放水中に貯水量が放水停止量を下回ったならば,本来はその時点で放水を停止しなくてはならない。従ってその日の放水量は先に計算をした放水量より少なくなる。
これを実現するため,放水停止量を下回っても気にせず,そのまま計算した仮貯水量という仮想的な数量を導入する。そしてもしその値が放水停止量以上ならば,そのまま仮貯水量を貯水量とし,放水量も計算どおりとする。逆にもし下回るようならば,貯水量は放水停止量とし,放水量は元の貯水量と放水停止量の差として求めることにした。
【DNCL】
chosuimax = 15000
chosuistart = 12000
hosuiwariai = 0.15chosuistart = 12000
hosuiteishiwariai = 0.20
daymax = 30
hosuiteishi = chosuimax * hosuiteishiwariai
chosui = chosuistart
day を 0 から daymax まで 1 ずつ増やしながら繰り返す:
│ hosui = chosui * hosuiwariai
│ chosuikari = chosui - hosui
│ もし chosuikari < hosuiteishi ならば:│ chosuikari = chosui - hosui
│ ⎿ hosui = chosui - hosuiteishi
│ 表示する(day,"日:貯水量",chosui,":放水量",hosui)
⎿ chosui = chosui - hosui