PTT推薦

[討論] 用蒙地卡羅模擬反艦飛彈攻擊

看板Military標題[討論] 用蒙地卡羅模擬反艦飛彈攻擊作者
subgn
( )
時間推噓37 推:37 噓:0 →:74

先前CSIS智庫出了一篇台海戰爭的兵棋模擬有涉及到中國以ASM攻擊美軍艦隊的部分

他們是用一個20面骰來決定每25發ASM的命中數

而且還是把20面骰簡化成5種結果(0, 1, 2, 3發與目標艦隊全毀)


因此模擬24架轟六發射的96發鷹擊12攻擊2伯克1提康,骰4次
結果是命中三發,三發隨機分配後每艘各中一發。

附上原文連結
https://tinyurl.com/3cdevwb6

前述設定在第 30~32頁


但我實在很不理解這麼專業的智庫怎麼那麼愛玩骰子
把25發ASM的結果簡化成5種結果,還是靠一個20面骰子決定,實在太過簡約

理論上這種問題應該很適合用蒙地卡羅來解決,

於是我就抱著「你行你上」的想法來試著用python實作蒙地卡羅法來測試

首先簡述一下模擬邏輯的部分

1. 整個過程簡化成一維空間,一枚飛彈的位置資訊只有與目標的距離

2. 整個艦隊不去細究陣形與各間距離,只簡化成一個點

3. 不細究一次用幾發飛彈攔截一枚ASM、每枚攔截飛彈的命中率等,

因為攔截過程是整個區域防空系統在運作,因此只用攔截率、

系統最大同時處理目標數、攔截飛彈速度來描述

4 只要ASM距離還在最小接戰距離外,沒攔截成功都還可以再進行攔截
逼近最小接戰距離內後就只能以近迫系統攔截,近迫系統一次只能攔截一發
命中一發即癱瘓,表示該艦接戰能力將從艦隊整體接戰能力扣除,假設命中後
不會馬上沈沒,後續瞄準該艦的飛彈不會改變目標。

5 所有ASM理想上以同一時間抵達艦隊,但實際抵達時間呈現常態分佈

其變異數反應各載台的整體協調能力,協調性越佳變異數越低,所有ASM

越逼近同時抵達,越有飽和攻擊效果。

6 假設攻方與守方皆有良好目獲能力與協調性,各艦不會重複攔截目標,ASM

也不會鎖定錯目標,只有命中率問題。

基本參數設定(原文有提到的設定皆採取其設定)
攻方參數
ASM命中率: 90%, ASM速度: 2馬赫 (0.68km/s)
攻方協調性: 標準差為15秒,也就是約95%的ASM在抵達時間集中在1分鐘區間內
ASM數量: 96發

防守方參數:
區域防空攔截率: 70%,
攔截飛彈速度: 2馬赫(理論上應該是個加速過程,但避免過度複雜簡化成平均速度)
單一防空艦最大處理能力: 20
區域防空對大與最小接戰距離: 100公里/5公里
近迫攔截率:0.7,軟殺成功率:0.2
船艦數量: 3艘

以上是基本參數假設,進行1024回合模擬後結果為

平均生存艦隻數:1.5艘
平均攔截率96%
平均總命中飛彈數量:2.1發

因此理論上與論文中認為的,大概率全滅的悲觀結論稍微不同,
以蒙地卡羅模擬的結果來說,平均大概會有1~2艘生存


既然都花時間寫了程式碼,只模擬一種參數與情境太浪費了,於是我就嘗試
調整一些關鍵變數看看會產生什麼結果。
分別是:
調降ASM命中率,由90%降至60%
調降ASM速度,由2馬赫降低至1馬赫
降低攻擊協調度,抵達時間標準差由15秒增加到30秒
調高各艦同時接戰上限,由10調高到20
調高區域防空接戰距離,由20km調高到40km
調高攔截飛彈速度,由2馬赫調高到3馬赫
調低攔截飛彈命中率,由0.7降低到0.5

最後,將所有情境的ASM數量都改成400,而防空艦數量調高到8艘
這麼做的原因是怕有些參數對防守方太強,結果都是全部生存,或有些參數攻方太強
結果同樣都是全滅,看不出結果差異,因此將攻守方規模都調高


結果分別如下:

