
補給戦⑭ Uボート運用のスケジューリング
こんな事、妄想はしていても解けるとは思わなかったよ。
しかも無料で瞬殺。
ということは、今、業務で直面してる問題も表現できるな。
第二次世界大戦です。
Uボートは1/3が指定海域に居たとすると、1/3が往復で航行中、1/3がドックで修理中でした。
当時の建造スピードと隻数と撃沈される割合を考慮に入れて、 現在の最適化数学で計算しようとすると どの比率で距離が異なる海域への派遣隻数を割り振るのが最適になりますか?
答えではなく数式の立て方が知りたいです。
当時はコンピューターも無いので経験的に解いたのだろう。
# パラメータ(定数)
I: 海域の集合
N: 総Uボート数
vi: 海域iでの日あたり戦果期待値
di: 海域iまでの片道距離(日数)
ri: 海域iでの作戦期間(日数)
mi: 海域iでの整備必要日数
ci: 海域iでの1日あたり燃料消費量
F: 利用可能な総燃料量/日
P: 総整備能力(同時整備可能隻数)
# 決定変数
xi: 海域iに配分する隻数 (i ∈ I)
# 目的関数(最大化)
max Z = ∑(vi * xi) for all i ∈ I
# 制約条件
1. 作戦海域展開制約:
∑xi ≤ N/3 for all i ∈ I
2. 往復航行中の艦艇数制約:
∑(2di * xi)/(ri + 2di + mi) ≤ N/3 for all i ∈ I
3. 整備中の艦艇数制約:
∑(mi * xi)/(ri + 2di + mi) ≤ N/3 for all i ∈ I
4. 燃料消費制約:
∑(ci * xi) ≤ F for all i ∈ I
5. 整備能力制約:
∑(mi * xi)/(ri + 2di + mi) ≤ P for all i ∈ I
6. 非負制約:
xi ≥ 0 for all i ∈ I
# 補足的な制約条件(必要に応じて)
7. 各海域の最大収容制約:
xi ≤ Mi for all i ∈ I
(Mi: 海域iの最大収容可能隻数)
8. 最小派遣数制約:
xi ≥ Li for all i ∈ I
(Li: 海域iへの最小必要派遣隻数)
# 変数間の関係式
サイクルタイムTi = ri + 2di + mi for all i ∈ I
作戦中の艦艇数 = xi
移動中の艦艇数 = (2di * xi)/Ti
整備中の艦艇数 = (mi * xi)/Ti
線形計画法で定式化してみましょう。簡略化のために、まず基本的な形で表し、その後で現実的な制約を加えていきます。
このモデルの特徴:
1. 簡略化のポイント:
- 時間変動を静的な問題として扱う
- 撃沈率を期待値として戦果に組み込む
- サイクルタイムを固定値として扱う
2. 主要な制約:
- 3分の1ルールを維持
- 燃料と整備能力の物理的制約を考慮
- 各海域での時間配分を線形化
3. 現実的な拡張可能性:
- 季節係数の導入(vi を時期により変動)
- 港湾別の整備能力制約の追加
- 補給基地の容量制約
このモデルを解くことで、各海域への最適な配分が得られます。実際の運用では、これを基本として状況に応じた調整を行うことになります。