最終更新日時: 2010年05月23日 (日) 09時23分55秒

乗客の計算(V2)

この文書は、(旧)FreeTrain フォーラム内の情報をもとに作成しています。

このページの内容は、「V2」本体&プラグインの組み合わせを解説しています。
該当する本体バージョンは、FreeTrain EX Av β2.1.0.1~とα3.1.0.1~になります。

建物の数値

建物には、「人口を含む建物」と「人口を含まない建物」とがあります。人口を含まない建物は、プラットホームや工事現場など、人口を含む建物は、住居やオフィスです。

人口を含む建物は、最も近い「駅」及び「近い順に4つ目までの駅」と接続されます。建物に住んでいる人は、それらの駅を利用します。

建物には、「建物の基準人口」を設定します。この数値は、実際に建物に住んでいる人の数です。

建物には、また、「建物の人口」という数値もあります。これは、この建物から駅を利用したいと思う人の数であり、時間帯によって変化します。
具体的には、「建物の基準人口」に、時間帯ごとに変化する数値(百分率)を掛けたものになります。
この変化は、各人口の種別が持つ表によって割合が決まっています。
建物の人口 = 建物の基準人口 × 時間帯ごとに変化する利用割合
「建物の基準人口」は、住んでいる人のほか、その建物で働いている人や買い物に利用しにきた人が含まれます。
ですので、地表プラグインの「畑」であっても、その畑に働きに出てきたお百姓さんが家に帰ろうとした時の「建物の人口」が発生するわけです。決して畑に住んでいる、わけではありません。

この利用割合については、乗客計算率%(V2案)を参照してください。

なお、「建物の人口」は、「建物の立地地価*建物XYZサイズ+10」で上限制限を受けます。
建物の人口 = Math.Min( 建物の人口, 地価*建物XYZサイズ+10 )
(建物XYZサイズの判定利用は、β2.1.1.2以降となります。2.1.1.1以前では地価+10で判定されます)
地価が50の土地に立っている1x1x1の建物は、最大で60人しか出てきません。
これは、地価が低い=その駅周辺に乗降が少ない=周辺物件の利用率が低い=出てくる人数も少ない、という考え方によるものです。

なお、建物サイズのかけ率については、高さを条件から外しXYサイズのみにしようか、という議論の最中です。
テストプレイと今後の議論により、XYサイズになる場合があります。

駅の数値

駅は、「駅利用人口」を持ちます。この数値は、駅に接続されているすべての建物の「建物の人口」を合計したものです。「建物の人口」は時間帯によって変化しますので、「駅利用人口」も同様に変化します。
この「駅利用人口」が、乗客数の計算の基本となります。
駅利用人口 = 建物の人口の合計
駅は、「消費乗客数」という数値も持ちます。この数値は、「駅利用人口」のうち、実際に乗客として列車に乗った人数を表します。
消費乗客数 += 乗客数
この数値は、出かけた人が戻ってくることを表すため、1時間ごとに0.8倍されていきます。
消費乗客数 *= 0.8

乗客数を計算する

乗客数は、列車が駅を発車するときに計算します。
このとき、(駅利用人口-消費乗客数)人が列車に乗れる人数です。
しかし、これを一度に乗せてしまうと都合が悪いため、この人数の3割を上限とします。
すなわち、
(駅利用人口 - 消費乗客数) × 30%

ここで、V2で追加した要素として列車の魅力<amenity>というものがあります。
<amenity>は基本100ですが、快適な特急列車では高めの120、古い103系では90などとなっています。
この<amenity>値をそのまま前述の式にかけます。
(駅利用人口 - 消費乗客数) × 30%×魅力%
これと、発車する列車の詰め込み乗客上限のどちらか少ない方が、その列車に乗車します。

最終的には、
乗客数 = min( (駅利用人口 - 消費乗客数) * 0.3 * amenity , 列車の詰め込み乗客上限)
となります。

詰め込み乗客上限を計算する


前の項で、「詰め込み乗客上限」という数値が出てきました。
「詰め込み乗客上限」は、FreeTrain EX Av本体でそのつど計算して求めています。その計算式は次のとおりです。

まず列車には、「定員」というものがあります。これは列車プラグインの中の車両定義において<capacity>として書かれた値となります。通勤電車では140~150人ぐらい、特急電車では40~60人ぐらいになります。
しかし現実の鉄道の風景を見ると、特急列車は座席のある定員分しか通常乗客は乗りませんが、通勤電車では乗車率180%だとか200%だとかの超満員になっています。「定員」きっちりしか乗せないということは、通常ありません。これもある程度シミュレートしたいです。

そこで、V2プラグインで追加した要素として「着席定員」があります。<seatedcapacity>として書かれた値です。特急列車やグリーン車では定員<capacity>とまったく同じ数値が入りますが、通勤電車では30~50ぐらいの数値となります。
このplugin.xmlに記入された「着席定員」<seatedcapacity>を利用して、FreeTrain EX Av本体は「立席定員」を求めます。
立席定員 = 列車の定員 - 着席定員
着席定員はどんなに乗客が列車に殺到していても変わりません。7人がけのシートに8人座ることはできません。
ラッシュ時に詰め込まれるのは、立席の分だけです。
そこで「立席には、定員の2倍まで詰め込める」と仮定します。
詰め込み立席上限 = ( 列車の定員 - 着席定員 ) * 2
あとは、この「着席定員」と「詰め込み立席上限」を足すと、その車両の「詰め込み乗客上限」が求まります。
詰め込み乗客上限 = 着席定員 + ( 列車の定員 - 着席定員 ) * 2
特急列車など、着席定員=列車の定員であるばあいには、詰め込み乗客上限=着席定員=列車の定員、になっていることが分かると思います。
一方、列車の定員150・着席定員54の通勤電車であれば、詰め込み乗客上限は246となります。このときの乗車率は164%です。