情境 生還艦隻數 總命中數 攔截率 命中第一艘所需ASM 全艦癱瘓所需ASM基礎情境 0.82 20.3 92.6% 43 320
較低ASM命中率 1.71 12.7 93.4% 71 332
較低ASM速度 4.42 4.5 98.3% 200 342
較低攻擊協調度 2.53 10.8 96.2% 51 308
較高接戰數上限 2.65 8.8 96.9% 54 315
較高接戰距離 0.85 19.9 93.1% 65 324
較高攔截飛彈速度 2.49 9.3 96.8% 136 346
較低攔截飛彈命中率 0.07 44.8 84.4% 19 255


可以發現,對攻方來說,最有效的是增加ASM速度,當速度從2馬赫降低至1馬赫時
目標艦隊生存數從0.82上升到4.42,所需要集中第一艘的ASM數量從71上升到200
而命中率反而就相對的不是那麼重要,而攻擊協調度也是相對重要因素,
當ASM抵達時間分佈增加兩倍,命中數量就會剩一半,防守方生存數量增加三倍至2.53艘(看起來我們應該多生產雄三,然後多訓練各載台的協調度,至於導引頭抗干擾性
反而不太需要擔心,靠速度與數量破防就行了?)


對防禦方來說,系統接戰上限、攔截飛彈速度與命中率都同樣重要
反而是接戰距離提升兩倍對生存率、攔截率、中彈數幾乎沒差異,這結果絕對是
與現實不合,我猜是因為模型對攔截飛彈假設整個過程用同一平均速度
但實際上是一個加速過程,越遠開始接戰,加速時間越長,整個攔截過程平均速度越高
命中位置離艦隊越遠,若沒命中才有時間再攔截一次,但用平均速度無法模擬到這個部分

當然上面很多參數與實際參數一定與實際不合,如果某些細節未考慮到的話,
結果可能也會跟現實世界天差地遠,例如前面的例子,區域防空接戰距離竟然影響不大
但蒙地卡羅模擬的重點是能夠輕易的測試各參數的變化對結果的影響,
而不需要推導太過複雜數學模型

如果板友有想要測的參數可以跟我說
或是直接在這個google colab的notebook自己輸入參數測試
https://tinyurl.com/4jceh566



--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.248.45 (臺灣)
PTT 網址

AfterDark 03/05 14:21這模擬怎麼有種跑團的感覺

jth634 03/05 14:23推認真實證

Jerryc130 03/05 14:24這種防空戰的狀況好歹也要骰個對抗骰吧,只用一個

Jerryc130 03/05 14:2420面骰感覺就是不想去考慮海軍的防空系統

imruck 03/05 14:25所以模擬結果是平均60顆ASM打沉一艘嗎

imruck 03/05 14:28歷史上福克蘭海戰5顆沉2傷1的戰績 應該是英國太弱嗎

imruck 03/05 14:29不過當時也沒有盾艦 防禦力差很多 但差距真的有點大

subgn 03/05 14:29福克蘭應該是人類史上實戰面對ASM吧?

subgn 03/05 14:32以這個例子,可能是60發打沉一艘,但是不代表600發

subgn 03/05 14:33可以打沉10艘,規模放大或縮小,可能會讓天秤朝某

Sianan 03/05 14:33贖罪日應該才是第一次

saccharomyce03/05 14:33守方防空飛彈有設定數量嗎

subgn 03/05 14:33邊移動,或讓細微的參數差異放大影響結果

subgn 03/05 14:34@saccharomyce: 目前沒有設定數量

kira925 03/05 14:34有意思也有意義的模擬

saccharomyce03/05 14:34我猜簡化各艦距離和陣型的影響

kira925 03/05 14:35雖然我覺得要考慮接戰不是一維 這讓守方難度增加

SRNOB 03/05 14:35prompt S/R是吧

kira925 03/05 14:35不過參數太多也難以模擬與理解

SRNOB 03/05 14:35如果一快一慢的突防有辦法模擬嗎?

saccharomyce03/05 14:36既然設定攻方96發 應該要考慮被飽和的問題

有喔,這就是為何彈著時間集中程度這個變數越低,突防能力越高

kira925 03/05 14:37速度快慢還牽涉到攔截協調與攻方到達時間統合

kira925 03/05 14:37如果攻方協調不佳 兩個到達時間差很多 那速度沒差

kira925 03/05 14:39反過來說 看到超音速過度反應 被次音速貼地摸進來

utn875 03/05 14:39推啊!

