太陽光発電の計算
2026-05-22
太陽光パネルと蓄電池の必要量と適切な比率を定量化するための計算ガイド(Factorio Wiki 由来)
このチュートリアルでは、 必要な fct.term.building_solar_panel と fct.term.building_accumulator の量、 そして両者の最適比率を、 ゲーム内の数値からきちんと定量化していきます。
「21 : 25」 「20 : 24」 のような有名な比率の出どころを、 単位の定義から順番に組み立てて確認する、 という構成です。
最後に実機テストで近似比率の優劣を比較しますが、 結論を先に言うと、 メガベース手前までは 17 : 20 の保守比率で十分回る、 という感触です。
単位と記号
用語の整理
エネルギーと電力 (出力) の違い
ゲームは SI 単位を採用していて、 現実世界での使われ方とほぼ揃っています。
エネルギー E と 出力 (電力) P はしばしば混同されますが、 電力はエネルギーの時間微分です。
「1 秒あたりに使われる / 生成されるエネルギー量」 が電力、 と覚えるのが手堅いです。
電力は機械を動かすために使われ、 機械は 仕事 W を行います。
仕事の一例は、 ある質量を重力に逆らって一定の距離だけ持ち上げることです。
通常、 熱としての損失で使えるエネルギーは減りますが、 Factorio では「熱効率損失」 のような実装は基本的に考慮されておらず、 ソーラーで生まれた電力はそのまま機械にぶつかります。
蓄電池の「電荷」
最後に蓄電池の蓄積電荷があります。
電荷は伝統的にクーロンの単位を持ち、 コンデンサのエネルギーは電荷とそれにかかる電圧で決まる、 という現実物理の関係を踏まえることが、 ここの単位定義の出発点になります。
ただし Factorio では機器が異なる電圧を使う、 という事情を考慮しないため、 Factorio の蓄電池の「電荷」 A は、 ここで合成された値で定義することにします。
式記号の一覧
エネルギー側の主な記号は次のとおりです。
- E ... energy、 単位 J (Joule)。
kWh で書かれることも多く、 1 kWh = 3600000 J = 3.6 MJ - W ... 行われた仕事、 単位 N·m (= J)
- A := (1/2) Q · U² ... 蓄電池の charge、 単位 J
電力側はドット表記で時間微分を示すのが一般的で、 以下の通り。
- PS := dE/dt ... 供給される電力、 単位 W (= J/s)
- W̊ := dW/dt ... 進行中の機械仕事、 単位 W
- Å := dA/dt ... 蓄電池 charge の変化率、 単位 W
エネルギー収支
エネルギーは生成も消滅もしません。
変換されるだけ、 というのが熱力学第一法則の基本です。
したがってエネルギー収支は常に成り立ち、 その時間変化率はゼロにならなければなりません。
供給電力から「継続的に行われる仕事」 と「蓄電池へ充電される率」 (グリッドからエネルギーを奪う率) を差し引くと、 結果はゼロになるはずで、 次のように書けます。
PS − W̊ − Å = 0
過剰発電と不足
プレイヤーは過剰発電を心配する必要はなく、 発電設備は自動的に出力を上限にクランプしてくれる、 というのが Factorio の素直な挙動です。
問題になるのは、 発電が不足して機械に必要な電力が供給されなくなるケースで、 ここをどう避けるかが太陽光発電設計のすべて、 と言ってもよいくらいです。
その場合、 機械は自身の電力需要を絞り、 動作が遅くなる挙動を取ります。
多くの場面で、 これらの率は時間とともに変化するもの、 と覚えておくとよいです。
太陽光パネルは昼夜で発電量が大きく変動し、 機械も使用状況に応じて消費電力が増減します。
例えばインサーターは腕を振るときだけ電力を多く消費し、 待機時はごくわずかしか消費しません。
そこで統計的に重要な値の表記法を導入します。
- 区間 T における平均値は上にバーを付けて x̄ = (1/T) ∫ x(t) dt
- ピーク値は上向きキャレットで x̂ = max(x(t))
1 枚の太陽光パネルの平均出力
ピーク 60 kW から平均 42 kW へ
太陽光パネルのピーク出力は P̂ = 60 kW と簡単に分かりますが、 日中の正確な出力は日照に応じて変化します。
実機の計測で平均を取る場合、 蓄電池を何個か繋げば、 彼らが日間の積分をしてくれる、 という仕組みを使えます。
0 = P(t) − Å(t)
Å(t) = P(t)
A(T) = ∫₀ᵀ P(t) dt
1 枚の太陽光パネルと 4 個の蓄電池を使った実験では、 1 枚の太陽光パネルは 1 日あたり 17.6 MJ のエネルギーを生成することが分かっています。
丸め誤差と複数日の積分
丸め誤差のため、 1 日 1 枚あたりの値は 17.55〜17.65 MJ の範囲にあり得るので、 実験は複数日繰り返してならすことができます。
| Day | Accumulator charge | Energy/day |
|---|---|---|
| 1 | 17.6 MJ | 17.6 MJ |
| 2 | 35.3 MJ | 17.65 MJ |
| 3 | 52.9 MJ | 17.633 MJ |
| 4 | 70.6 MJ | 17.65 MJ |
| 5 | 88.2 MJ | 17.64 MJ |
| 6 | 106 MJ | 17.666 MJ |
さらに実験を重ねると、 真の値は周辺で揺れながら最終的に 17.64 MJ に近づく、 ということが見えてきます。
A(T) = 17640 kJ
P̄ = A(T) / T = 17640 kJ / 420 s = 42 kW
Nauvis での 1 日は 7 分、 すなわち T = 420 s なので、 各太陽光パネルは平均して約 42 kW を供給する、 という値が得られます。
パネル出力関数
区分線形関数で近似する
さらなる計算のために、 太陽光パネルの出力関数が次のような形だと仮定します (1 日 25200/60 秒 = 420 秒)。
P(t) = {
(60/84) · t 0 ≤ t < 5040/60 s (dawn)
60 5040/60 < t ≤ 17640/60 s (day)
60 − (60/84)·(t − 17640/60) 17640/60 < t ≤ 22680/60 s (dusk)
0 22680/60 < t ≤ 25200/60 s (night)
}
∫₀ᵀ P(t) dt = 17640 kJ
必要な最大蓄電量 A^
太陽光パネルの平均出力が分かったので、 必要な最大蓄電池 charge A^ を試算するための負荷を構築できます。
2 回目の実験では、 別々のグリッド上にある 2 枚の太陽光パネルに対して、 一方のグリッドに 17600 kJ / 420 s ≈ 41.9 kW、 もう一方に 17640 kJ / 420 s = 42 kW の負荷をかけて、 ぎりぎりの差を観察できる設定で動かします。
これは次の構成で実現できます。
- 8 台の組立機 Mk.II (1 台あたり 5 kW)
- 3〜4 台の高速インサーター (1 台あたり 500 W)
- 1 または 0 台の通常インサーター (1 台あたり 400 W)
これに余裕を持って 100 個の蓄電池を追加し、 システム中のエネルギーを観察する、 という実験設計です。
観察結果
41.9 kW のグリッドに対する実験では、 最初のピークは高さが約 4.24 MJ で、 各連続するピークは真の太陽光パネル出力が 41.9 kW より大きいために、 じわじわ高くなっていきます。
42 kW のグリッドに対する実験では、 各ピークが約 4.24 MJ に到達しますが、 まったく充電がない状態から始めると 5 秒ほど不足するという挙動を取ります。
これは低電力時に機械の振る舞いが変わるためかもしれません。
実験をやや事前充電した状態で開始すると、 システムは安定します。
太陽光パネル 1 枚あたりの蓄電池数
4.24 MJ から 0.84 へ
4.24 MJ は、 蓄電池 1 個あたりの蓄電容量 5 MJ から 0.848 個分を充填できる量です。
保守的に見ると、 太陽光パネル 1 枚あたり蓄電池 0.85 個、 すなわち太陽光パネル 20 枚に対して蓄電池 17 個の比率に設定できます。
より厳密なアプローチでは、 太陽光パネル 1 枚あたり 0.84 個の蓄電池、 言い換えれば太陽光パネル 25 枚に対して蓄電池 21 個の比率を採用します。
解析解: 2646 / 3125
前述の出力関数を蓄電池の時間変化率として設定し、 その平均出力を負荷として差し引けば、 セットアップが連続供給できるはずの条件を解析的に解けます。
まず発電が 42 kW に達する時刻を求めます。
42 = (60/84) · tstart
tstart = 3528/60
次に発電関数を時間でシフトし、 42 kW だけ下げて関数の開始点をゼロにします。
Å(t) = P(t − 3528/60) − P̂
= {
(60/84) · t 0 ≤ t < 1512/60 s
60 − 42 1512/60 < t ≤ 14112/60 s
60 − (60/84)·(t − 14112/60) − 42 14112/60 < t ≤ 19152/60 s
−42 19152/60 < t ≤ 21680/60 s
(60/84)·(t − 21672/60) − 42 21672/60 < t ≤ 25200/60 s
}
A(T=420 s) = ∫₀ᵀ Å(t) dt = 0 J
臨界時刻 tcrit
蓄電池の charge がピークに達する臨界時刻 tcrit (A^ = A(tcrit)) を求めるため、 その導関数がゼロを通る時刻を見ます。
これは関数の第 3 区間で起こります。
Å(tcrit) = 0 = 60 − (60/84)·(tcrit − 14112/60) − 42
tcrit = (60 − 42)·(84/60) + 14112/60
= 15624/60 s = 260.4 s
A(tcrit) = ∫₀ᵗ Å(t) dt
= (60/84)·(1/2)·(1512/60)² + (60−42)·(14112/60 − 1512/60)
+ (60−42)·(15624/60 − 14112/60) − (60/84)·(1/2)·(15624/60 − 14112/60)²
= 11345 + 3780 + 11345 (kJ)
= 21168.5 kJ ≈ 4233.6 kJ (per panel)
A(tcrit) = 21168.5 kJ となります (1 枚あたりに換算すると約 4233.6 kJ)。
これを蓄電池 1 個あたり 5000 kJ で割ると、 真の完全な比率は次のようになります。
21168.5 / 5000 = 2646 / 3125 = 0.84672
これにより、 太陽光パネル 1 枚あたり 0.84672 個の蓄電池、 言い換えれば太陽光パネル 3125 枚に対して蓄電池 2646 個、 というのが最適比率の正確な値になります。
実用上は 0.85 (太陽光パネル 20 枚に対して蓄電池 17 個) を採用しても問題ありません。
ベストな比率の表
蓄電池が多めの場合 (上から 0.84672 に収束)
これらの比率は解析解に下から近づくケースです。
より正確な近似を作るには多数の個別機器が必要になり、 実機で 0.84672 をしっかり再現するには 1000 枚規模のソーラーフィールドが要る、 というスケールになります。
| Accumulators | Solar panels | Ratio |
|---|---|---|
| 1 | 1 | 1 |
| 6 | 7 | 0.857142857 |
| 17 | 20 | 0.85 |
| 28 | 33 | 0.848484848 |
| 39 | 46 | 0.847826087 |
| 50 | 59 | 0.847457627 |
| 61 | 72 | 0.847222222 |
| 72 | 85 | 0.847058824 |
| 83 | 98 | 0.846938776 |
| 94 | 111 | 0.846846847 |
| 105 | 124 | 0.846774194 |
| 221 | 261 | 0.846743295 |
| 337 | 398 | 0.846733668 |
| 453 | 535 | 0.846728972 |
| 569 | 672 | 0.84672619 |
| 685 | 809 | 0.846724351 |
| 801 | 946 | 0.846723044 |
| 917 | 1083 | 0.846722068 |
| 1033 | 1220 | 0.846721311 |
| 1149 | 1357 | 0.846720707 |
| 1265 | 1494 | 0.846720214 |
| 2646 | 3125 | 0.84672 |
蓄電池が多めの場合、 比率は上から 0.84672 に向けて単調収束していきます。
蓄電池が少なめの場合
逆に蓄電池が必要数より少ない近似は次のようになります。
| Accumulators | Solar panels | Ratio |
|---|---|---|
| 1 | 2 | 0.5 |
| 2 | 3 | 0.666666667 |
| 3 | 4 | 0.75 |
| 4 | 5 | 0.8 |
| 5 | 6 | 0.833333333 |
| 11 | 13 | 0.846153846 |
| 116 | 137 | 0.846715328 |
| 1381 | 1631 | 0.846719804 |
| 2646 | 3125 | 0.84672 |
下から 0.84672 に向けて収束しますが、 一般的には「上から押し込む」 ほうが負荷耐性があり、 工場稼働の安定性は上です。
比率のテスト
84 / 100 から 117 / 138 まで
一般的に推奨される比率は 21 / 25 (0.84) ですが、 これを 17 / 20 (0.85) や、 0.8467・0.8469 の比率と比較してみます。
公平を期すため、 テストはすべて負荷がかかる前に蓄電池を完全充電した状態から開始します。
- 84 / 100 (21 / 25 = 0.84): 18 秒間、 蓄電池 charge が 0 kJ まで落ちる
- 85 / 100 (17 / 20 = 0.85): 最低 charge 959 kJ (1 個あたり 11.282 kJ)
- 83 / 98 (≈ 0.8469): 最低 charge 107 kJ (1 個あたり 1.289 kJ)
- 116 / 137 (≈ 0.8467): 0.5 秒間だけ 0 kJ まで落ちる
解析解との一致
これらのテストは解析解を支持する形になっていて、 0.8467 の比率は 42 kW を維持するにはぎりぎり足りない一方で、 0.8469 はほとんど 0.025% まで放電してしまう、 という結果が出ています。
実用上の結論
実プレイで「20 : 24」 「17 : 20」 を素朴に採用しても、 ほぼ問題なく動作することがわかります。
ただし、 メガベース規模では微差が積み上がって工場全体の安定性に効いてくるので、 こだわるなら解析解寄りに寄せていく、 というのが堅い方針です。