kira925 03/05 14:39那守方也不合格 但是這個真的太複雜了

kira925 03/05 14:41協調好的複雜複雜威脅性遠大於單一押寶超音速ASM

imruck 03/05 14:42歷史上的ASM戰績 幾乎都是雷達沒在工作或沒看到

imruck 03/05 14:46歷史上很少攔截到ASM 唯一成功攔截ASM的例子是2016

imruck 03/05 14:47美軍梅森號DDG-87在葉門外海攔截了2顆

imruck 03/05 14:49我認為實際行動 各種人為機械因素 ASM應該還是上風

mudmud 03/05 14:53推龐德蘿莎

olozil 03/05 14:55看起來跟AI有八成像

godog 03/05 14:59梅森號攔截的那兩顆飛彈 型號是什麼?

godog 03/05 15:01查了一下 有些文章說型號是鷹擊83

wahaha99 03/05 15:02怎麼感覺是變量太多、無從估算模擬、就乾脆丟骰子XD

wahaha99 03/05 15:02畢竟攔截ASM這種事情,人類史上太少次了

wahaha99 03/05 15:02更遑論是沒實戰過的系統一堆 實戰還要考慮人員的

wahaha99 03/05 15:03訓練與反應

xc091832 03/05 15:07第一次防空飛彈成功接戰反艦飛彈,應該是42式在波灣

xc091832 03/05 15:07護航密蘇里岸轟時,成功擋下伊軍的冥河

xc091832 03/05 15:09梅森在葉門外海那次,他們當下也搞不清楚反艦飛彈到

xc091832 03/05 15:09底是被攔截還是被干擾,只確定自己沒被命中而已

xc091832 03/05 15:10以色列號稱還有人操.50擊落冥河的神蹟

Hatewoman 03/05 15:16幹好猛

SRNOB 03/05 15:19恩模擬是模擬不如一次實戰 股票市場&莫斯科號表示:

subgn 03/05 15:36金融市場的確也是常用蒙地卡羅來計算衍生性商品價格

subgn 03/05 15:37如果有認識金融業風險管理部上班的問他們就知道

※ 編輯: subgn (123.193.248.45 臺灣), 03/05/2023 15:43:39

subgn 03/05 15:44話說我本來是想先寫彈道飛彈攻擊跑道的模擬,但是

subgn 03/05 15:45卡在不知道怎麼把CEP轉換成隨機彈著座標(x,y)

subgn 03/05 15:47就我所知,CEP半的定義是柏松分佈下,50%機率的

subgn 03/05 15:48的彈著範圍,有數學高手知道怎麼寫出公式嗎?

SRNOB 03/05 15:48原po抱歉 不是嫌你模擬不好 我是要表達世事難預料xd

reich3 03/05 16:14設計神盾系統不就是要應付蘇聯的超飽和攻擊?

chyx741021 03/05 16:15沱江級第二批後續艦也是把雄三的數量加到8枚

Schottky 03/05 16:19先推,雖然我不是很懂蒙地卡羅 XD

Schottky 03/05 16:19CEP 分布是不是用極座標做?方位+半徑這樣

Schottky 03/05 16:19有必要的話再把極座標轉換成正交座標系

s3z15a3z15a 03/05 16:25攔截率蠻高的耶..我覺得情報因素要在加重一點

lc85301 03/05 16:44方位用平均的亂數,距離用 poisson 平均距離是 cep

lc85301 03/05 16:44這樣呢

f26724309 03/05 17:31專業推ㄤ

anarch 03/05 18:22認真研究推推

innominate 03/05 18:30要做模擬就要有對應的模型,你的模型事實上還是更多

innominate 03/05 18:30的骰子,說到底蒙地卡羅就是骰子,現在模型的問題在

innominate 03/05 18:30於你沒有防空艦防禦ASM的參數,這部分應該都還是機

innominate 03/05 18:30

確實蒙地卡羅的本質就是無腦的用更多的骰子來取代數學解析解,因為有時候你根本 推導不出解析解。例如2枚70%的攔截飛彈,整體命中率是多少,用國中數學也可以推導 出解析解1-(1-0.7)*(1-0.7)=0.91,像這種情形當然就不需要蒙地卡羅,但是一但 情境越來越複雜,例如你要算的是100發ASM不是1發,系統有同時接戰上限,條件 越加越多,就幾乎不可能推導出解析解,就算推出來也沒人敢保證是正確的。

kira925 03/05 18:45他只要有寫出數據就OK 至少不是大筆一揮全部沉

Muscovy 03/05 20:18模擬要有事實根據, 並不是說數學式寫多就比較準

Muscovy 03/05 20:18然後 CEP 應該也不是 Poisson dist.

Muscovy 03/05 20:19Poisson dist. 只有一個變數, 跟彈著點分佈事實不符

Muscovy 03/05 20:19Google: Circular_error_probable, 查 wiki.

Muscovy 03/05 20:20它說 CEP 的「基本款」是 bivariate normal dist.

Muscovy 03/05 20:20而且還是 circular 的哦. :D

Muscovy 03/05 20:21CSIS 用 20 面骰, 很可能因為「這最接近史實」.

CSIS在推敲參數時的確做足功課引用很多佐證,我裡面多數參數也是直接用他們的 例如攔截率、命中率、接戰距離等,但怎麼從這些參數直接跳到結論用20面骰 模擬5種中彈數,而且是每25枚ASM骰一次,100枚ASM就骰4次,這種線性簡化 不管數量增加產生的非線性突防加成是我比較無法接受的

subgn 03/05 21:05抱歉我記錯了,的確是bivariate normal dist

innominate 03/05 21:06應該說這些防禦跟進攻能力都是各國的機密

沒錯,所以我在猜美中台三方都做過蒙地卡羅模擬,但沒有公佈結果,應該就是 怕公布結果就會被反推真實參數

kwht 03/05 21:08認真推, 參數問題簡化是好的研究的第一步

subgn 03/05 21:16剛剛請教過chatGPT模擬cep的方法

subgn 03/05 21:16https://imgur.com/a/iXFQvUK

※ 編輯: subgn (123.193.248.45 臺灣), 03/05/2023 21:33:31

worse77 03/05 21:37認真推

ry3298 03/05 22:09

user1120 03/05 22:38有意思

ckbling 03/05 22:59推認真

Muscovy 03/05 23:10我覺得 CSIS 20 面骰想保留的是 uncertainty.

Muscovy 03/05 23:10一次跑太大量變成 statistical approach 的時候...

Muscovy 03/05 23:11就變成不像 war game, 因為會被大數法則支配.

Muscovy 03/05 23:12那時候就變成 chess game, 反而會失去決策的精髓.

Muscovy 03/05 23:13整部兵推注重的應該是如何面對各種可能發生的事件.

Muscovy 03/05 23:15像是 20 面骰擲出第七艦隊叛變, 要如何面對?

Muscovy 03/05 23:16蒙地卡羅追求統計上收斂的技巧, 就很難模擬意外.

Muscovy 03/05 23:17不過你這個還是很有趣... 忘記講. XDDD

yoyun10121 03/05 23:22最大的問題還是參數的精確性, 你是預設輸入的參數都

yoyun10121 03/05 23:23無限準確, 這種時候弄個高精細的複雜模型才有意義,

yoyun10121 03/05 23:25如果參數本身誤差就大的話, 那各種參數的誤差在複雜

yoyun10121 03/05 23:26模型傳遞累加的結果, 可能和20面骰根本差不了多少

wahaha99 03/06 00:18所以我猜這是它們兵推用20面骰的原因

EdwardW 03/06 00:22雖然看不懂數學模型,但有模擬有推

schula 03/06 01:11高手在民間

drm343 03/06 03:21美國戰爭學院有一份教怎麼設計 wargame 的文件,裡

drm343 03/06 03:22就有提到隨機性是設計上一定要有的,為的是讓參與者

drm343 03/06 03:22在「未預期狀況」下做出決策,這是為了讓模擬更接近

drm343 03/06 03:22現實。

driver0811 03/06 09:32garbage in garbage out,所以應該是學人惹事好拿一

driver0811 03/06 09:32點真實參數嗎?

wayne1120 03/06 21:55先推再看

jetzake 03/06 23:36這恐怕得回到更根本的問題才行...

jetzake 03/06 23:37比如對三艘船艦發射96枚飛彈這種事情到底能不能做到

jetzake 03/06 23:38我認為更大的可能是 這個機隊會先被攔截

jetzake 03/06 23:39根本沒有機會射出那麼多的飛彈才是現實會出現的戰況

trowa1233 03/08 22:25推實作精神