From 92b856b622e7c7a1fdddce9530023390026c0af2 Mon Sep 17 00:00:00 2001 From: huangfu <3045324663@qq.com> Date: Thu, 23 Apr 2026 12:48:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 - README.md | 143 - config/config.json | 16 - config/config.yaml | 21 - .env.example => final/.env.example | 2 +- final/.idea/.gitignore | 3 + final/.idea/227.iml | 12 + .../inspectionProfiles/Project_Default.xml | 38 + .../inspectionProfiles/profiles_settings.xml | 6 + final/.idea/misc.xml | 4 + final/.idea/modules.xml | 8 + final/1125暂时属性需求(1).xlsx | Bin 0 -> 11099 bytes final/README.md | 331 + final/config/config.json | 86 + final/config/config.yaml | 96 + final/data/cleaned_data_final.json | 7002 ++++++++++++++++ final/data/nodes.json | 7407 +++++++++++++++++ {data => final/data}/raw_data_sample.json | 0 final/data/triples.json | 60 + final/data/triplets.json | 58 + final/report/detailed_cleaning_report.json | 94 + final/report/triplet_cleaning_report.json | 20 + final/requirements.txt | 5 + final/results/evaluation_report.txt | 83 + final/results/filtered_triples.json | 3 + final/results/triples.csv | 1 + final/results/triples.xlsx | Bin 0 -> 5589 bytes .../export_triplets.cpython-313.pyc | Bin 0 -> 7416 bytes .../__pycache__/f_net1125.cpython-313.pyc | Bin 0 -> 8895 bytes .../__pycache__/f_net1125.cpython-38.pyc | Bin 0 -> 5757 bytes .../f_relation1125.cpython-313.pyc | Bin 0 -> 17105 bytes .../__pycache__/f_relation1125.cpython-38.pyc | Bin 0 -> 8775 bytes .../inspect_dm_tables.cpython-313.pyc | Bin 0 -> 12154 bytes .../__pycache__/run_all.cpython-313.pyc | Bin 0 -> 10062 bytes .../scripts/__pycache__/utils.cpython-313.pyc | Bin 0 -> 6058 bytes .../scripts/__pycache__/utils.cpython-38.pyc | Bin 0 -> 3885 bytes final/scripts/export_triplets.py | 113 + final/scripts/f_net1125.py | 112 + final/scripts/f_relation1125.py | 395 + final/scripts/inspect_dm_tables.py | 241 + final/scripts/run_all.py | 167 + final/scripts/utils.py | 110 + final/src/__init__.py | 0 .../src/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 144 bytes .../attribute_schema.cpython-313.pyc | Bin 0 -> 31410 bytes final/src/__pycache__/cleaner.cpython-313.pyc | Bin 0 -> 16421 bytes final/src/__pycache__/cleaner.cpython-38.pyc | Bin 0 -> 6803 bytes .../__pycache__/data_loader.cpython-313.pyc | Bin 0 -> 32641 bytes .../__pycache__/data_loader.cpython-38.pyc | Bin 0 -> 3359 bytes .../formalization_pipeline.cpython-313.pyc | Bin 0 -> 31577 bytes .../src/__pycache__/main_227.cpython-313.pyc | Bin 0 -> 32683 bytes .../triplet_cleaner.cpython-313.pyc | Bin 0 -> 5931 bytes final/src/attribute_schema.py | 701 ++ {src => final/src}/cleaner.py | 77 +- final/src/data_loader.py | 614 ++ final/src/main_227.py | 666 ++ final/src/triplet_cleaner.py | 113 + requirements.txt | 5 - scripts/inspect_dm_tables.py | 102 - src/data_loader.py | 101 - 60 files changed, 18623 insertions(+), 398 deletions(-) delete mode 100644 .gitignore delete mode 100644 README.md delete mode 100644 config/config.json delete mode 100644 config/config.yaml rename .env.example => final/.env.example (88%) create mode 100644 final/.idea/.gitignore create mode 100644 final/.idea/227.iml create mode 100644 final/.idea/inspectionProfiles/Project_Default.xml create mode 100644 final/.idea/inspectionProfiles/profiles_settings.xml create mode 100644 final/.idea/misc.xml create mode 100644 final/.idea/modules.xml create mode 100644 final/1125暂时属性需求(1).xlsx create mode 100644 final/README.md create mode 100644 final/config/config.json create mode 100644 final/config/config.yaml create mode 100644 final/data/cleaned_data_final.json create mode 100644 final/data/nodes.json rename {data => final/data}/raw_data_sample.json (100%) create mode 100644 final/data/triples.json create mode 100644 final/data/triplets.json create mode 100644 final/report/detailed_cleaning_report.json create mode 100644 final/report/triplet_cleaning_report.json create mode 100644 final/requirements.txt create mode 100644 final/results/evaluation_report.txt create mode 100644 final/results/filtered_triples.json create mode 100644 final/results/triples.csv create mode 100644 final/results/triples.xlsx create mode 100644 final/scripts/__pycache__/export_triplets.cpython-313.pyc create mode 100644 final/scripts/__pycache__/f_net1125.cpython-313.pyc create mode 100644 final/scripts/__pycache__/f_net1125.cpython-38.pyc create mode 100644 final/scripts/__pycache__/f_relation1125.cpython-313.pyc create mode 100644 final/scripts/__pycache__/f_relation1125.cpython-38.pyc create mode 100644 final/scripts/__pycache__/inspect_dm_tables.cpython-313.pyc create mode 100644 final/scripts/__pycache__/run_all.cpython-313.pyc create mode 100644 final/scripts/__pycache__/utils.cpython-313.pyc create mode 100644 final/scripts/__pycache__/utils.cpython-38.pyc create mode 100644 final/scripts/export_triplets.py create mode 100644 final/scripts/f_net1125.py create mode 100644 final/scripts/f_relation1125.py create mode 100644 final/scripts/inspect_dm_tables.py create mode 100644 final/scripts/run_all.py create mode 100644 final/scripts/utils.py create mode 100644 final/src/__init__.py create mode 100644 final/src/__pycache__/__init__.cpython-313.pyc create mode 100644 final/src/__pycache__/attribute_schema.cpython-313.pyc create mode 100644 final/src/__pycache__/cleaner.cpython-313.pyc create mode 100644 final/src/__pycache__/cleaner.cpython-38.pyc create mode 100644 final/src/__pycache__/data_loader.cpython-313.pyc create mode 100644 final/src/__pycache__/data_loader.cpython-38.pyc create mode 100644 final/src/__pycache__/formalization_pipeline.cpython-313.pyc create mode 100644 final/src/__pycache__/main_227.cpython-313.pyc create mode 100644 final/src/__pycache__/triplet_cleaner.cpython-313.pyc create mode 100644 final/src/attribute_schema.py rename {src => final/src}/cleaner.py (70%) create mode 100644 final/src/data_loader.py create mode 100644 final/src/main_227.py create mode 100644 final/src/triplet_cleaner.py delete mode 100644 requirements.txt delete mode 100644 scripts/inspect_dm_tables.py delete mode 100644 src/data_loader.py diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 63856a2..0000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.env -*.pyc -__pycache__/ -.venv/ -venv/ diff --git a/README.md b/README.md deleted file mode 100644 index af4419a..0000000 --- a/README.md +++ /dev/null @@ -1,143 +0,0 @@ -# 作战体系数据清洗与标准化系统 - -## 项目简介 -本项目用于处理异质作战体系节点的原始JSON数据。系统能够自动识别并修复数据中的噪声、缺失值、异常值,并将关键效能指标标准化至 [0, 1] 区间,最终输出符合建模要求的高质量数据集。 - -## 目录结构 -``` -project/ -├── config/ -│ ├── config.yaml # 配置文件(推荐,支持注释) -│ └── config.json # 配置文件备选 -├── data/ -│ ├── raw_data_sample.json # 原始输入数据(JSON 模式) -│ └── cleaned_data_final.json # 清洗后的输出数据 -├── src/ -│ ├── cleaner.py # 清洗运行程序 -│ └── data_loader.py # 数据加载(JSON/达梦) -├── report/ -│ └── detailed_cleaning_report.json # 详细清洗报告 -├── scripts/ -│ └── inspect_dm_tables.py # 达梦表结构查看(部署时用) -├── .env.example # 环境变量示例(含 DM_PASSWORD) -└── README.md # 项目说明文档 -``` - -## 清洗流程说明 - -程序按以下顺序依次执行五步清洗操作: - -### 1. 去重 (clean_duplicates) -- **依据**:按 `TARGET_ID` 去重,同一目标只保留一条记录 -- **策略**:若存在 `CREATED_TIME` 字段,按创建时间倒序排序后保留最新一条;否则保留第一条 -- **目的**:消除重复录入的目标节点 - -### 2. 缺失值填充 (handle_missing_values) -- **范围**:对所有数值型列(除 ID 外)进行处理 -- **策略**: - - 先按 `ROLE_ID` 分组,用同类型单位的均值填充该组内缺失值 - - 若分组后仍有缺失(如该组仅有一条记录),用全列均值兜底填充 -- **目的**:保证数值字段完整,便于后续建模 - -### 3. 异常值纠正 (correct_outliers) -- **涉及字段**:`TARGET_RECOGNITION_CAPABILITY`、`STRIKE_ACCURACY`、`ANTI_JAMMING_CAPABILITY`、`ENVIRONMENT_ADAPTABILITY`、`MOBILITY` -- **规则**: - - 若值 < 0:取绝对值 - - 若值 > 1:截断为 1.0 -- **目的**:将效能指标统一限制在 [0, 1] 区间内 - -### 4. 噪声平滑 (apply_kalman_filter) -- **对象**:`COMMUNICATION_RANGE`(通信范围)字段 -- **方法**:使用窗口大小为 3 的移动平均进行平滑(与卡尔曼滤波效果类似的时序平滑) -- **结果**:数值保留 2 位小数 -- **目的**:削弱测量噪声对连续数值的影响 - -### 5. 标准化与输出 -- 坐标精度统一为 2 位小数 -- 时间戳统一为 ISO-8601 格式 -- 输出清洗后 JSON 及详细报告(含各步骤的统计与示例) - -## 数据源配置 - -程序支持两种数据源,通过 `config/config.yaml` 或 `config/config.json` 中的 `source` 切换: - -| source | 适用场景 | 说明 | -|--------|--------------|------| -| `json` | 开发、无数据库 | 从 `data/raw_data_sample.json` 读取 | -| `db` | 生产、有达梦库 | 从达梦数据库指定表读取 | - -### 开发阶段(当前设备无达梦) - -保持 `source: json`,直接使用本地 JSON 文件即可。 - -### 生产阶段(部署到有达梦的设备) - -`OBJECTIVE_INSTANCE` 表结构与 `raw_data_sample.json` 一致,配置中已设为 `db.table: OBJECTIVE_INSTANCE`,直接查询即可。 - -1. **修改配置**:`source: db`,端口 `5080`、表 `OBJECTIVE_INSTANCE` 已预设; -2. **设置密码**:`export DM_PASSWORD=你的密码`; -3. **运行清洗**:`python src/cleaner.py`。 - -若需自定义查询(如加 WHERE 条件),可清空 `table`,在 `db.query` 中写完整 SQL。 - -### 密码注入与安全说明 - -**⚠️ 安全原则:切勿将达梦密码写入配置文件或源代码。** - -达梦模式通过环境变量 `DM_PASSWORD` 注入密码,支持以下方式: - -| 方式 | 说明 | -|------|------| -| **终端** | `export DM_PASSWORD=你的密码`(Linux/Mac)或 `set DM_PASSWORD=你的密码`(Windows CMD) | -| **PyCharm** | Run → Edit Configurations → Environment variables → 添加 `DM_PASSWORD=你的密码` | -| **.env 文件** | 复制 `.env.example` 为 `.env`,填入 `DM_PASSWORD=你的密码`,并用 `python-dotenv` 加载(需自行集成) | - -`inspect_dm_tables.py` 支持两种密码来源:优先环境变量 `DM_PASSWORD`,其次脚本内 `LOCAL_PASSWORD`。若使用 `LOCAL_PASSWORD`,务必执行 `git update-index --assume-unchanged scripts/inspect_dm_tables.py` 避免误提交。 - -配置文件(`config.yaml` / `config.json`)中仅配置 `host`、`port`、`user`、`schema`、`table` 等,**不包含 password**。本项目源代码中不包含任何硬编码密码。 - -## 快速开始 - -### 1. 环境依赖 -```bash -pip install -r requirements.txt -``` - -核心依赖:`numpy`、`pandas`、`PyYAML`。达梦模式需额外安装 `dmPython`。 - -### 2. 运行清洗 -在项目根目录下执行: - -```bash -python src/cleaner.py -``` - -默认从 JSON 读取,处理后生成: -- `data/cleaned_data_final.json`(清洗后的数据) -- `report/detailed_cleaning_report.json`(详细清洗报告) - -## 输出结果示例 - -**清洗前 (Raw):** -```json -{ - "MOBILITY": -0.5, - "STRIKE_ACCURACY": 1.5, - "COMMUNICATION_RANGE": 102.8116 -} -``` - -**清洗后 (Cleaned):** -```json -{ - "MOBILITY": 0.5, - "STRIKE_ACCURACY": 1.0, - "COMMUNICATION_RANGE": 102.81 -} -``` - -## 清洗报告说明 - -`detailed_cleaning_report.json` 中包含: -- **summary**:总记录数、最终记录数、去重数量 -- **details**:各字段缺失值填充数量、异常值修正数量及示例、噪声平滑处理记录、标准化说明 diff --git a/config/config.json b/config/config.json deleted file mode 100644 index be492a7..0000000 --- a/config/config.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "source": "json", - "json": { - "input_file": "data/raw_data_sample.json", - "output_file": "data/cleaned_data_final.json", - "report_file": "report/detailed_cleaning_report.json" - }, - "db": { - "host": "127.0.0.1", - "port": 5080, - "user": "SYSDBA", - "schema": "SYSDBA", - "table": "OBJECTIVE_INSTANCE", - "query": null - } -} diff --git a/config/config.yaml b/config/config.yaml deleted file mode 100644 index 1656374..0000000 --- a/config/config.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# 数据清洗系统配置文件 -# 通过 source 切换:json(开发) / db(生产-达梦) - -source: json # 开发用 json;部署达梦时改为 db(或直接改 config.json) - -# JSON 文件模式(source=json 时生效) -json: - input_file: data/raw_data_sample.json - output_file: data/cleaned_data_final.json - report_file: report/detailed_cleaning_report.json - -# 达梦数据库模式(source=db 时生效) -# 密码通过环境变量 DM_PASSWORD 传入,切勿写入配置文件 -db: - host: 127.0.0.1 - port: 5080 - user: SYSDBA - schema: SYSDBA - # OBJECTIVE_INSTANCE 表结构与 raw_data_sample.json 一致,直接查询即可 - table: OBJECTIVE_INSTANCE - query: null diff --git a/.env.example b/final/.env.example similarity index 88% rename from .env.example rename to final/.env.example index 5798432..be7d6d7 100644 --- a/.env.example +++ b/final/.env.example @@ -1,4 +1,4 @@ # 达梦数据库密码(仅 source=db 时需要) # 复制为 .env 后填入真实密码,或将下面一行加入 ~/.bashrc 等 # export DM_PASSWORD=你的密码 -DM_PASSWORD= +DM_PASSWORD=Dm508508 diff --git a/final/.idea/.gitignore b/final/.idea/.gitignore new file mode 100644 index 0000000..eaf91e2 --- /dev/null +++ b/final/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/final/.idea/227.iml b/final/.idea/227.iml new file mode 100644 index 0000000..069558b --- /dev/null +++ b/final/.idea/227.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/final/.idea/inspectionProfiles/Project_Default.xml b/final/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..046067d --- /dev/null +++ b/final/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,38 @@ + + + + \ No newline at end of file diff --git a/final/.idea/inspectionProfiles/profiles_settings.xml b/final/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/final/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/final/.idea/misc.xml b/final/.idea/misc.xml new file mode 100644 index 0000000..b1e0d2b --- /dev/null +++ b/final/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/final/.idea/modules.xml b/final/.idea/modules.xml new file mode 100644 index 0000000..d2fbae1 --- /dev/null +++ b/final/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/final/1125暂时属性需求(1).xlsx b/final/1125暂时属性需求(1).xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9872bdf0a8636df9f7d2bfcbc00ca2c7a1430971 GIT binary patch literal 11099 zcmeHt1y@{4)^_7AjazVccMt9o2=49{++BjZJ0!RT*Wey3xVuAe&DU4vyZ2`1{RK0p z*E)52bv=7^o!ZadwM9u50uloN4S)pz03-mTvuq1JFaRJ95&%F4z=CVPwYPIIwR6#b z=iy-Ltjp+bYeQTB2~M2{00+(g-}PVo1}c(96?&Ob#qXq^-|jHTtkem^a-0SZqR}b~ zcK0O?lo@O1SX%zfiFiU4&BwIjszsYz@nXFkx2UtTZ43+_Xj4Iq3K;5E)5GUt>K{Cz z=)%TLaMIE|&%?kMX2I3hk2cE$q&YVAs<4Y~ipW&pSzuxb`fq114XOjz2U-xzv_A0+ zE%$6FsILLJM?TM>Zcm}lT3OO~>0NCzNJB=EdaYo&>J=-IXsFT{skAsfrpk6YQ#Z5C z85o1FF^9%=Ag@lWL$`Hu5z4dU)qRejb3~uUVWn2L?`H5$2V!siH$Q+z#+Az-zXl;5mV&h zq7C#d9U5-t?p8cCCh)c^nS$AY6uu!k7bQfjuS7bhrWqT_mx;?7y64ggF@Dj3Mo66=^VysOj2gGGqAUHvIH|R;cX>_LnIQMy;IYRD1IN%-*trLFb=-%Ko|JQsvLVAn0Mw{t**Z*i~*>%T9UA=6Ujhp95O>Ns2x<$NQ&5}}ng zNQl8BAFs3Cq*B|4x3U)hZIPy#>H-xpTBr)Lq`nwWnfmkYhz_8ED^Bn#*B~}75%pxk z_=2DOh~|~p1{tMdb|<8Q5~gAp_;JHef{eIQj}8v`FiiCS2PL*VwxWi8-2)gk>f?{`TzTXp0ceNZikM z*gDnGCw93~aoNW&OkzXu_z)=1gw06jeggpNG82rYXl3MfeWo>$8lhSkSON0pmGd#{ za0a-}rVyE-yIe=XLU#pGt|6(DX@bGC+1Q%QFvBFMQD*&t8U2lq8RQ`*_^PM%R{5%8 zBq8P{cQ#yFunL?7{L}Xlcd6D-LK#!Hqr5i9^Y43_9@G5zTwK@1v`1_sb&S-W+<8}S z2kZ;jF}ZP7iAoUH*PI;n!HfeTZ04%GN9o0>K4L)>Qs`9KD&Tl1Qr{$_eY)wGxjlL{ zDW?iZuz3<3%G>L!%CC~0rgD6)H2C0HNU(f^PUR~H&KGn(#%KFT_>R(_Fy9?(Gp&^y zMKo2xcs+Z%+l{UD;);0$`+>jVp*C6Yf#{|R+l!TuB*nBp>7hcSHZ*9TOn*EbS_BCh zY`xS3J9vP5$lMOqWVU#U)u~h#aj5_}F3LLz7ZYQ0YZx~TYUM51Ag3hZzL%`znkoA32HK5eV6#&=mJ2>Vcv z^YKB~I}YS62=tpCx=)d4ke=u^=X_B1<5%Mlutukqgn^P!=x8TL$K|I8$QjP)ErJO{ z^f?&Zd-v27xM77Qq+-`C)1mBE6U-l2t(?ET83CEz(S{xW$6(cy%D{%ECgKblv)!L9 zZ0U<000N13x8T( zXA4tP7iXs52bSMVa8}}S%rY@*=sDfZ8`L`%L2^r@eoeJ#_0_hr)y8?qSYr%k#<iBxIx$`l9fY*6^SL~7AZwZ!c=k$ZSvxNf@V`B3}LOhfRskhTw(E zc@a6Xo~pu$tMP!T-j2@s#$eNV(TVCf@>PCv9@ZEu<9bPF?{#XoAf>rCpVlb<^TB?F zPV`_B1NJ50CBea=`myio21SXOKTldhnmgCpxY2ME9l1E%#Zg4qX>*sb(_aNs*UH|KkJrx{O|7$-xFs{RxUTwgkV`Db?-+3%hG zYxFdc{0w#8q7e%`_SffEay3Lr%?Qd7mkv2UljO|YsB1rc>T_3~NNgG(FozqcH_4zn z#5be={y_Ab=>To@&!0t_+IGv#sO^#Y5VIsSyUGjDWpk3%KpYWtjLN75`D*=$qCy`; zB;cbp)!Rfqty71S)rXtiT~>bm9F(@ZnXd7tPRH@R=lzE}kLUUM#>IBM+vqNP&cUwz z(Zl(>)FvWy)&$0C`@!57n%DgrJ_Xq>dFvUXyYUvD6G3FRw$nkwCIK@Edt3$9A=Y*i z#1x<)?s9G9q)IzO@iA5kYvmg{qT}|I=`t1iLe*mOfugw^wlg)FluLhExQ);LDpe>( z1?QQKi+UgC0Tll8Zq+$+1~jqv4#t^jDTkf(YMxpQ6J=mB!uJ(s2LA3F+bOriw*mTU z83#t@NJ`+rGG+QOvL0V)qnW1QlS}5dD)90knUisd-+6vgwJeCr<`9NMr9E`}uClUX zx8)LBZjzxM)obOC)@@?s&po7?Er+gqQUNC8A7@FZt?h-lL?}#Ld zYpCKVmIK`~5dE+-jc5)rLYxH5PtE9o*l2FK*#QRN-|wo96f2J_Rscr`7&W%U#BxfU z^7z=MKu};HjVvBu5OZaw693q-<%F4Sfh`O{9q+WtsZp|XWlipG3>at`22H@_mhWA1 zOxZpI(ar^nYqAl}kA!n|x@z>^)xfCS>n#Z(sISwv|T|sypT<4Z$%E-l1||gYX2%(5B;GI zM$UVPU<%^uYFxkoBAAKd%Llz}`A}w9)8Gzvf_MR?Lyk2_xF98oW&;#n2e23>_i>Ej z_eBxSI)X-tRIH#i%V2b}s)&Ks92^N+^Wg~;w=XBngWUWsynSE@=HKY2^!h&u?#1N822HoVetg2GmIg?>|Yn_CS?|Ok-IMF?N#nQ-QB_(A$>;<%J z0$_u3irrK12Ml;@4LQGb=hBu%j_%rHR<`P0hZhngqe?33^wF#wYi&4ls4cEbXk{;L zW0g5&F99XZjrwR_gaH**CA66zwB~qxta-9q_0hKu=qR=@%-$oc)RvTC#NK<&9a;jL z;wH;xX22cg)C{V>inl;9YOAWT>MAE6RSDYVm#M6ZhZlC42ov}$E=_bfyn>v?pXS3Q zNyP3eGlp0-+5>>15iTH{xL+ufk@f~2Lk2TA^>5768oC@w+^CWfX-M8q zdl1tqq~C>&Ejb~O$f8+>2D}Nvw*^Z+^;K9j7Ff{$RYmJdGSKiO`gXoqlnv(_ihT?* zljgv}lfcteN9q_4;65v?g^+gxfTVaLjfa{-SkhQ3p>&MpXZz`}>mYuZaxfHQZ!9_d zF03U388R)XOl6CXqBR2(eJ2+{j4>W8WyAO>m@`oH?5h9V&#)=`k@=CGK+o6}-q=&{ zyG%K~k9?=PaU8SnJvWMBJA>1b+p8&2n_*Ucl+dPMf>1JT)Z2NXPSv!t8BtSvl41v+ zEYB{XM|VC=sM0t>n3cAB#7q9WwbE6t-;MIG2?Ti|fBIlhYQZ1xx4ho(9@@pi)Yg>g z_xtb8`9yQlewh=a6J_Bi@xhr^BgG=}5k{j8m33mH#R{^(G^cHCzS!HML_F~TT{m3j zJbYK&nq}l(fAD3?)E6#>#Ee&-2gs90tov^PV@~N%qQ&erOgx#86JzifQ}0(oy^K!F+xyC)_dcO^xCM;Zbuf zYE*|+vSJ?YrL|3fsynB#W+3E>+0_yI+x-o${JGZskU7Zs*$*m7{>yyzxakJw@b_eEBC4Z_VjKkXU5ja zy!o@6An@{lAF@&BzV+*$aNWoKjH8^n;)Ecogg z&jyMc|pw@&an(;hmc4wx(lUsKlMy0B zXl`%L5(#9XS3>M$sDeS|e&g;H@(F3a*9?}(B#()6qvuC_&kgxRN}z^kCngp2MH)M#sMfEpwE50D8O)qZoYLF*1ZKw^sEd zL!p;cIB?#Wbr{E-ZIho|0R?C+C1GNNp+9o)9I z^d+qd4Lu#s$?D1@7-uHl#}%)iT2q53k^OtE{)H;F^3ICsS7;%#J$%x05)|sy^fMSp z{KHNi*t4LDqofh=c*T@-id2}i^z-e=2~>4jh%);lq8&T(MchV$s3UhJfIjjH`2GrR*dp6^xhy$GYM8 za+7uS^(KoCVZgAmI%AF!NB^SI6>)SYP5w&2s*>`qu*Kbhe8iP$p`rIxbmyQ(^Q?{Y zY)-+o>UPi?eEQZ_$|5_R91ja^`~#WE<_GfGp{ii<<*x-4tJSJsCblRsgl!WsHCTCS zz8y6O94bxUURsNUB4;>+NTe-9h_f)S6fB&@1SV{w$_wo(J^_E>;q z;5|dUeRN2t&vR|oIU?l^gQ$-f`hoqbn`9dAI3>wH0Z}DJ^*$&VHj5{T{LOo0KUE}l zHN1l6xg%m&B8C>up^-reNeg-Fz-nrO4)!IYt~YPR)ZTjV6-41+vPClP@#sVx zgvPWk_X)Sr4IqN8B5%4gQZ3x&d|=8gGu>gIqTiQ$tF}{Ni9LhDHEdlmB0X!6EZeli zd7*N=WL+5~`egzwb*$B%nZ#mtWCGDD;j$4?cAQa5-s*ib@i$W7S@^P9OpU~ruDNeb zo5mNXK#giTwaxO_H;;F)oW77-Q(=kg6qq{2Xq}uUuvk71i;j%=7m@r}{dmBtEK>>I zGjyhdM`eLrgq`Ef_3{QPxi3l%k+%Ft)QuEEQ&c=Z68&bMp6tf8>x{b87L zz0irINV$Ob5wAJ?i5q@A5wcct4VE~j&^7ssdfW8%@lDnGNh7rHon`IEfcX6%%6;Hp z%iT|ZBK)UJM3s-fR4^!^w}=P;ApPOAoLxL@Or3v=C1>A{$1HQAc48m!p|)G!7>|BI zk`^J*w(y6fuF)nIm_{>2-;EWX(&iDj>$sNo91$2QR#YvDjVGa4gs)p(wLw1Aqj%~{ zf7shc9~@3pcW{ya(3>RZ=ngaxGtHNwbfbBFpuO9};Rqc{aG4zq?v{i z_BdK82}baZgk<6SlO>?bAf=tqq#;igyxpJn!|wc+RWX4diTEr{psK1~SbB&@)ep2| zv)Ai0LwuZ5$0LI3s9FP%kG{#5=p26?$Dyd&1JjB=GZ`0a!e+%0sL<%0{7Aoeb zvxE{!5&nr=W{QkITU{N)L9Pa_)_T(H?3T4=>4aG5UbMj%rdg-f3TcH572V@ZHG-x< z2ch}hrm0D>(CU7b);Q0nzR1L+lzg*MG-yBrof_#xzBZ4750-iPCV0(OHEaKPoN}T0 z@&3E~`R*Doa$=B+J*K}_DNyP%}>?Os#pBquh-{Z1d#m4pmv|98-JD`^;Mu! ze^Zwt6k{B_V(oW8T4GwRfyBETjS*iRsI#`ItQTOlhI`sIQ`XKtSuc45)|n|B;=psW z6h6x#w1*nj{FIk(Ehw_caadlDC8zauKw%8zXETUU=E9rnHH z9p(Aw`s@xoU(w&N%U+&m&Y?uzP{y`<)MR+gz(se6w`+M_UN2g8Okj&(@O!akyzMfA z|6t4($B@N{k6d4N7IfO9pJPfxXv=$VHw{=YK8dox;*aj_9;FgFkT*9u8#hl}7~N*p znk*@o&l)5qhCdJNvS+U2GWWL>Z=qgo!7cFIDprOZ=RV_WB?seGB|gbk!T6 zIk*SajW3V^0E|EBYGLSPYNG1mWNByqJ8P5PYun>VV)$0i{;XLlRd))~{cLGsNSaEm zQbzs-L%VEN%c36fR;EVQ4V$Wc6JbwosZh5dA%x8iwX7R~!!RIqVd1=<(r}Vt; zAR1nH^2g5oqp$aK6E{%bgZ>EU8qcWFC?J68L)+ixvjL(}rjr()Bz z$+BIxCfVC&-PUB{Bnc>6stQ}?CM4riJ2OlyrqIa`qcB>e0?!<%o0_v`{$qI!$cM=wT14#UF~;UuQYXHNYx#^_tw|;Ma0Lg^k;JitDz# zbNde4q>#&Kg!OKeCK~1OVTr=Vjy4+SRhrrA7@RZqgJNytw1rC7PfkGz`7za<0tbPZ z#cy3|a#4*FuThnVd=ll3NrIx8A1a&I?n+_Ga=t69yCP|tAvS(>oe5NE@r+HeW^RdD z+dVxP!_nqV8}IR!I6NuX(dOf2+r#=G(>D8ZJ)pTtJdlDciD6oP;UGW0JU9_tTRKXv zvpq6GS)FCF;$@#U8RM=%1#C%d%;` zvkwWY%lmB;O0m*st3!H>xhHS5tjw+()<+9f0w4EwaWG#}NYjt{f?QQC=%m}f+Ti(W zk*Tqz9R_7wOA(|n;FzMqBNXspd{QFfzm?bN$z-S?ullUfDu9-)WZ3D;0n z2*cp4`utUx5J zW!A^6@0m|EM$5CaV8^FA7eB~WWb;JfZ2KL*-05*WnB10z&7US|l8?p>K-C&@g)ODRzPjI`VmFSah+CB;5`FGA&s z7=DnO`|{)6`B@|L&}epglax_I?pW2tH+u~Sc`Mg*!GL^s#ID|X%pQor}Psx zYk1OL{7u>e6O78848B`13aXC`BNC(}QBZ2nhS0l5(G1bI-82}bap)C$QDLC35{ zpoTQ9?<{6=95r}t{mJ}yQdiRDxLdRp|6@nwtRke(!t|%j8z4tt2<1l_tw+v9&;_inhKp$gS0q^xBE`U(E0MqPBuY-V%$%lkm z(v%|&^lL}{Sm%fAGBWhJXnDSKhU6@b!JP^DEIT=<)-vN$x(kc9Z(we!8;b6n(vj&Nv=^8^>&BYohigscjASzaXs_$*D&xIO*wC8(MUMyPKz&^a;9MjY{&?iW)OUo|ZgoO>!B?`-+I;`K; zyrjyO_wqtTNZLm?s7wW?lz^E|c01LYo1>#0^iee0_q4}vFl=BVvPZYcYQqJE#UN0+hKw@r)+wJGYb;5ks3MYJ5pJmTl) zEAaes`E%dCN1DjWhuiMW;9gZW@;V}sj>076Ls-@XZyDU{bMh`3XlMS=XE1OE(4q4`w=w=}|Nb@pho(j) z*?$W7XT#OMfWM8YAd>v8{pwfXuT3a_LEAy;*I!yveg*%t^!^tV0Dyr19sGY3;(wL% zYd!WaNt~ci`v0oV{wn3yobg{$7C1 截断为 1 | +| **噪声平滑** | 对 `COMMUNICATION_RANGE` 做 3 点移动平均 | +| **1125 Schema 转换** | 见下文字段映射,输出仅含规范字段 | +| **关系计算前净化** | 见下文「关系计算前净化」 | + +### 关系计算前净化(sanitize_node_for_relation_calc) + +下游 `f_relation1125` 及 `utils.py` 会对节点属性做数值运算(如欧氏距离、安全等级差、历史成功率平均),若字段为 `None` 会触发 `NoneType` 运算错误。因此在写入 `nodes.json` 前,对每条节点做最终净化,确保参与运算的字段**永不为 `None`**: + +| 净化项 | 处理方式 | +|--------|----------| +| `spatial.position` | 必须为 `[float, float]`,含 `None`/`NaN` 的元素替换为 `0.0` | +| `spatial.effective_radius` | 若为 `None`,设为 `1.0` | +| `temporal.*` | `time_window` 缺省 `24.0`,其余缺省 `1.0` | +| `security_level` | 若为 `None` 或越界,设为 `3`(1–5 范围) | +| `history_success` | 若为 `None`,设为 `0.8`(0–1 范围) | + +该步骤在 `attribute_schema.sanitize_node_for_relation_calc()` 中实现,由 `cleaner` 在写入前对每个节点调用。 + +### 输出字段说明 + +**nodes.json 完全对齐 xlsx 规范**,不保留原始其他字段。每条记录仅包含: + +| 字段 | 类型 | 说明 | +|------|------|------| +| `TARGET_ID` | 字符串 | 节点唯一标识(三元组 head/tail 引用所需) | +| `function_vector` | 字典 | 7 维功能能力 [0,1] | +| `spatial` | 字典 | 空间位置与有效半径 | +| `temporal` | 字典 | 时间相关属性 | +| `performance` | 字典 | 核心性能、生存能力、MTBF | +| `protocol_list` | 列表 | 支持协议(字符串列表) | +| `format_list` | 列表 | 支持格式(字符串列表) | +| `interface_list` | 列表 | 支持接口(字符串列表) | +| `security_level` | 整数 | 安全等级 [1,5],缺省 3(关系计算用) | +| `org_unit` | 字符串/null | 组织隶属 | +| `nation` | 字符串/null | 国家代码 | +| `history_success` | 浮点数 | 历史成功率 [0,1],缺省 0.8(关系计算用) | + +**nodes.json 整体结构**:`{ "nodes": { "TARGET_ID": {...}, ... }, "global_params": { "mtbf_max": number } }`,兼容 main_227 / f_relation1125 关系计算。 + +**单条节点记录示例:** + +```json +{ + "TARGET_ID": "FS-俄-情报侦-132", + "function_vector": { + "f_IC": 0.9273, "f_IA": 0.7896, "f_CS": 0.2584, "f_IT": 0.5187, + "f_DP": 0.9148, "f_CPS": 0.5619, "f_CC": 0.7822 + }, + "spatial": { "position": [79.36, 52.11], "effective_radius": 94.96 }, + "temporal": { "response_time": 23.3891, "cycle_time": 3.7, "data_age": 1.48, "time_window": 3.7 }, + "performance": { "core_performance": 0.9831, "survivability": 0.4094, "mtbf": 0.7202 }, + "protocol_list": [], "format_list": [], "interface_list": [], + "security_level": 3, "org_unit": "师级", "nation": "俄", "history_success": 0.8 +} +``` + +--- + +## 属性对齐与字段转换(1125 规范) + +依据 `1125暂时属性需求(1).xlsx`,对每条记录做 **内容与格式的双重对齐**: + +- **格式校验**:各字段类型与结构(dict/list/scalar) +- **内容校验**:取值范围(如 [0,1]、[1,5]) +- **转换**:原始扁平字段 → 规范 schema + +清洗报告中 `details.attribute_alignment` 记录格式/内容错误统计及示例。 + +### 原始字段 → 目标 Schema 映射 + +#### function_vector(功能向量) + +每个维度取 [0,1] 浮点数,从原始能力字段推导: + +| 目标维度 | 原始字段(按优先级) | 转换方式 | +|----------|----------------------|----------| +| f_IC 情报收集 | DETECTION_ACCURACY, TARGET_RECOGNITION_CAPABILITY | 取第一个有效值,clamp 到 [0,1] | +| f_IA 信息分析 | INFORMATION_FUSION_CAPABILITY, DETECTION_ACCURACY | 同上 | +| f_CS 协同作战 | MOBILITY, ENVIRONMENT_ADAPTABILITY | 同上 | +| f_IT 信息传输 | ANTI_JAMMING_CAPABILITY | 同上 | +| f_DP 数据处理 | PROCESSING_CAPACITY, INFORMATION_FUSION_CAPABILITY | **固定参考值**:见下表 | +| f_CPS 指挥控制 | DECISION_RESPONSE_TIME | **固定参考值**:见下表 | +| f_CC 综合保障 | SUPPORT_CAPACITY, LOAD_CAPACITY | **固定参考值**:见下表 | + +**固定参考值转换公式**(原始值不在 [0,1] 时使用): + +| 维度 | 公式 | 参数说明 | +|------|------|----------| +| **f_CPS** | `1 / (1 + t/30)` | t = 响应时间(秒),响应越快能力越高 | +| **f_DP** | `log10(1+PC) / log10(10001)` | PC = PROCESSING_CAPACITY;无则用 INFORMATION_FUSION_CAPABILITY clamp [0,1] | +| **f_CC** | `0.6×support_norm + 0.4×load_norm` | support_norm = log10(1+SUPPORT)/log10(10001),load_norm = LOAD/100;仅一个有时取该值 | + +#### spatial(空间属性) + +| 目标字段 | 原始字段(按优先级) | 转换 | +|----------|----------------------|------| +| position | `position`(列表 [x,y])、`X`/`x`+`Y`/`y`、`POSITION_X`/`POSITION_Y`、`LONGITUDE`/`LATITUDE` | `[round(x,2), round(y,2)]`,`None`/`NaN` 替为 `0.0`,兼容达梦多种列名 | +| effective_radius | COMMUNICATION_RANGE | 原值保留 4 位小数,缺省 `1.0` | + +#### temporal(时间属性) + +| 目标字段 | 原始字段 | 转换 | +|----------|----------|------| +| response_time | DECISION_RESPONSE_TIME | 原值 | +| cycle_time | REFRESH_RATE | 原值 | +| data_age | TRANSMISSION_DELAY | 原值(近似数据新鲜度) | +| time_window | REFRESH_RATE | 原值 | + +#### performance(性能属性) + +| 目标字段 | 原始字段(按优先级) | 转换 | +|----------|----------------------|------| +| core_performance | STRIKE_ACCURACY, DETECTION_ACCURACY, MOBILITY | 取第一个有效值,clamp [0,1] | +| survivability | ENVIRONMENT_ADAPTABILITY, ANTI_JAMMING_CAPABILITY | 同上 | +| mtbf | RELIABILITY, SYSTEM_RELIABILITY | 取第一个有效值 | + +#### 其他标量字段 + +| 目标字段 | 原始字段 | 转换 | +|----------|----------|------| +| protocol_list | PROTOCOL | 字符串→列表,空则 `[]` | +| format_list | FORMAT | 同上 | +| interface_list | INTERFACE | 同上 | +| security_level | security_level, SECURITY_LEVEL | 整数 [1,5],缺省 `3`(避免关系计算时 `None` 运算错误) | +| org_unit | LEVEL, ROLE_ID | 取第一个非空字符串 | +| nation | COUNTRY_REGION | 原值 | +| history_success | history_success, HISTORY_SUCCESS | clamp [0,1],缺省 `0.8`(同上) | + +### 缺失与空值 + +- 无可映射原始值时,多数目标字段为 `null`(列表型为 `[]`) +- `security_level`、`history_success`、`spatial.position` 等参与关系运算的字段**永不为 `null`**:缺省分别为 `3`、`0.8`、`[0,0]`,并在「关系计算前净化」阶段再次保证 +- 可选字段(如 `org_unit`、`nation`)缺失不影响记录通过校验 diff --git a/final/config/config.json b/final/config/config.json new file mode 100644 index 0000000..aabd80f --- /dev/null +++ b/final/config/config.json @@ -0,0 +1,86 @@ +{ + "source": "json", + "json": { + "input_file": "data/raw_data_sample.json", + "output_file": "data/nodes.json", + "report_file": "report/detailed_cleaning_report.json" + }, + "triplet": { + "enabled": true, + "input_file": null, + "output_file": "data/triples.json", + "report_file": "report/triplet_cleaning_report.json", + "clean": { + "deduplicate": true, + "remove_null_core": true, + "normalize_relation_type": true, + "filter_orphans": false + } + }, + "db": { + "host": "127.0.0.1", + "port": 5080, + "user": "SYSDBA", + "schema": "SYSDBA", + "table": "OBJECTIVE_INSTANCE", + "query": null, + "triplet_table": "RELATION_INSTANCE", + "triplet_query": null + }, + "formal": { + "enabled": false, + "user_id": "ADMIN", + "task_id": "TASK_FULL_KB", + "source_sys_type": "关系推理后的体系", + "target_sys_type": "形式化后的体系", + "source_query": null, + "user_column": "USER_ID", + "task_column": "TASK_ID", + "sys_type_column": "SYS_TYPE", + "skip_sys_type_validation": false, + "entity_id_column": "TARGET_ID", + "objective_table": "OBJECTIVE_INSTANCE", + "triplet_table": "RELATION_INSTANCE", + "triplet_primary_key": "RELATION_INSTANCE_ID", + "triplet_omit_primary_key_on_insert": true, + "triple_batch_column": "BATCH_ID", + "attribute_table": "METRIC_VALUE_INSTANCE", + "metric_id_column": "METRIC_ID", + "metric_value_column": "METRIC_VALUE", + "metric_insert_static": null, + "formal_result_table": "RELATION_INSTANCE", + "analysis_table": "RES_FORMAL_ANALYSIS", + "analysis_insert_columns": null, + "analysis_static_columns": null, + "rules_summary": null, + "required_attrs": [ + "f_IC", + "f_IA", + "f_CS", + "f_IT", + "f_DP", + "f_CPS", + "f_CC", + "position", + "effective_radius", + "response_time", + "cycle_time", + "data_age", + "time_window", + "core_performance", + "survivability", + "mtbf", + "protocol_list", + "format_list", + "interface_list", + "security_level", + "org_unit", + "nation", + "history_success" + ] + }, + "eval": { + "nodes_file": "data/nodes.json", + "triples_file": "data/triples.json" + } +} \ No newline at end of file diff --git a/final/config/config.yaml b/final/config/config.yaml new file mode 100644 index 0000000..cc356e7 --- /dev/null +++ b/final/config/config.yaml @@ -0,0 +1,96 @@ +# 数据清洗系统配置文件 +# 通过 source 切换:json(开发) / db(生产-达梦) + +source: json # 开发用 json;部署达梦时改为 db(或直接改 config.json) + +# JSON 文件模式(source=json 时生效) +json: + input_file: data/raw_data_sample.json + output_file: data/nodes.json + report_file: report/detailed_cleaning_report.json + +# 网络关系/效能评估读取路径(main_227 在清洗后加载) +eval: + nodes_file: data/nodes.json # 与 json.output_file 一致(清洗输出) + triples_file: data/triples.json # 与 triplet.output_file 一致(run_all 输出) + +# 三元组(run_all 时一并处理;db 模式从库读,json 模式可配 input_file) +triplet: + enabled: true # false 可关闭三元组处理 + input_file: null # json 模式下可选,如 data/triplets_raw.json + output_file: data/triples.json # 与 eval.triples_file 一致,便于 main_227 直接读取 + report_file: report/triplet_cleaning_report.json + # 清洗配置:clean: false 关闭清洗;true 使用默认;或自定义子项 + clean: + deduplicate: true # 按 (HEAD_ID, RELATION_TYPE, TAIL_ID) 去重 + remove_null_core: true # 移除 HEAD_ID/TAIL_ID/RELATION_TYPE 为空的记录 + normalize_relation_type: true # 规范化 RELATION_TYPE(去空格) + filter_orphans: false # 过滤悬空引用(需加载实体表,稍慢) + +# 达梦数据库模式(source=db 时生效) +# 密码通过环境变量 DM_PASSWORD 传入,切勿写入配置文件 +db: + host: 127.0.0.1 + port: 5080 + user: SYSDBA + schema: SYSDBA + # OBJECTIVE_INSTANCE 表结构与 raw_data_sample.json 一致,直接查询即可 + table: OBJECTIVE_INSTANCE + query: null + # 三元组表(RELATION_INSTANCE: HEAD_ID, RELATION_TYPE, TAIL_ID) + triplet_table: RELATION_INSTANCE + triplet_query: null # 可选:自定义 SQL + +# 模块1.3 形式化入库流程(source=db 时生效) +formal: + enabled: false + user_id: ADMIN + task_id: TASK_FULL_KB + source_sys_type: 关系推理后的体系 + target_sys_type: 形式化后的体系 + # 推荐:显式 SQL 只读「关系推理后的体系」,列名与库一致时最稳(为 null 则用下方列名拼 WHERE) + source_query: null + user_column: USER_ID + task_column: TASK_ID + sys_type_column: SYS_TYPE + skip_sys_type_validation: false + entity_id_column: TARGET_ID + objective_table: OBJECTIVE_INSTANCE + triplet_table: RELATION_INSTANCE + triplet_primary_key: RELATION_INSTANCE_ID + triplet_omit_primary_key_on_insert: true + triple_batch_column: BATCH_ID + attribute_table: METRIC_VALUE_INSTANCE + metric_id_column: METRIC_ID + metric_value_column: METRIC_VALUE + metric_insert_static: null + formal_result_table: RELATION_INSTANCE + analysis_table: RES_FORMAL_ANALYSIS + # 若自动匹配列失败,在此列出 RES_FORMAL_ANALYSIS 的实际列名(顺序与 VALUES 一致) + analysis_insert_columns: null + analysis_static_columns: null + rules_summary: null + required_attrs: + - f_IC + - f_IA + - f_CS + - f_IT + - f_DP + - f_CPS + - f_CC + - position + - effective_radius + - response_time + - cycle_time + - data_age + - time_window + - core_performance + - survivability + - mtbf + - protocol_list + - format_list + - interface_list + - security_level + - org_unit + - nation + - history_success diff --git a/final/data/cleaned_data_final.json b/final/data/cleaned_data_final.json new file mode 100644 index 0000000..0f9ce44 --- /dev/null +++ b/final/data/cleaned_data_final.json @@ -0,0 +1,7002 @@ +[ + { + "ID": 132, + "TARGET_ID": "FS-俄-情报侦-132", + "TARGET_NAME": "侦察机师级", + "COUNTRY_REGION": "俄", + "LEVEL": "师级", + "ROLE_ID": "情报侦察", + "TASK_ID": "后勤支援任务", + "X": 79.36, + "Y": 52.11, + "COMMUNICATION_RANGE": 94.96, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.25838704606599217, + "ENVIRONMENT_ADAPTABILITY": 0.40944779235306994, + "ANTI_JAMMING_CAPABILITY": 0.5187126139085138, + "DETECTION_RANGE": 430.99590881572885, + "DETECTION_ACCURACY": 0.9273183360354136, + "REFRESH_RATE": 3.7, + "TRANSMISSION_DELAY": 1.48, + "RELIABILITY": 0.7201663499950727, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-11-25 10:20:40.773806" + }, + { + "ID": 42, + "TARGET_ID": "FS-法-后勤保-042", + "TARGET_NAME": "医疗站旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "后勤保障", + "TASK_ID": "侦察监视任务", + "X": 19.54, + "Y": 39.4, + "COMMUNICATION_RANGE": 60.23, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.5336058782162458, + "ENVIRONMENT_ADAPTABILITY": 0.6611669374560885, + "ANTI_JAMMING_CAPABILITY": 0.43985141347577034, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 76.5, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 82.1, + "SUPPORT_CAPACITY": 3262.0, + "CREATED_TIME": "2025-11-22 10:20:40.769839" + }, + { + "ID": 144, + "TARGET_ID": "FS-法-协同打-144", + "TARGET_NAME": "无人机群军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "协同打击", + "TASK_ID": "火力打击任务", + "X": 142.64, + "Y": -2.03, + "COMMUNICATION_RANGE": 60.37, + "WEIGHT": 51.5, + "AREA": 83.0, + "MOBILITY": 0.765856934242531, + "ENVIRONMENT_ADAPTABILITY": 0.6780064891870266, + "ANTI_JAMMING_CAPABILITY": 0.7318538801286802, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 102.74174414980305, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 31.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-11-21 10:20:40.774316" + }, + { + "ID": 25, + "TARGET_ID": "FS-俄-指挥控-025", + "TARGET_NAME": "数据中心旅级", + "COUNTRY_REGION": "俄", + "LEVEL": "旅级", + "ROLE_ID": "指挥控制", + "TASK_ID": "指挥协调任务", + "X": -64.34, + "Y": -83.34, + "COMMUNICATION_RANGE": 100.62, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.43407700483050526, + "ENVIRONMENT_ADAPTABILITY": 0.5534862235609791, + "ANTI_JAMMING_CAPABILITY": 0.8187008350255001, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.55, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 2.3, + "PROCESSING_CAPACITY": 3995.0, + "INFORMATION_FUSION_CAPABILITY": 0.9353176004184331, + "SYSTEM_RELIABILITY": 0.7360740164970635, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-11-19 10:20:40.769437" + }, + { + "ID": 39, + "TARGET_ID": "FS-中-情报侦-039", + "TARGET_NAME": "侦察卫星营级", + "COUNTRY_REGION": "中", + "LEVEL": "营级", + "ROLE_ID": "情报侦察", + "TASK_ID": "侦察监视任务", + "X": -39.98, + "Y": -29.19, + "COMMUNICATION_RANGE": 178.9, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.9456373719448737, + "ENVIRONMENT_ADAPTABILITY": 0.06473844418050001, + "ANTI_JAMMING_CAPABILITY": 0.5979707905948968, + "DETECTION_RANGE": 171.09528712959238, + "DETECTION_ACCURACY": 1.0222571425311862, + "REFRESH_RATE": 9.7, + "TRANSMISSION_DELAY": 0.14, + "RELIABILITY": 0.6863499891188701, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-11-18 10:20:40.769770" + }, + { + "ID": 67, + "TARGET_ID": "FS-英-情报侦-067", + "TARGET_NAME": "电子侦察站军级", + "COUNTRY_REGION": "英", + "LEVEL": "军级", + "ROLE_ID": "情报侦察", + "TASK_ID": "信息传输任务", + "X": 177.46, + "Y": -88.55, + "COMMUNICATION_RANGE": 174.42, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.6489007588351082, + "ENVIRONMENT_ADAPTABILITY": 0.9644539649972873, + "ANTI_JAMMING_CAPABILITY": 0.37813761918239486, + "DETECTION_RANGE": 188.06031285347055, + "DETECTION_ACCURACY": 0.8310209500883896, + "REFRESH_RATE": 5.9, + "TRANSMISSION_DELAY": 1.75, + "RELIABILITY": 0.8142507192201216, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-11-17 10:20:40.770470" + }, + { + "ID": 190, + "TARGET_ID": "FS-美-情报侦-190", + "TARGET_NAME": null, + "COUNTRY_REGION": "美", + "LEVEL": "团级", + "ROLE_ID": "情报侦察", + "TASK_ID": "后勤支援任务", + "X": 108.79, + "Y": 8.91, + "COMMUNICATION_RANGE": 123.64, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.07677423153109397, + "ENVIRONMENT_ADAPTABILITY": 0.3267375257079822, + "ANTI_JAMMING_CAPABILITY": 0.04104810752145527, + "DETECTION_RANGE": 136.84171503693375, + "DETECTION_ACCURACY": 0.7058598191391376, + "REFRESH_RATE": 7.3, + "TRANSMISSION_DELAY": 1.4, + "RELIABILITY": 0.6729237169648675, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-11-14 10:20:40.775867" + }, + { + "ID": 50, + "TARGET_ID": "FS-法-协同打-050", + "TARGET_NAME": "无人机群师级", + "COUNTRY_REGION": "法", + "LEVEL": "师级", + "ROLE_ID": "协同打击", + "TASK_ID": "侦察监视任务", + "X": 15.8, + "Y": -76.51, + "COMMUNICATION_RANGE": 58.22, + "WEIGHT": 71.8, + "AREA": 182.0, + "MOBILITY": 0.7946343491570269, + "ENVIRONMENT_ADAPTABILITY": 0.739303558837506, + "ANTI_JAMMING_CAPABILITY": 0.42469081437191947, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 12.054998256510109, + "STRIKE_ACCURACY": 0.9543405215191566, + "AMMUNITION_RESERVE": 41.0, + "TARGET_RECOGNITION_CAPABILITY": 0.5960187236877087, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-11-14 10:20:40.770028" + }, + { + "ID": 23, + "TARGET_ID": "FS-英-情报侦-023", + "TARGET_NAME": "侦察机营级", + "COUNTRY_REGION": "英", + "LEVEL": "营级", + "ROLE_ID": "情报侦察", + "TASK_ID": "侦察监视任务", + "X": 167.18, + "Y": -10.138125, + "COMMUNICATION_RANGE": 111.32, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.2724943460061504, + "ENVIRONMENT_ADAPTABILITY": 0.15215221284705205, + "ANTI_JAMMING_CAPABILITY": 0.0638175488713183, + "DETECTION_RANGE": 179.44000179908875, + "DETECTION_ACCURACY": 0.9434737548691507, + "REFRESH_RATE": 6.2, + "TRANSMISSION_DELAY": 1.81, + "RELIABILITY": 0.9081946997805146, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-11-14 10:20:40.769389" + }, + { + "ID": 93, + "TARGET_ID": "FS-中-协同打-093", + "TARGET_NAME": "电子战飞机营级", + "COUNTRY_REGION": "中", + "LEVEL": "营级", + "ROLE_ID": "协同打击", + "TASK_ID": "火力打击任务", + "X": 160.1, + "Y": 6.340789473684209, + "COMMUNICATION_RANGE": 121.51, + "WEIGHT": 48.4, + "AREA": 100.0, + "MOBILITY": 0.4460615438902422, + "ENVIRONMENT_ADAPTABILITY": 0.8856882657130101, + "ANTI_JAMMING_CAPABILITY": 0.602710019923943, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 27.11582696292802, + "STRIKE_ACCURACY": 0.6088956173914737, + "AMMUNITION_RESERVE": 31.0, + "TARGET_RECOGNITION_CAPABILITY": 0.6537874094459892, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-11-11 10:20:40.771326" + }, + { + "ID": 68, + "TARGET_ID": "FS-中-后勤保-068", + "TARGET_NAME": "油料库旅级", + "COUNTRY_REGION": "中", + "LEVEL": "旅级", + "ROLE_ID": "后勤保障", + "TASK_ID": "侦察监视任务", + "X": -27.79, + "Y": -11.05, + "COMMUNICATION_RANGE": 111.95, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.7617780649374528, + "ENVIRONMENT_ADAPTABILITY": 0.4717973727531308, + "ANTI_JAMMING_CAPABILITY": 0.5085405001618835, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 93.4, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 54.4, + "SUPPORT_CAPACITY": 488.0, + "CREATED_TIME": "2025-11-11 10:20:40.770493" + }, + { + "ID": 156, + "TARGET_ID": "FS-美-火力打-156", + "TARGET_NAME": "战斗机大队旅级", + "COUNTRY_REGION": "美", + "LEVEL": "旅级", + "ROLE_ID": "火力打击", + "TASK_ID": "火力打击任务", + "X": -72.97, + "Y": 76.42, + "COMMUNICATION_RANGE": 68.62, + "WEIGHT": 44.5, + "AREA": 207.0, + "MOBILITY": 0.3799897189606485, + "ENVIRONMENT_ADAPTABILITY": 0.94583943968649, + "ANTI_JAMMING_CAPABILITY": 0.9836252504241725, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 78.48555563919452, + "STRIKE_ACCURACY": 0.5439619568467536, + "AMMUNITION_RESERVE": 28.0, + "TARGET_RECOGNITION_CAPABILITY": 0.8869593801185574, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-11-09 10:20:40.774669" + }, + { + "ID": 158, + "TARGET_ID": "FS-俄-指挥控-158", + "TARGET_NAME": "指挥所旅级", + "COUNTRY_REGION": "俄", + "LEVEL": "旅级", + "ROLE_ID": "指挥控制", + "TASK_ID": "后勤支援任务", + "X": -15.38, + "Y": 4.63, + "COMMUNICATION_RANGE": 184.9, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.2218689670744981, + "ENVIRONMENT_ADAPTABILITY": 0.606969885228364, + "ANTI_JAMMING_CAPABILITY": 0.6837718304112365, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.39, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 3.6, + "PROCESSING_CAPACITY": 603.0, + "INFORMATION_FUSION_CAPABILITY": 0.7892570682998674, + "SYSTEM_RELIABILITY": 0.7290654450749515, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-11-08 10:20:40.774752" + }, + { + "ID": 4, + "TARGET_ID": "FS-法-情报侦-004", + "TARGET_NAME": "侦察机旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "情报侦察", + "TASK_ID": "信息传输任务", + "X": -47.01, + "Y": -18.1, + "COMMUNICATION_RANGE": 192.82, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.7730900952231743, + "ENVIRONMENT_ADAPTABILITY": 0.04102950493974, + "ANTI_JAMMING_CAPABILITY": 0.5540146511979371, + "DETECTION_RANGE": 465.1939894253243, + "DETECTION_ACCURACY": 1.1617841284419155, + "REFRESH_RATE": 6.8, + "TRANSMISSION_DELAY": 0.89, + "RELIABILITY": 0.6911348625498234, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-11-07 10:20:40.768847" + }, + { + "ID": 148, + "TARGET_ID": "FS-俄-平台部-148", + "TARGET_NAME": null, + "COUNTRY_REGION": "俄", + "LEVEL": "旅级", + "ROLE_ID": "平台部署", + "TASK_ID": "指挥协调任务", + "X": 30.64, + "Y": -22.45, + "COMMUNICATION_RANGE": 207.31, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.857623838123229, + "ANTI_JAMMING_CAPABILITY": 0.677425994087591, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 46243.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 9728.0, + "CREATED_TIME": "2025-11-03 10:20:40.774452" + }, + { + "ID": 27, + "TARGET_ID": "FS-英-平台部-027", + "TARGET_NAME": "前进阵地军级", + "COUNTRY_REGION": "英", + "LEVEL": "军级", + "ROLE_ID": "平台部署", + "TASK_ID": "后勤支援任务", + "X": 159.79, + "Y": -23.05, + "COMMUNICATION_RANGE": 81.42, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.595379679698246, + "ANTI_JAMMING_CAPABILITY": 0.6852882897522008, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 20290.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3606.0, + "CREATED_TIME": "2025-11-02 10:20:40.769485" + }, + { + "ID": 61, + "TARGET_ID": "FS-俄-协同打-061", + "TARGET_NAME": "预警指挥机军级", + "COUNTRY_REGION": "俄", + "LEVEL": "军级", + "ROLE_ID": "协同打击", + "TASK_ID": "信息传输任务", + "X": -47.15, + "Y": 81.75, + "COMMUNICATION_RANGE": 90.37, + "WEIGHT": 27.5, + "AREA": 82.0, + "MOBILITY": 0.8627476147728876, + "ENVIRONMENT_ADAPTABILITY": 0.5960443287508776, + "ANTI_JAMMING_CAPABILITY": 0.47079167793577587, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 65.7470956639839, + "STRIKE_ACCURACY": 0.9722169158379458, + "AMMUNITION_RESERVE": 39.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-30 10:20:40.770338" + }, + { + "ID": 44, + "TARGET_ID": "FS-法-指挥控-044", + "TARGET_NAME": "数据中心旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "指挥控制", + "TASK_ID": "火力打击任务", + "X": 163.96, + "Y": -85.57, + "COMMUNICATION_RANGE": 165.38, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.2880666420917332, + "ENVIRONMENT_ADAPTABILITY": 0.8602687407985335, + "ANTI_JAMMING_CAPABILITY": 0.585907528415675, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.54, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 14.0, + "PROCESSING_CAPACITY": 6097.0, + "INFORMATION_FUSION_CAPABILITY": 0.5572212379938524, + "SYSTEM_RELIABILITY": 0.8833953812579285, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-30 10:20:40.769889" + }, + { + "ID": 143, + "TARGET_ID": "FS-俄-平台部-143", + "TARGET_NAME": "基地营级", + "COUNTRY_REGION": "俄", + "LEVEL": "营级", + "ROLE_ID": "平台部署", + "TASK_ID": "后勤支援任务", + "X": 111.0, + "Y": -55.13, + "COMMUNICATION_RANGE": 202.51, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.613342234884026, + "ANTI_JAMMING_CAPABILITY": 0.6749956629684939, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 26500.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 2857.0, + "CREATED_TIME": "2025-10-28 10:20:40.774286" + }, + { + "ID": 98, + "TARGET_ID": "FS-法-火力打-098", + "TARGET_NAME": "自行火炮营旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "火力打击", + "TASK_ID": "信息传输任务", + "X": 108.94, + "Y": 87.44, + "COMMUNICATION_RANGE": 194.27, + "WEIGHT": 27.3, + "AREA": 138.0, + "MOBILITY": 0.7585377480252092, + "ENVIRONMENT_ADAPTABILITY": 0.39000143936218146, + "ANTI_JAMMING_CAPABILITY": 0.46525557665053496, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 90.28918932513994, + "STRIKE_ACCURACY": 0.7843641578807795, + "AMMUNITION_RESERVE": 31.0, + "TARGET_RECOGNITION_CAPABILITY": 0.4896065278429844, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-28 10:20:40.771449" + }, + { + "ID": 161, + "TARGET_ID": "FS-俄-平台部-161", + "TARGET_NAME": "机场团级", + "COUNTRY_REGION": "俄", + "LEVEL": "团级", + "ROLE_ID": "平台部署", + "TASK_ID": "侦察监视任务", + "X": 154.47, + "Y": -33.09, + "COMMUNICATION_RANGE": 106.99, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.8989800182513565, + "ANTI_JAMMING_CAPABILITY": 0.7877613525404472, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 3928.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 4618.0, + "CREATED_TIME": "2025-10-26 10:20:40.774887" + }, + { + "ID": 131, + "TARGET_ID": "FS-法-后勤保-131", + "TARGET_NAME": "维修站师级", + "COUNTRY_REGION": "法", + "LEVEL": "师级", + "ROLE_ID": "后勤保障", + "TASK_ID": "侦察监视任务", + "X": -103.8, + "Y": -34.11, + "COMMUNICATION_RANGE": 57.36, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.6188826507540406, + "ENVIRONMENT_ADAPTABILITY": 0.8344834185126728, + "ANTI_JAMMING_CAPABILITY": 0.745260147644442, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 34.2, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 91.8, + "SUPPORT_CAPACITY": 3854.0, + "CREATED_TIME": "2025-10-24 10:20:40.773777" + }, + { + "ID": 36, + "TARGET_ID": "FS-法-指挥控-036", + "TARGET_NAME": "通信中继站旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "指挥控制", + "TASK_ID": "信息传输任务", + "X": 57.85, + "Y": 89.63, + "COMMUNICATION_RANGE": 108.56, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.1247645766772233, + "ENVIRONMENT_ADAPTABILITY": 0.7669804603713722, + "ANTI_JAMMING_CAPABILITY": 0.6629499396353662, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.29, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 19.8, + "PROCESSING_CAPACITY": 5952.0, + "INFORMATION_FUSION_CAPABILITY": 1.0027493210251657, + "SYSTEM_RELIABILITY": 0.6250685354023928, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-24 10:20:40.769703" + }, + { + "ID": 33, + "TARGET_ID": "FS-中-情报侦-033", + "TARGET_NAME": "电子侦察站营级", + "COUNTRY_REGION": "中", + "LEVEL": "营级", + "ROLE_ID": "情报侦察", + "TASK_ID": "指挥协调任务", + "X": 4.18, + "Y": -8.62, + "COMMUNICATION_RANGE": 143.26, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.4751050195175336, + "ENVIRONMENT_ADAPTABILITY": 0.9896508618806358, + "ANTI_JAMMING_CAPABILITY": 0.3020125565640992, + "DETECTION_RANGE": 222.91738937793258, + "DETECTION_ACCURACY": 0.8728661578303576, + "REFRESH_RATE": 9.7, + "TRANSMISSION_DELAY": 0.9, + "RELIABILITY": 0.9686394723022074, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-24 10:20:40.769633" + }, + { + "ID": 112, + "TARGET_ID": "FS-英-指挥控-112", + "TARGET_NAME": "指挥所旅级", + "COUNTRY_REGION": "英", + "LEVEL": "旅级", + "ROLE_ID": "指挥控制", + "TASK_ID": "信息传输任务", + "X": 5.95, + "Y": -88.13, + "COMMUNICATION_RANGE": 218.4, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.21073366733616722, + "ENVIRONMENT_ADAPTABILITY": 0.45034022343831726, + "ANTI_JAMMING_CAPABILITY": 0.6016818132812409, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.77, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 18.6, + "PROCESSING_CAPACITY": 6130.0, + "INFORMATION_FUSION_CAPABILITY": 0.5478038610620977, + "SYSTEM_RELIABILITY": 0.9666419933398582, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-21 10:20:40.771876" + }, + { + "ID": 21, + "TARGET_ID": "FS-美-情报侦-021", + "TARGET_NAME": "电子侦察站旅级", + "COUNTRY_REGION": "美", + "LEVEL": "旅级", + "ROLE_ID": "情报侦察", + "TASK_ID": "侦察监视任务", + "X": 64.31, + "Y": 29.5, + "COMMUNICATION_RANGE": 174.54, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.16980628774940956, + "ENVIRONMENT_ADAPTABILITY": 0.34507934182786404, + "ANTI_JAMMING_CAPABILITY": 0.3964318518424311, + "DETECTION_RANGE": 422.2322840212703, + "DETECTION_ACCURACY": 1.1396967179785364, + "REFRESH_RATE": 4.3, + "TRANSMISSION_DELAY": 1.69, + "RELIABILITY": 0.5429869513187722, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-21 10:20:40.769330" + }, + { + "ID": 175, + "TARGET_ID": "FS-俄-后勤保-175", + "TARGET_NAME": "维修站军级", + "COUNTRY_REGION": "俄", + "LEVEL": "军级", + "ROLE_ID": "后勤保障", + "TASK_ID": "指挥协调任务", + "X": -30.69, + "Y": 4.2, + "COMMUNICATION_RANGE": 123.41, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.5349981796608418, + "ENVIRONMENT_ADAPTABILITY": 0.8353890468249829, + "ANTI_JAMMING_CAPABILITY": 0.7642685590856566, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 44.6, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 112.5, + "SUPPORT_CAPACITY": 3008.0, + "CREATED_TIME": "2025-10-20 10:20:40.775437" + }, + { + "ID": 135, + "TARGET_ID": "FS-法-火力打-135", + "TARGET_NAME": "自行火炮营旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "火力打击", + "TASK_ID": "后勤支援任务", + "X": 65.85, + "Y": -57.06, + "COMMUNICATION_RANGE": 48.62, + "WEIGHT": 76.8, + "AREA": 140.0, + "MOBILITY": 0.5381447736416063, + "ENVIRONMENT_ADAPTABILITY": 0.8573358645976028, + "ANTI_JAMMING_CAPABILITY": 0.7365723943721265, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 75.25988820524987, + "STRIKE_ACCURACY": 0.8127349793924271, + "AMMUNITION_RESERVE": 20.0, + "TARGET_RECOGNITION_CAPABILITY": 0.5134465445708659, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-19 10:20:40.773930" + }, + { + "ID": 121, + "TARGET_ID": "FS-美-协同打-121", + "TARGET_NAME": "无人机群营级", + "COUNTRY_REGION": "美", + "LEVEL": "营级", + "ROLE_ID": "协同打击", + "TASK_ID": "后勤支援任务", + "X": -64.59, + "Y": -76.6, + "COMMUNICATION_RANGE": 55.65, + "WEIGHT": 29.5, + "AREA": 118.0, + "MOBILITY": 0.30134906997092464, + "ENVIRONMENT_ADAPTABILITY": 0.9316357099395394, + "ANTI_JAMMING_CAPABILITY": 0.8001952943137118, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 31.302047827649133, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 12.0, + "TARGET_RECOGNITION_CAPABILITY": 0.43123538917537196, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-12 10:20:40.772685" + }, + { + "ID": 10, + "TARGET_ID": "FS-英-后勤保-010", + "TARGET_NAME": "油料库旅级", + "COUNTRY_REGION": "英", + "LEVEL": "旅级", + "ROLE_ID": "后勤保障", + "TASK_ID": "后勤支援任务", + "X": -145.98, + "Y": 30.49, + "COMMUNICATION_RANGE": 61.82, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.3319260303744972, + "ENVIRONMENT_ADAPTABILITY": 0.6768906709538515, + "ANTI_JAMMING_CAPABILITY": 0.3200027639697409, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 86.7, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 168.1, + "SUPPORT_CAPACITY": 4273.0, + "CREATED_TIME": "2025-10-11 10:20:40.769004" + }, + { + "ID": 182, + "TARGET_ID": "FS-法-后勤保-182", + "TARGET_NAME": "医疗站师级", + "COUNTRY_REGION": "法", + "LEVEL": "师级", + "ROLE_ID": "后勤保障", + "TASK_ID": "火力打击任务", + "X": -36.09, + "Y": -66.4, + "COMMUNICATION_RANGE": 68.06, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.7216870637120372, + "ENVIRONMENT_ADAPTABILITY": 0.7855332128964372, + "ANTI_JAMMING_CAPABILITY": 0.396172776481654, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 72.2, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 197.2, + "SUPPORT_CAPACITY": 1827.0, + "CREATED_TIME": "2025-10-09 10:20:40.775616" + }, + { + "ID": 149, + "TARGET_ID": "FS-俄-指挥控-149", + "TARGET_NAME": "数据中心军级", + "COUNTRY_REGION": "俄", + "LEVEL": "军级", + "ROLE_ID": "指挥控制", + "TASK_ID": "信息传输任务", + "X": -40.08, + "Y": -48.24, + "COMMUNICATION_RANGE": 149.92, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.49445267470335413, + "ENVIRONMENT_ADAPTABILITY": 0.701945471078826, + "ANTI_JAMMING_CAPABILITY": 0.6743569556551019, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.45, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 1.3, + "PROCESSING_CAPACITY": 300.0, + "INFORMATION_FUSION_CAPABILITY": 1.230509496205383, + "SYSTEM_RELIABILITY": 0.8753282038338506, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-09 10:20:40.774475" + }, + { + "ID": 80, + "TARGET_ID": "FS-英-火力打-080", + "TARGET_NAME": "战斗机大队营级", + "COUNTRY_REGION": "英", + "LEVEL": "营级", + "ROLE_ID": "火力打击", + "TASK_ID": "后勤支援任务", + "X": 167.98, + "Y": 38.37, + "COMMUNICATION_RANGE": 158.71, + "WEIGHT": 48.3, + "AREA": 232.0, + "MOBILITY": 0.9478793158265648, + "ENVIRONMENT_ADAPTABILITY": 0.6096434576100784, + "ANTI_JAMMING_CAPABILITY": 0.9466681753853008, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 31.855867574875322, + "STRIKE_ACCURACY": 0.5407351305686875, + "AMMUNITION_RESERVE": 6.0, + "TARGET_RECOGNITION_CAPABILITY": 0.98414739654503, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-09 10:20:40.770789" + }, + { + "ID": 104, + "TARGET_ID": "FS-英-协同打-104", + "TARGET_NAME": "电子战飞机营级", + "COUNTRY_REGION": "英", + "LEVEL": "营级", + "ROLE_ID": "协同打击", + "TASK_ID": "指挥协调任务", + "X": -115.03, + "Y": 56.36, + "COMMUNICATION_RANGE": 166.53, + "WEIGHT": 49.5, + "AREA": 260.0, + "MOBILITY": 1.0, + "ENVIRONMENT_ADAPTABILITY": 0.9678640318462863, + "ANTI_JAMMING_CAPABILITY": 0.9434578953099573, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 39.06615396987252, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 40.0, + "TARGET_RECOGNITION_CAPABILITY": 0.9020159457301223, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-06 10:20:40.771593" + }, + { + "ID": 101, + "TARGET_ID": "FS-法-指挥控-101", + "TARGET_NAME": "指挥所军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "指挥控制", + "TASK_ID": "侦察监视任务", + "X": 108.99, + "Y": -32.27, + "COMMUNICATION_RANGE": 154.03, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.1852127877931003, + "ENVIRONMENT_ADAPTABILITY": 0.8133376230185234, + "ANTI_JAMMING_CAPABILITY": 0.789404079705013, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.7, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 11.7, + "PROCESSING_CAPACITY": 3178.0, + "INFORMATION_FUSION_CAPABILITY": 0.9020383020719778, + "SYSTEM_RELIABILITY": 0.7582777719369205, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-06 10:20:40.771519" + }, + { + "ID": 45, + "TARGET_ID": "FS-俄-平台部-045", + "TARGET_NAME": "机场团级", + "COUNTRY_REGION": "俄", + "LEVEL": "团级", + "ROLE_ID": "平台部署", + "TASK_ID": "信息传输任务", + "X": 69.8, + "Y": -3.7, + "COMMUNICATION_RANGE": 166.48, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.8975349704851154, + "ANTI_JAMMING_CAPABILITY": 0.6497422051485847, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 31888.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 642.0, + "CREATED_TIME": "2025-10-06 10:20:40.769912" + }, + { + "ID": 200, + "TARGET_ID": "FS-中-情报侦-200", + "TARGET_NAME": "侦察卫星师级", + "COUNTRY_REGION": "中", + "LEVEL": "师级", + "ROLE_ID": "情报侦察", + "TASK_ID": "后勤支援任务", + "X": -30.22, + "Y": -36.6, + "COMMUNICATION_RANGE": 242.15, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.23137275359818069, + "ENVIRONMENT_ADAPTABILITY": 0.496176057324478, + "ANTI_JAMMING_CAPABILITY": 0.058605551328093086, + "DETECTION_RANGE": 341.24413541311117, + "DETECTION_ACCURACY": 1.138087741175668, + "REFRESH_RATE": 3.9, + "TRANSMISSION_DELAY": 1.49, + "RELIABILITY": 0.6419250794372725, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-10-04 10:20:40.776203" + }, + { + "ID": 169, + "TARGET_ID": "FS-法-指挥控-169", + "TARGET_NAME": "通信中继站军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "指挥控制", + "TASK_ID": "信息传输任务", + "X": 76.74, + "Y": -15.33, + "COMMUNICATION_RANGE": 200.36, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.4804791865895252, + "ENVIRONMENT_ADAPTABILITY": 0.49240957836018606, + "ANTI_JAMMING_CAPABILITY": 0.5346423518120389, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.32, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 12.4, + "PROCESSING_CAPACITY": 6062.0, + "INFORMATION_FUSION_CAPABILITY": 1.056307386409116, + "SYSTEM_RELIABILITY": 0.8367170652653042, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-09-30 10:20:40.775280" + }, + { + "ID": 160, + "TARGET_ID": "FS-美-后勤保-160", + "TARGET_NAME": "医疗站师级", + "COUNTRY_REGION": "美", + "LEVEL": "师级", + "ROLE_ID": "后勤保障", + "TASK_ID": "侦察监视任务", + "X": -119.43, + "Y": 2.98, + "COMMUNICATION_RANGE": 180.46, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 1.0, + "ENVIRONMENT_ADAPTABILITY": 0.6039515380510623, + "ANTI_JAMMING_CAPABILITY": 0.3133365055682884, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 72.2, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 127.5, + "SUPPORT_CAPACITY": 4995.0, + "CREATED_TIME": "2025-09-30 10:20:40.774819" + }, + { + "ID": 125, + "TARGET_ID": "FS-美-火力打-125", + "TARGET_NAME": "导弹发射营旅级", + "COUNTRY_REGION": "美", + "LEVEL": "旅级", + "ROLE_ID": "火力打击", + "TASK_ID": "火力打击任务", + "X": -8.47, + "Y": -85.02, + "COMMUNICATION_RANGE": 113.51, + "WEIGHT": 72.2, + "AREA": 296.0, + "MOBILITY": 0.9365062756889395, + "ENVIRONMENT_ADAPTABILITY": 0.3810597408856417, + "ANTI_JAMMING_CAPABILITY": 0.9566212108310559, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 23.291130821961744, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 11.0, + "TARGET_RECOGNITION_CAPABILITY": 0.7432367900275122, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-09-26 10:20:40.773150" + }, + { + "ID": 19, + "TARGET_ID": "FS-中-指挥控-019", + "TARGET_NAME": "数据中心军级", + "COUNTRY_REGION": "中", + "LEVEL": "军级", + "ROLE_ID": "指挥控制", + "TASK_ID": "火力打击任务", + "X": 63.22, + "Y": -75.49, + "COMMUNICATION_RANGE": 114.71, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.2751771968428925, + "ENVIRONMENT_ADAPTABILITY": 0.415540007063284, + "ANTI_JAMMING_CAPABILITY": 0.5650232122994336, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.78, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 28.3, + "PROCESSING_CAPACITY": 9941.0, + "INFORMATION_FUSION_CAPABILITY": 0.6022987253757921, + "SYSTEM_RELIABILITY": 0.6988466980220978, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-09-19 10:20:40.769284" + }, + { + "ID": 180, + "TARGET_ID": "FS-美-指挥控-180", + "TARGET_NAME": "通信中继站师级", + "COUNTRY_REGION": "美", + "LEVEL": "师级", + "ROLE_ID": "指挥控制", + "TASK_ID": "后勤支援任务", + "X": -88.43, + "Y": 51.36, + "COMMUNICATION_RANGE": 247.67, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.15262511715511806, + "ENVIRONMENT_ADAPTABILITY": 0.47368335556461727, + "ANTI_JAMMING_CAPABILITY": 0.5234926589946198, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.08, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 17.5, + "PROCESSING_CAPACITY": 1069.0, + "INFORMATION_FUSION_CAPABILITY": 1.1413316611151185, + "SYSTEM_RELIABILITY": 0.884752049977152, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-09-18 10:20:40.775562" + }, + { + "ID": 192, + "TARGET_ID": "FS-美-情报侦-192", + "TARGET_NAME": "雷达站军级", + "COUNTRY_REGION": "美", + "LEVEL": "军级", + "ROLE_ID": "情报侦察", + "TASK_ID": "指挥协调任务", + "X": -124.83, + "Y": 29.72, + "COMMUNICATION_RANGE": 307.77, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.055365352535215184, + "ENVIRONMENT_ADAPTABILITY": 0.13799611046066218, + "ANTI_JAMMING_CAPABILITY": 0.540116037085569, + "DETECTION_RANGE": 462.2808324751843, + "DETECTION_ACCURACY": 0.9501448193383941, + "REFRESH_RATE": 6.0, + "TRANSMISSION_DELAY": 0.23, + "RELIABILITY": 0.5222990995808883, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-09-16 10:20:40.775920" + }, + { + "ID": 111, + "TARGET_ID": "FS-英-后勤保-111", + "TARGET_NAME": "医疗站旅级", + "COUNTRY_REGION": "英", + "LEVEL": "旅级", + "ROLE_ID": "后勤保障", + "TASK_ID": "后勤支援任务", + "X": -83.14, + "Y": -37.05, + "COMMUNICATION_RANGE": 255.68, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.5775189190195599, + "ENVIRONMENT_ADAPTABILITY": 0.5703410706863967, + "ANTI_JAMMING_CAPABILITY": 0.42164522350172734, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 48.8, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 157.9, + "SUPPORT_CAPACITY": 927.0, + "CREATED_TIME": "2025-09-14 10:20:40.771846" + }, + { + "ID": 177, + "TARGET_ID": "FS-法-指挥控-177", + "TARGET_NAME": "作战中心旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "指挥控制", + "TASK_ID": "火力打击任务", + "X": 47.12, + "Y": -40.74, + "COMMUNICATION_RANGE": 216.42, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.3997210730224816, + "ENVIRONMENT_ADAPTABILITY": 0.6121508781429347, + "ANTI_JAMMING_CAPABILITY": 0.8770701855766938, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.63, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 25.4, + "PROCESSING_CAPACITY": 5776.0, + "INFORMATION_FUSION_CAPABILITY": 0.7089403543130157, + "SYSTEM_RELIABILITY": 0.8521282874005076, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-09-13 10:20:40.775486" + }, + { + "ID": 20, + "TARGET_ID": "FS-英-后勤保-020", + "TARGET_NAME": "油料库营级", + "COUNTRY_REGION": "英", + "LEVEL": "营级", + "ROLE_ID": "后勤保障", + "TASK_ID": "火力打击任务", + "X": 51.1, + "Y": 19.99, + "COMMUNICATION_RANGE": 142.44, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.4414395914910709, + "ENVIRONMENT_ADAPTABILITY": 0.7626522113533794, + "ANTI_JAMMING_CAPABILITY": 0.36488048719796146, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 58.3, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 196.2, + "SUPPORT_CAPACITY": 2865.0, + "CREATED_TIME": "2025-09-13 10:20:40.769309" + }, + { + "ID": 199, + "TARGET_ID": "FS-英-情报侦-199", + "TARGET_NAME": "电子侦察站团级", + "COUNTRY_REGION": "英", + "LEVEL": "团级", + "ROLE_ID": "情报侦察", + "TASK_ID": "后勤支援任务", + "X": -148.19, + "Y": 40.94, + "COMMUNICATION_RANGE": 225.26, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 1.0, + "ENVIRONMENT_ADAPTABILITY": 0.4762886716500373, + "ANTI_JAMMING_CAPABILITY": 0.9968964869948481, + "DETECTION_RANGE": 380.9258913294169, + "DETECTION_ACCURACY": 0.8834281779204751, + "REFRESH_RATE": 9.8, + "TRANSMISSION_DELAY": 0.43, + "RELIABILITY": 0.7886897846467886, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-09-11 10:20:40.776176" + }, + { + "ID": 184, + "TARGET_ID": "FS-英-情报侦-184", + "TARGET_NAME": "侦察卫星师级", + "COUNTRY_REGION": "英", + "LEVEL": "师级", + "ROLE_ID": "情报侦察", + "TASK_ID": "火力打击任务", + "X": -110.32, + "Y": -33.03, + "COMMUNICATION_RANGE": 189.97, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.8516801389765795, + "ENVIRONMENT_ADAPTABILITY": 0.1590258914100955, + "ANTI_JAMMING_CAPABILITY": 0.555532860313897, + "DETECTION_RANGE": 265.8149034044266, + "DETECTION_ACCURACY": 1.0710800066520465, + "REFRESH_RATE": 2.8, + "TRANSMISSION_DELAY": 1.1, + "RELIABILITY": 1.0371293236772736, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-09-10 10:20:40.775722" + }, + { + "ID": 197, + "TARGET_ID": "FS-中-平台部-197", + "TARGET_NAME": "基地营级", + "COUNTRY_REGION": "中", + "LEVEL": "营级", + "ROLE_ID": "平台部署", + "TASK_ID": "侦察监视任务", + "X": -35.25, + "Y": -52.18, + "COMMUNICATION_RANGE": 191.51, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.5795867599967764, + "ANTI_JAMMING_CAPABILITY": 0.919265617839958, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 27091.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 1346.0, + "CREATED_TIME": "2025-09-09 10:20:40.776114" + }, + { + "ID": 113, + "TARGET_ID": "FS-英-协同打-113", + "TARGET_NAME": "无人机群旅级", + "COUNTRY_REGION": "英", + "LEVEL": "旅级", + "ROLE_ID": "协同打击", + "TASK_ID": "后勤支援任务", + "X": -6.52, + "Y": -38.96, + "COMMUNICATION_RANGE": 120.15, + "WEIGHT": 49.6, + "AREA": 266.0, + "MOBILITY": 0.6728305236635443, + "ENVIRONMENT_ADAPTABILITY": 0.9785998405244316, + "ANTI_JAMMING_CAPABILITY": 0.40658154463099605, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 50.38698502703272, + "STRIKE_ACCURACY": 0.8281978955037497, + "AMMUNITION_RESERVE": 13.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-09-08 10:20:40.771900" + }, + { + "ID": 32, + "TARGET_ID": "FS-法-火力打-032", + "TARGET_NAME": "火箭炮营旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "火力打击", + "TASK_ID": "指挥协调任务", + "X": 134.38, + "Y": -75.35, + "COMMUNICATION_RANGE": 74.68, + "WEIGHT": 61.3, + "AREA": 219.0, + "MOBILITY": 0.4675515709207743, + "ENVIRONMENT_ADAPTABILITY": 0.8546491983204156, + "ANTI_JAMMING_CAPABILITY": 0.9087731336017918, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 66.28405710968573, + "STRIKE_ACCURACY": 0.9660320469679198, + "AMMUNITION_RESERVE": 20.0, + "TARGET_RECOGNITION_CAPABILITY": 0.6004763002887243, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-09-08 10:20:40.769609" + }, + { + "ID": 8, + "TARGET_ID": "FS-英-后勤保-008", + "TARGET_NAME": "补给站军级", + "COUNTRY_REGION": "英", + "LEVEL": "军级", + "ROLE_ID": "后勤保障", + "TASK_ID": "后勤支援任务", + "X": -23.564, + "Y": -45.23, + "COMMUNICATION_RANGE": 65.32, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.3778800406440901, + "ENVIRONMENT_ADAPTABILITY": 0.7209612641374779, + "ANTI_JAMMING_CAPABILITY": 0.7330552507975143, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 73.5, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 59.7, + "SUPPORT_CAPACITY": 920.0, + "CREATED_TIME": "2025-09-06 10:20:40.768955" + }, + { + "ID": 154, + "TARGET_ID": "FS-美-情报侦-154", + "TARGET_NAME": "预警机团级", + "COUNTRY_REGION": "美", + "LEVEL": "团级", + "ROLE_ID": "情报侦察", + "TASK_ID": "信息传输任务", + "X": -81.37, + "Y": -78.26, + "COMMUNICATION_RANGE": 98.14, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.24217770288923554, + "ENVIRONMENT_ADAPTABILITY": 0.588470627807129, + "ANTI_JAMMING_CAPABILITY": 0.9033571698660366, + "DETECTION_RANGE": 327.9521839210178, + "DETECTION_ACCURACY": 0.7903690263707763, + "REFRESH_RATE": 2.9, + "TRANSMISSION_DELAY": 1.46, + "RELIABILITY": 0.7714257012108487, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-09-05 10:20:40.774616" + }, + { + "ID": 49, + "TARGET_ID": "FS-中-火力打-049", + "TARGET_NAME": "火箭炮营军级", + "COUNTRY_REGION": "中", + "LEVEL": "军级", + "ROLE_ID": "火力打击", + "TASK_ID": "后勤支援任务", + "X": -127.39, + "Y": -25.62, + "COMMUNICATION_RANGE": 82.45, + "WEIGHT": 31.6, + "AREA": 95.0, + "MOBILITY": 0.9165126249283688, + "ENVIRONMENT_ADAPTABILITY": 0.7980341326249453, + "ANTI_JAMMING_CAPABILITY": 0.4009186532680189, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 96.6188602801285, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 30.0, + "TARGET_RECOGNITION_CAPABILITY": 0.8287178464616923, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-09-05 10:20:40.770003" + }, + { + "ID": 69, + "TARGET_ID": "FS-法-后勤保-069", + "TARGET_NAME": "维修站团级", + "COUNTRY_REGION": "法", + "LEVEL": "团级", + "ROLE_ID": "后勤保障", + "TASK_ID": "指挥协调任务", + "X": 35.12, + "Y": -82.12, + "COMMUNICATION_RANGE": 90.25, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.4209283749074771, + "ENVIRONMENT_ADAPTABILITY": 0.8041718581588585, + "ANTI_JAMMING_CAPABILITY": 0.586206884337233, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 70.7, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 149.0, + "SUPPORT_CAPACITY": 1021.0, + "CREATED_TIME": "2025-09-02 10:20:40.770529" + }, + { + "ID": 52, + "TARGET_ID": "FS-俄-后勤保-052", + "TARGET_NAME": "维修站团级", + "COUNTRY_REGION": "俄", + "LEVEL": "团级", + "ROLE_ID": "后勤保障", + "TASK_ID": "火力打击任务", + "X": -42.92, + "Y": 49.63, + "COMMUNICATION_RANGE": 45.51, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.5407897241671101, + "ENVIRONMENT_ADAPTABILITY": 0.8906102311556248, + "ANTI_JAMMING_CAPABILITY": 0.584307325567273, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 38.4, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 159.2, + "SUPPORT_CAPACITY": 4611.0, + "CREATED_TIME": "2025-09-02 10:20:40.770075" + }, + { + "ID": 195, + "TARGET_ID": "FS-中-后勤保-195", + "TARGET_NAME": "补给站团级", + "COUNTRY_REGION": "中", + "LEVEL": "团级", + "ROLE_ID": "后勤保障", + "TASK_ID": "后勤支援任务", + "X": 158.62, + "Y": 14.0, + "COMMUNICATION_RANGE": 39.93, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.3020415351276875, + "ENVIRONMENT_ADAPTABILITY": 0.5456787622630083, + "ANTI_JAMMING_CAPABILITY": 0.7892395259466458, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 49.9, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 141.5, + "SUPPORT_CAPACITY": 3873.0, + "CREATED_TIME": "2025-08-27 10:20:40.776034" + }, + { + "ID": 72, + "TARGET_ID": "FS-美-协同打-072", + "TARGET_NAME": "无人机群营级", + "COUNTRY_REGION": "美", + "LEVEL": "营级", + "ROLE_ID": "协同打击", + "TASK_ID": "火力打击任务", + "X": 98.47, + "Y": 74.22, + "COMMUNICATION_RANGE": 38.06, + "WEIGHT": 72.7, + "AREA": 209.0, + "MOBILITY": 0.9463496145295907, + "ENVIRONMENT_ADAPTABILITY": 0.581190858404745, + "ANTI_JAMMING_CAPABILITY": 0.8974870273781627, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 62.344624458344235, + "STRIKE_ACCURACY": 0.570395455251773, + "AMMUNITION_RESERVE": 6.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-26 10:20:40.770599" + }, + { + "ID": 140, + "TARGET_ID": "FS-法-协同打-140", + "TARGET_NAME": "电子战飞机师级", + "COUNTRY_REGION": "法", + "LEVEL": "师级", + "ROLE_ID": "协同打击", + "TASK_ID": "火力打击任务", + "X": -1.05, + "Y": -47.04, + "COMMUNICATION_RANGE": 49.48, + "WEIGHT": 59.3, + "AREA": 77.0, + "MOBILITY": 0.7161145902517345, + "ENVIRONMENT_ADAPTABILITY": 0.43876226396141166, + "ANTI_JAMMING_CAPABILITY": 0.819999765722836, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 41.82499086602536, + "STRIKE_ACCURACY": 0.8724452033798171, + "AMMUNITION_RESERVE": 34.0, + "TARGET_RECOGNITION_CAPABILITY": 0.8217663773893394, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-25 10:20:40.774139" + }, + { + "ID": 207, + "TARGET_ID": "FS-中-火力打-074", + "TARGET_NAME": "火箭炮营营级", + "COUNTRY_REGION": "中", + "LEVEL": "营级", + "ROLE_ID": "火力打击", + "TASK_ID": "信息传输任务", + "X": 172.68, + "Y": -47.7, + "COMMUNICATION_RANGE": 63.26, + "WEIGHT": 39.5, + "AREA": 282.0, + "MOBILITY": 0.5396024253538947, + "ENVIRONMENT_ADAPTABILITY": 0.780066469715063, + "ANTI_JAMMING_CAPABILITY": 0.6701848320102921, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 59.93143367974675, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 39.0, + "TARGET_RECOGNITION_CAPABILITY": 0.43000895093637875, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-24 10:20:40.770647" + }, + { + "ID": 66, + "TARGET_ID": "FS-法-协同打-066", + "TARGET_NAME": "预警指挥机军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "协同打击", + "TASK_ID": "信息传输任务", + "X": 132.82, + "Y": 53.65, + "COMMUNICATION_RANGE": 69.51, + "WEIGHT": 78.9, + "AREA": 67.0, + "MOBILITY": 0.3554630011598251, + "ENVIRONMENT_ADAPTABILITY": 0.4455297942697237, + "ANTI_JAMMING_CAPABILITY": 0.8098988518507665, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 50.64330380759746, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 45.0, + "TARGET_RECOGNITION_CAPABILITY": 0.45852132249476796, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-24 10:20:40.770447" + }, + { + "ID": 189, + "TARGET_ID": "FS-美-后勤保-189", + "TARGET_NAME": "补给站师级", + "COUNTRY_REGION": "美", + "LEVEL": "师级", + "ROLE_ID": "后勤保障", + "TASK_ID": "侦察监视任务", + "X": -155.89, + "Y": 74.37, + "COMMUNICATION_RANGE": 62.65, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.577923646838552, + "ENVIRONMENT_ADAPTABILITY": 0.6790166806482745, + "ANTI_JAMMING_CAPABILITY": 0.34244583976739146, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 89.1, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 137.3, + "SUPPORT_CAPACITY": 4850.0, + "CREATED_TIME": "2025-08-23 10:20:40.775846" + }, + { + "ID": 86, + "TARGET_ID": "FS-法-情报侦-086", + "TARGET_NAME": "预警机师级", + "COUNTRY_REGION": null, + "LEVEL": "师级", + "ROLE_ID": "情报侦察", + "TASK_ID": "侦察监视任务", + "X": 174.31, + "Y": 69.0, + "COMMUNICATION_RANGE": 120.54, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.08820059232081745, + "ENVIRONMENT_ADAPTABILITY": 0.3069391131590199, + "ANTI_JAMMING_CAPABILITY": 0.8233413766262404, + "DETECTION_RANGE": 427.2348068239967, + "DETECTION_ACCURACY": 0.7697055175587045, + "REFRESH_RATE": 4.8, + "TRANSMISSION_DELAY": 1.58, + "RELIABILITY": 1.034293316904483, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-23 10:20:40.770930" + }, + { + "ID": 75, + "TARGET_ID": "FS-俄-火力打-075", + "TARGET_NAME": "导弹发射营军级", + "COUNTRY_REGION": "俄", + "LEVEL": "军级", + "ROLE_ID": "火力打击", + "TASK_ID": "侦察监视任务", + "X": 98.09, + "Y": -51.67, + "COMMUNICATION_RANGE": 112.21, + "WEIGHT": 38.9, + "AREA": 170.0, + "MOBILITY": 0.32597175902421327, + "ENVIRONMENT_ADAPTABILITY": 0.35715834478505265, + "ANTI_JAMMING_CAPABILITY": 0.7630455578700266, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 33.43155186794122, + "STRIKE_ACCURACY": 0.677758325418563, + "AMMUNITION_RESERVE": 8.0, + "TARGET_RECOGNITION_CAPABILITY": 0.44228749778413956, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-23 10:20:40.770669" + }, + { + "ID": 55, + "TARGET_ID": "FS-中-情报侦-055", + "TARGET_NAME": "预警机军级", + "COUNTRY_REGION": "中", + "LEVEL": "军级", + "ROLE_ID": "情报侦察", + "TASK_ID": "指挥协调任务", + "X": 84.96, + "Y": 31.53, + "COMMUNICATION_RANGE": 185.42, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.02145876532734678, + "ENVIRONMENT_ADAPTABILITY": 0.26069261545448463, + "ANTI_JAMMING_CAPABILITY": 0.6293637307375931, + "DETECTION_RANGE": 148.82984054884983, + "DETECTION_ACCURACY": 1.089100589526097, + "REFRESH_RATE": 3.2, + "TRANSMISSION_DELAY": 1.62, + "RELIABILITY": 0.8390029753327002, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-22 10:20:40.770205" + }, + { + "ID": 35, + "TARGET_ID": "FS-中-火力打-035", + "TARGET_NAME": "自行火炮营旅级", + "COUNTRY_REGION": "中", + "LEVEL": "旅级", + "ROLE_ID": "火力打击", + "TASK_ID": "侦察监视任务", + "X": -165.36, + "Y": -21.33, + "COMMUNICATION_RANGE": 123.38, + "WEIGHT": 59.6, + "AREA": 134.0, + "MOBILITY": 0.31544699353223926, + "ENVIRONMENT_ADAPTABILITY": 0.6112975568848806, + "ANTI_JAMMING_CAPABILITY": 0.5998696750105132, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 64.29116370604244, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 48.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-20 10:20:40.769680" + }, + { + "ID": 9, + "TARGET_ID": "FS-中-情报侦-009", + "TARGET_NAME": "雷达站军级", + "COUNTRY_REGION": "中", + "LEVEL": "军级", + "ROLE_ID": "情报侦察", + "TASK_ID": "信息传输任务", + "X": -23.67, + "Y": 13.7, + "COMMUNICATION_RANGE": 172.81, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.8014979083323386, + "ENVIRONMENT_ADAPTABILITY": 0.08986882621138881, + "ANTI_JAMMING_CAPABILITY": 0.24994027140468678, + "DETECTION_RANGE": 417.53275665562614, + "DETECTION_ACCURACY": 0.7322880324008659, + "REFRESH_RATE": 6.9, + "TRANSMISSION_DELAY": 1.34, + "RELIABILITY": 0.7630113635920568, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-20 10:20:40.768978" + }, + { + "ID": 173, + "TARGET_ID": "FS-法-情报侦-173", + "TARGET_NAME": "侦察机营级", + "COUNTRY_REGION": "法", + "LEVEL": "营级", + "ROLE_ID": "情报侦察", + "TASK_ID": "后勤支援任务", + "X": 30.49, + "Y": -62.01, + "COMMUNICATION_RANGE": 179.06, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.8111074807359475, + "ENVIRONMENT_ADAPTABILITY": 0.027709093499421744, + "ANTI_JAMMING_CAPABILITY": 0.27860457957973983, + "DETECTION_RANGE": 410.02825585518815, + "DETECTION_ACCURACY": 0.9735208249497291, + "REFRESH_RATE": 6.5, + "TRANSMISSION_DELAY": 1.81, + "RELIABILITY": 1.08514510832696, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-15 10:20:40.775378" + }, + { + "ID": 103, + "TARGET_ID": "FS-中-协同打-103", + "TARGET_NAME": "无人机群师级", + "COUNTRY_REGION": "中", + "LEVEL": "师级", + "ROLE_ID": "协同打击", + "TASK_ID": "侦察监视任务", + "X": 0.24, + "Y": 6.340789473684209, + "COMMUNICATION_RANGE": 178.6, + "WEIGHT": 36.4, + "AREA": 166.0, + "MOBILITY": 0.3607479633064833, + "ENVIRONMENT_ADAPTABILITY": 0.8369628825852462, + "ANTI_JAMMING_CAPABILITY": 0.9594754670586298, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 90.69942851949921, + "STRIKE_ACCURACY": 0.8820842305239304, + "AMMUNITION_RESERVE": 18.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-15 10:20:40.771569" + }, + { + "ID": 105, + "TARGET_ID": "FS-英-协同打-105", + "TARGET_NAME": "电子战飞机军级", + "COUNTRY_REGION": "英", + "LEVEL": "军级", + "ROLE_ID": "协同打击", + "TASK_ID": "火力打击任务", + "X": 150.46, + "Y": 0.32, + "COMMUNICATION_RANGE": 142.69, + "WEIGHT": 65.3, + "AREA": 243.0, + "MOBILITY": 0.4932085960315006, + "ENVIRONMENT_ADAPTABILITY": 0.9134935534751947, + "ANTI_JAMMING_CAPABILITY": 0.7337053423978217, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 87.04499396475134, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 27.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-11 10:20:40.771690" + }, + { + "ID": 99, + "TARGET_ID": "FS-俄-指挥控-099", + "TARGET_NAME": null, + "COUNTRY_REGION": "俄", + "LEVEL": "军级", + "ROLE_ID": "指挥控制", + "TASK_ID": "指挥协调任务", + "X": -146.99, + "Y": 45.81, + "COMMUNICATION_RANGE": 141.65, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.17698124873433851, + "ENVIRONMENT_ADAPTABILITY": 0.8706836177902612, + "ANTI_JAMMING_CAPABILITY": 0.9729513082450147, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.17, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 18.4, + "PROCESSING_CAPACITY": 2062.0, + "INFORMATION_FUSION_CAPABILITY": 0.6250004662052193, + "SYSTEM_RELIABILITY": 0.7780425911813181, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-06 10:20:40.771474" + }, + { + "ID": 91, + "TARGET_ID": "FS-中-平台部-091", + "TARGET_NAME": "港口师级", + "COUNTRY_REGION": "中", + "LEVEL": "师级", + "ROLE_ID": "平台部署", + "TASK_ID": "侦察监视任务", + "X": 142.43, + "Y": -61.99, + "COMMUNICATION_RANGE": 154.9, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.9471553801185257, + "ANTI_JAMMING_CAPABILITY": 0.9866746955540099, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 10699.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 5756.0, + "CREATED_TIME": "2025-08-04 10:20:40.771267" + }, + { + "ID": 138, + "TARGET_ID": "FS-中-后勤保-138", + "TARGET_NAME": "补给站师级", + "COUNTRY_REGION": "中", + "LEVEL": "师级", + "ROLE_ID": "后勤保障", + "TASK_ID": "火力打击任务", + "X": 122.1, + "Y": 14.37, + "COMMUNICATION_RANGE": 141.96, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.3785419208046418, + "ENVIRONMENT_ADAPTABILITY": 0.831364504986212, + "ANTI_JAMMING_CAPABILITY": 0.31526326047525893, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 53.1, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 147.0, + "SUPPORT_CAPACITY": 2859.0, + "CREATED_TIME": "2025-08-03 10:20:40.774045" + }, + { + "ID": 28, + "TARGET_ID": "FS-法-火力打-028", + "TARGET_NAME": "自行火炮营营级", + "COUNTRY_REGION": "法", + "LEVEL": "营级", + "ROLE_ID": "火力打击", + "TASK_ID": "指挥协调任务", + "X": -127.35, + "Y": -41.31, + "COMMUNICATION_RANGE": 72.29, + "WEIGHT": 49.6, + "AREA": 224.0, + "MOBILITY": 0.8923631377022831, + "ENVIRONMENT_ADAPTABILITY": 0.6892796733674359, + "ANTI_JAMMING_CAPABILITY": 0.8711467963732124, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 73.35973430698148, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 34.0, + "TARGET_RECOGNITION_CAPABILITY": 0.778647415809443, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-08-02 10:20:40.769507" + }, + { + "ID": 171, + "TARGET_ID": "FS-法-平台部-171", + "TARGET_NAME": "机场师级", + "COUNTRY_REGION": "法", + "LEVEL": "师级", + "ROLE_ID": "平台部署", + "TASK_ID": "后勤支援任务", + "X": -66.88, + "Y": 83.57, + "COMMUNICATION_RANGE": 76.95, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.5497729925228454, + "ANTI_JAMMING_CAPABILITY": 0.656444994998687, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 5912.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 4311.0, + "CREATED_TIME": "2025-07-30 10:20:40.775332" + }, + { + "ID": 162, + "TARGET_ID": "FS-俄-火力打-162", + "TARGET_NAME": "火箭炮营团级", + "COUNTRY_REGION": "俄", + "LEVEL": "团级", + "ROLE_ID": "火力打击", + "TASK_ID": "侦察监视任务", + "X": -70.32, + "Y": -29.69, + "COMMUNICATION_RANGE": 84.86, + "WEIGHT": 60.2, + "AREA": 95.0, + "MOBILITY": 0.8255178097483831, + "ENVIRONMENT_ADAPTABILITY": 0.67048494843378, + "ANTI_JAMMING_CAPABILITY": 0.5216669138601235, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 59.15147625327317, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 30.0, + "TARGET_RECOGNITION_CAPABILITY": 0.6901927273958288, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-07-28 10:20:40.774944" + }, + { + "ID": 89, + "TARGET_ID": "FS-美-情报侦-089", + "TARGET_NAME": "电子侦察站营级", + "COUNTRY_REGION": "美", + "LEVEL": "营级", + "ROLE_ID": "情报侦察", + "TASK_ID": "指挥协调任务", + "X": -32.17, + "Y": -78.07, + "COMMUNICATION_RANGE": 155.53, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.578133834549589, + "ENVIRONMENT_ADAPTABILITY": 0.027884629830007168, + "ANTI_JAMMING_CAPABILITY": 0.26511664138719127, + "DETECTION_RANGE": 129.711853304264, + "DETECTION_ACCURACY": 1.0320669931817459, + "REFRESH_RATE": 4.0, + "TRANSMISSION_DELAY": 1.24, + "RELIABILITY": 0.8035248843314475, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-07-28 10:20:40.771217" + }, + { + "ID": 167, + "TARGET_ID": "FS-俄-指挥控-167", + "TARGET_NAME": "指挥所旅级", + "COUNTRY_REGION": "俄", + "LEVEL": "旅级", + "ROLE_ID": "指挥控制", + "TASK_ID": "侦察监视任务", + "X": 115.74, + "Y": 60.12, + "COMMUNICATION_RANGE": 213.75, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.12898284989072378, + "ENVIRONMENT_ADAPTABILITY": 0.51233034863313, + "ANTI_JAMMING_CAPABILITY": 0.7336640094282811, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.41, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 5.5, + "PROCESSING_CAPACITY": 8779.0, + "INFORMATION_FUSION_CAPABILITY": 1.2500379825666599, + "SYSTEM_RELIABILITY": 0.9277672940580514, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-07-27 10:20:40.775235" + }, + { + "ID": 115, + "TARGET_ID": "FS-美-后勤保-115", + "TARGET_NAME": "医疗站营级", + "COUNTRY_REGION": "美", + "LEVEL": "营级", + "ROLE_ID": "后勤保障", + "TASK_ID": "侦察监视任务", + "X": 12.75, + "Y": 15.19, + "COMMUNICATION_RANGE": 200.0, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.4165788083429389, + "ENVIRONMENT_ADAPTABILITY": 0.7895512870257739, + "ANTI_JAMMING_CAPABILITY": 0.6416943672798164, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 99.0, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 55.6, + "SUPPORT_CAPACITY": 121.0, + "CREATED_TIME": "2025-07-27 10:20:40.771959" + }, + { + "ID": 12, + "TARGET_ID": "FS-法-情报侦-012", + "TARGET_NAME": "雷达站军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "情报侦察", + "TASK_ID": "指挥协调任务", + "X": -10.6, + "Y": -89.88, + "COMMUNICATION_RANGE": 145.99, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0797388067762483, + "ENVIRONMENT_ADAPTABILITY": 0.237392797076161, + "ANTI_JAMMING_CAPABILITY": 0.23641998662192099, + "DETECTION_RANGE": 382.72306777350866, + "DETECTION_ACCURACY": 1.1909174448736064, + "REFRESH_RATE": 1.1, + "TRANSMISSION_DELAY": 0.83, + "RELIABILITY": 0.9704806822982439, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-07-25 10:20:40.769049" + }, + { + "ID": 96, + "TARGET_ID": "FS-俄-火力打-096", + "TARGET_NAME": "导弹发射营师级", + "COUNTRY_REGION": "俄", + "LEVEL": "师级", + "ROLE_ID": "火力打击", + "TASK_ID": "指挥协调任务", + "X": -19.21575757575757, + "Y": 31.82, + "COMMUNICATION_RANGE": 79.63, + "WEIGHT": 77.8, + "AREA": 113.0, + "MOBILITY": 0.8288993514342688, + "ENVIRONMENT_ADAPTABILITY": 0.7478214079538986, + "ANTI_JAMMING_CAPABILITY": 0.7285962540937276, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 75.59991679056289, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 36.0, + "TARGET_RECOGNITION_CAPABILITY": 0.8848326003807503, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-07-23 10:20:40.771402" + }, + { + "ID": 14, + "TARGET_ID": "FS-俄-火力打-014", + "TARGET_NAME": "导弹发射营营级", + "COUNTRY_REGION": "俄", + "LEVEL": "营级", + "ROLE_ID": "火力打击", + "TASK_ID": "侦察监视任务", + "X": -1.62, + "Y": -37.05, + "COMMUNICATION_RANGE": 88.63, + "WEIGHT": 41.4, + "AREA": 164.0, + "MOBILITY": 0.881643495149647, + "ENVIRONMENT_ADAPTABILITY": 0.3836104119771537, + "ANTI_JAMMING_CAPABILITY": 0.7325479827530834, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 49.38183741049906, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 47.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-07-20 10:20:40.769140" + }, + { + "ID": 150, + "TARGET_ID": "FS-英-火力打-150", + "TARGET_NAME": "导弹发射营营级", + "COUNTRY_REGION": "英", + "LEVEL": "营级", + "ROLE_ID": "火力打击", + "TASK_ID": "火力打击任务", + "X": -59.95, + "Y": 35.17, + "COMMUNICATION_RANGE": 73.94, + "WEIGHT": 76.4, + "AREA": 59.0, + "MOBILITY": 0.4546805672226919, + "ENVIRONMENT_ADAPTABILITY": 0.4099554968073637, + "ANTI_JAMMING_CAPABILITY": 0.5932128797717507, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 90.75500709747334, + "STRIKE_ACCURACY": 0.7930851452223326, + "AMMUNITION_RESERVE": 25.0, + "TARGET_RECOGNITION_CAPABILITY": 0.9257886521220692, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-07-18 10:20:40.774499" + }, + { + "ID": 102, + "TARGET_ID": "FS-法-平台部-102", + "TARGET_NAME": "基地营级", + "COUNTRY_REGION": "法", + "LEVEL": "营级", + "ROLE_ID": "平台部署", + "TASK_ID": "火力打击任务", + "X": -53.03, + "Y": -14.62, + "COMMUNICATION_RANGE": 89.55, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.9488568490853748, + "ANTI_JAMMING_CAPABILITY": 0.6273319355736199, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 28094.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 4554.0, + "CREATED_TIME": "2025-07-18 10:20:40.771549" + }, + { + "ID": 155, + "TARGET_ID": "FS-俄-协同打-155", + "TARGET_NAME": "电子战飞机团级", + "COUNTRY_REGION": "俄", + "LEVEL": "团级", + "ROLE_ID": "协同打击", + "TASK_ID": "侦察监视任务", + "X": 131.28, + "Y": 4.51, + "COMMUNICATION_RANGE": 86.88, + "WEIGHT": 75.8, + "AREA": 198.0, + "MOBILITY": 0.899700152698943, + "ENVIRONMENT_ADAPTABILITY": 0.5524274959863358, + "ANTI_JAMMING_CAPABILITY": 0.6182273502440669, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 25.216673552443943, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 22.0, + "TARGET_RECOGNITION_CAPABILITY": 0.7706026796151346, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-07-15 10:20:40.774643" + }, + { + "ID": 17, + "TARGET_ID": "FS-美-协同打-017", + "TARGET_NAME": "预警指挥机团级", + "COUNTRY_REGION": "美", + "LEVEL": "团级", + "ROLE_ID": "协同打击", + "TASK_ID": "指挥协调任务", + "X": -61.05, + "Y": -76.77, + "COMMUNICATION_RANGE": 88.86, + "WEIGHT": 22.2, + "AREA": 257.0, + "MOBILITY": 0.795432279525827, + "ENVIRONMENT_ADAPTABILITY": 0.3860127338916216, + "ANTI_JAMMING_CAPABILITY": 0.6425115374525772, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 48.52733035296181, + "STRIKE_ACCURACY": 0.9455148111748802, + "AMMUNITION_RESERVE": 38.0, + "TARGET_RECOGNITION_CAPABILITY": 0.6070173968172544, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-07-13 10:20:40.769233" + }, + { + "ID": 178, + "TARGET_ID": "FS-英-火力打-178", + "TARGET_NAME": "战斗机大队营级", + "COUNTRY_REGION": "英", + "LEVEL": "营级", + "ROLE_ID": "火力打击", + "TASK_ID": "后勤支援任务", + "X": -40.79, + "Y": -66.36, + "COMMUNICATION_RANGE": 69.1, + "WEIGHT": 40.0, + "AREA": 285.0, + "MOBILITY": 0.8016971241295929, + "ENVIRONMENT_ADAPTABILITY": 0.5169935526484564, + "ANTI_JAMMING_CAPABILITY": 0.8573929734717325, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 75.37697177753435, + "STRIKE_ACCURACY": 0.9293961001827058, + "AMMUNITION_RESERVE": 50.0, + "TARGET_RECOGNITION_CAPABILITY": 0.8203641736651119, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-07-12 10:20:40.775514" + }, + { + "ID": 123, + "TARGET_ID": "FS-美-平台部-123", + "TARGET_NAME": "前进阵地团级", + "COUNTRY_REGION": "美", + "LEVEL": "团级", + "ROLE_ID": "平台部署", + "TASK_ID": "信息传输任务", + "X": 74.87, + "Y": 41.3, + "COMMUNICATION_RANGE": 82.37, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.5749172434353335, + "ANTI_JAMMING_CAPABILITY": 0.7163486683810272, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 16641.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 8567.0, + "CREATED_TIME": "2025-07-10 10:20:40.772766" + }, + { + "ID": 87, + "TARGET_ID": "FS-俄-火力打-087", + "TARGET_NAME": null, + "COUNTRY_REGION": "俄", + "LEVEL": "师级", + "ROLE_ID": "火力打击", + "TASK_ID": "指挥协调任务", + "X": -62.32, + "Y": -30.19, + "COMMUNICATION_RANGE": 75.4, + "WEIGHT": 32.1, + "AREA": 231.0, + "MOBILITY": 0.8283861062638844, + "ENVIRONMENT_ADAPTABILITY": 0.42555963435483796, + "ANTI_JAMMING_CAPABILITY": 0.7157767253330156, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 28.635810391528715, + "STRIKE_ACCURACY": 0.7100324203989974, + "AMMUNITION_RESERVE": 47.0, + "TARGET_RECOGNITION_CAPABILITY": 0.6075181641241532, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-07-10 10:20:40.770954" + }, + { + "ID": 120, + "TARGET_ID": "FS-法-协同打-120", + "TARGET_NAME": "无人机群军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "协同打击", + "TASK_ID": "指挥协调任务", + "X": 155.48, + "Y": -10.42, + "COMMUNICATION_RANGE": 58.56, + "WEIGHT": 70.0, + "AREA": 51.0, + "MOBILITY": 0.30235480611958854, + "ENVIRONMENT_ADAPTABILITY": 0.6594200989321741, + "ANTI_JAMMING_CAPABILITY": 0.6013495713121465, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 47.63937765195213, + "STRIKE_ACCURACY": 0.7040173928520069, + "AMMUNITION_RESERVE": 43.0, + "TARGET_RECOGNITION_CAPABILITY": 0.8378185960996486, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-07-05 10:20:40.772397" + }, + { + "ID": 22, + "TARGET_ID": "FS-俄-后勤保-022", + "TARGET_NAME": "补给站旅级", + "COUNTRY_REGION": "俄", + "LEVEL": "旅级", + "ROLE_ID": "后勤保障", + "TASK_ID": "指挥协调任务", + "X": 111.85, + "Y": 12.73, + "COMMUNICATION_RANGE": 1138.75, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.26922273786981027, + "ENVIRONMENT_ADAPTABILITY": 0.799158068461562, + "ANTI_JAMMING_CAPABILITY": 0.6477047143465469, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 40.1, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 176.2, + "SUPPORT_CAPACITY": 3140.0, + "CREATED_TIME": "2025-07-01 10:20:40.769352" + }, + { + "ID": 136, + "TARGET_ID": "FS-法-指挥控-136", + "TARGET_NAME": "指挥所师级", + "COUNTRY_REGION": "法", + "LEVEL": "师级", + "ROLE_ID": "指挥控制", + "TASK_ID": "后勤支援任务", + "X": 73.85, + "Y": 89.17, + "COMMUNICATION_RANGE": 1221.96, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.1940094303238898, + "ENVIRONMENT_ADAPTABILITY": 0.4318100982784139, + "ANTI_JAMMING_CAPABILITY": 0.884804628917666, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.3, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 13.6, + "PROCESSING_CAPACITY": 5134.0, + "INFORMATION_FUSION_CAPABILITY": 0.8348205666722968, + "SYSTEM_RELIABILITY": 0.7234738994541473, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-29 10:20:40.773984" + }, + { + "ID": 1, + "TARGET_ID": "FS-美-火力打-001", + "TARGET_NAME": "自行火炮营团级", + "COUNTRY_REGION": "美", + "LEVEL": "团级", + "ROLE_ID": "火力打击", + "TASK_ID": "后勤支援任务", + "X": -176.33, + "Y": 32.86, + "COMMUNICATION_RANGE": 1247.79, + "WEIGHT": 61.4, + "AREA": 61.0, + "MOBILITY": 0.42564788906877454, + "ENVIRONMENT_ADAPTABILITY": 0.8719114753110979, + "ANTI_JAMMING_CAPABILITY": 0.9860468773991046, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 41.548228645122435, + "STRIKE_ACCURACY": 0.8895009924675765, + "AMMUNITION_RESERVE": 43.0, + "TARGET_RECOGNITION_CAPABILITY": 0.4417775292582004, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-29 10:20:40.768594" + }, + { + "ID": 146, + "TARGET_ID": "FS-俄-平台部-146", + "TARGET_NAME": "前进阵地旅级", + "COUNTRY_REGION": "俄", + "LEVEL": "旅级", + "ROLE_ID": "平台部署", + "TASK_ID": "信息传输任务", + "X": -121.63, + "Y": -56.83, + "COMMUNICATION_RANGE": 104.83, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.5831442269623655, + "ANTI_JAMMING_CAPABILITY": 0.8308135747527201, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 41912.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 4920.0, + "CREATED_TIME": "2025-06-28 10:20:40.774389" + }, + { + "ID": 41, + "TARGET_ID": "FS-俄-协同打-041", + "TARGET_NAME": "预警指挥机师级", + "COUNTRY_REGION": "俄", + "LEVEL": "师级", + "ROLE_ID": "协同打击", + "TASK_ID": "指挥协调任务", + "X": 114.58, + "Y": 41.7, + "COMMUNICATION_RANGE": 17.27, + "WEIGHT": 66.9, + "AREA": 130.0, + "MOBILITY": 0.9265275121477672, + "ENVIRONMENT_ADAPTABILITY": 0.8305586308767334, + "ANTI_JAMMING_CAPABILITY": 0.42207112038766614, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 20.00512391023709, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 45.0, + "TARGET_RECOGNITION_CAPABILITY": 0.5596988945816239, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-28 10:20:40.769814" + }, + { + "ID": 97, + "TARGET_ID": "FS-中-指挥控-097", + "TARGET_NAME": "作战中心军级", + "COUNTRY_REGION": "中", + "LEVEL": "军级", + "ROLE_ID": "指挥控制", + "TASK_ID": "侦察监视任务", + "X": -61.48, + "Y": 5.78, + "COMMUNICATION_RANGE": 116.74, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.40395529492609045, + "ENVIRONMENT_ADAPTABILITY": 0.799651547916246, + "ANTI_JAMMING_CAPABILITY": 0.6640889319779443, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.48, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 21.0, + "PROCESSING_CAPACITY": 5331.0, + "INFORMATION_FUSION_CAPABILITY": 0.511050761459074, + "SYSTEM_RELIABILITY": 0.8213883963584124, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-27 10:20:40.771426" + }, + { + "ID": 134, + "TARGET_ID": "FS-英-协同打-134", + "TARGET_NAME": "预警指挥机旅级", + "COUNTRY_REGION": null, + "LEVEL": "旅级", + "ROLE_ID": "协同打击", + "TASK_ID": "侦察监视任务", + "X": 81.81, + "Y": 26.38, + "COMMUNICATION_RANGE": 163.59, + "WEIGHT": 67.8, + "AREA": 238.0, + "MOBILITY": 0.8669623997331974, + "ENVIRONMENT_ADAPTABILITY": 0.921549275500473, + "ANTI_JAMMING_CAPABILITY": 0.6993837268467451, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 24.373420961465513, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 39.0, + "TARGET_RECOGNITION_CAPABILITY": 0.7130767900452348, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-26 10:20:40.773880" + }, + { + "ID": 84, + "TARGET_ID": "FS-法-协同打-084", + "TARGET_NAME": "无人机群团级", + "COUNTRY_REGION": "法", + "LEVEL": "团级", + "ROLE_ID": "协同打击", + "TASK_ID": "信息传输任务", + "X": 104.98, + "Y": -34.65, + "COMMUNICATION_RANGE": 162.41, + "WEIGHT": 35.9, + "AREA": 224.0, + "MOBILITY": 0.4728236034541934, + "ENVIRONMENT_ADAPTABILITY": 0.828159583359076, + "ANTI_JAMMING_CAPABILITY": 0.954188442347893, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 86.89719570923165, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 13.0, + "TARGET_RECOGNITION_CAPABILITY": 0.9367329512621352, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-24 10:20:40.770884" + }, + { + "ID": 165, + "TARGET_ID": "FS-美-平台部-165", + "TARGET_NAME": "基地军级", + "COUNTRY_REGION": "美", + "LEVEL": "军级", + "ROLE_ID": "平台部署", + "TASK_ID": "信息传输任务", + "X": -149.48, + "Y": -57.04, + "COMMUNICATION_RANGE": 91.24, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.6972652539736638, + "ANTI_JAMMING_CAPABILITY": 0.8500069107288136, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 43702.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 4357.0, + "CREATED_TIME": "2025-06-23 10:20:40.775168" + }, + { + "ID": 188, + "TARGET_ID": "FS-法-平台部-188", + "TARGET_NAME": "机场旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "平台部署", + "TASK_ID": "后勤支援任务", + "X": 23.87, + "Y": 84.48, + "COMMUNICATION_RANGE": 135.29, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.941551244668853, + "ANTI_JAMMING_CAPABILITY": 0.8258294756073624, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 19534.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 4026.0, + "CREATED_TIME": "2025-06-21 10:20:40.775821" + }, + { + "ID": 109, + "TARGET_ID": "FS-中-协同打-109", + "TARGET_NAME": "预警指挥机师级", + "COUNTRY_REGION": "中", + "LEVEL": "师级", + "ROLE_ID": "协同打击", + "TASK_ID": "火力打击任务", + "X": -152.3, + "Y": 29.24, + "COMMUNICATION_RANGE": 129.29, + "WEIGHT": 54.9, + "AREA": 93.0, + "MOBILITY": 0.5353698464941787, + "ENVIRONMENT_ADAPTABILITY": 0.8264210340349565, + "ANTI_JAMMING_CAPABILITY": 0.9550894829800445, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 64.69068162911445, + "STRIKE_ACCURACY": 0.7233009704287799, + "AMMUNITION_RESERVE": 43.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-20 10:20:40.771797" + }, + { + "ID": 194, + "TARGET_ID": "FS-美-后勤保-194", + "TARGET_NAME": "医疗站营级", + "COUNTRY_REGION": null, + "LEVEL": "营级", + "ROLE_ID": "后勤保障", + "TASK_ID": "信息传输任务", + "X": -118.26, + "Y": -27.2, + "COMMUNICATION_RANGE": 82.22, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.4092381612931166, + "ENVIRONMENT_ADAPTABILITY": 0.5173191675958022, + "ANTI_JAMMING_CAPABILITY": 0.7028911092310597, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 87.2, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 106.4, + "SUPPORT_CAPACITY": 4328.0, + "CREATED_TIME": "2025-06-15 10:20:40.776010" + }, + { + "ID": 193, + "TARGET_ID": "FS-中-协同打-193", + "TARGET_NAME": "预警指挥机师级", + "COUNTRY_REGION": "中", + "LEVEL": "师级", + "ROLE_ID": "协同打击", + "TASK_ID": "火力打击任务", + "X": -80.02, + "Y": 74.68, + "COMMUNICATION_RANGE": 53.08, + "WEIGHT": 65.8, + "AREA": 143.0, + "MOBILITY": 0.7468541493923406, + "ENVIRONMENT_ADAPTABILITY": 0.689792599061401, + "ANTI_JAMMING_CAPABILITY": 0.6549099356560406, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 18.953105666422097, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 9.0, + "TARGET_RECOGNITION_CAPABILITY": 0.9402505727549403, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-15 10:20:40.775972" + }, + { + "ID": 18, + "TARGET_ID": "FS-法-协同打-018", + "TARGET_NAME": "无人机群营级", + "COUNTRY_REGION": "法", + "LEVEL": "营级", + "ROLE_ID": "协同打击", + "TASK_ID": "指挥协调任务", + "X": 45.47, + "Y": -43.93, + "COMMUNICATION_RANGE": 62.84, + "WEIGHT": 65.1, + "AREA": 124.0, + "MOBILITY": 0.3543563874221979, + "ENVIRONMENT_ADAPTABILITY": 0.8417871714544114, + "ANTI_JAMMING_CAPABILITY": 0.924860082899791, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 90.69112852357011, + "STRIKE_ACCURACY": 0.5039734399076427, + "AMMUNITION_RESERVE": 12.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-15 10:20:40.769259" + }, + { + "ID": 62, + "TARGET_ID": "FS-法-后勤保-062", + "TARGET_NAME": "油料库师级", + "COUNTRY_REGION": "法", + "LEVEL": "师级", + "ROLE_ID": "后勤保障", + "TASK_ID": "火力打击任务", + "X": -25.58, + "Y": -54.57, + "COMMUNICATION_RANGE": 64.9, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.6767827230597143, + "ENVIRONMENT_ADAPTABILITY": 0.4416111113251431, + "ANTI_JAMMING_CAPABILITY": 0.4261780496845124, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 90.6, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 170.2, + "SUPPORT_CAPACITY": 4611.0, + "CREATED_TIME": "2025-06-14 10:20:40.770363" + }, + { + "ID": 141, + "TARGET_ID": "FS-俄-指挥控-141", + "TARGET_NAME": "数据中心师级", + "COUNTRY_REGION": "俄", + "LEVEL": "师级", + "ROLE_ID": "指挥控制", + "TASK_ID": "信息传输任务", + "X": -45.32, + "Y": -86.08, + "COMMUNICATION_RANGE": 127.44, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.49245797490338156, + "ENVIRONMENT_ADAPTABILITY": 0.6449855071685919, + "ANTI_JAMMING_CAPABILITY": 0.8016169385117697, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.76, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 29.2, + "PROCESSING_CAPACITY": 5822.0, + "INFORMATION_FUSION_CAPABILITY": 0.45269369851445146, + "SYSTEM_RELIABILITY": 0.9600844917078736, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-13 10:20:40.774191" + }, + { + "ID": 81, + "TARGET_ID": "FS-美-情报侦-081", + "TARGET_NAME": "电子侦察站团级", + "COUNTRY_REGION": "美", + "LEVEL": "团级", + "ROLE_ID": "情报侦察", + "TASK_ID": "指挥协调任务", + "X": -103.79, + "Y": -10.138125, + "COMMUNICATION_RANGE": 158.87, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 1.0, + "ENVIRONMENT_ADAPTABILITY": 0.8781268277888904, + "ANTI_JAMMING_CAPABILITY": 0.5373759988580749, + "DETECTION_RANGE": 300.0280862730973, + "DETECTION_ACCURACY": 0.9452909615814071, + "REFRESH_RATE": 2.2, + "TRANSMISSION_DELAY": 1.82, + "RELIABILITY": 0.6659526659802996, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-13 10:20:40.770813" + }, + { + "ID": 77, + "TARGET_ID": "FS-美-后勤保-077", + "TARGET_NAME": "医疗站师级", + "COUNTRY_REGION": "美", + "LEVEL": "师级", + "ROLE_ID": "后勤保障", + "TASK_ID": "火力打击任务", + "X": -159.1, + "Y": 78.0, + "COMMUNICATION_RANGE": 157.74, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.7564119650730661, + "ENVIRONMENT_ADAPTABILITY": 0.4947513015559231, + "ANTI_JAMMING_CAPABILITY": 0.7325771034249081, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 93.7, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 189.7, + "SUPPORT_CAPACITY": 4414.0, + "CREATED_TIME": "2025-06-11 10:20:40.770718" + }, + { + "ID": 78, + "TARGET_ID": "FS-美-指挥控-078", + "TARGET_NAME": "通信中继站营级", + "COUNTRY_REGION": "美", + "LEVEL": "营级", + "ROLE_ID": "指挥控制", + "TASK_ID": "侦察监视任务", + "X": 76.36, + "Y": -17.44, + "COMMUNICATION_RANGE": 104.46, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.046537537876798374, + "ENVIRONMENT_ADAPTABILITY": 0.7023518192046856, + "ANTI_JAMMING_CAPABILITY": 0.5997882249379117, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.99, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 20.6, + "PROCESSING_CAPACITY": 4465.0, + "INFORMATION_FUSION_CAPABILITY": 1.2480267910698957, + "SYSTEM_RELIABILITY": 0.7161873380158522, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-08 10:20:40.770739" + }, + { + "ID": 6, + "TARGET_ID": "FS-美-指挥控-006", + "TARGET_NAME": "数据中心旅级", + "COUNTRY_REGION": "美", + "LEVEL": "旅级", + "ROLE_ID": "指挥控制", + "TASK_ID": "侦察监视任务", + "X": 12.06, + "Y": -31.33, + "COMMUNICATION_RANGE": 219.63, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.16653364307943486, + "ENVIRONMENT_ADAPTABILITY": 0.45923129381502054, + "ANTI_JAMMING_CAPABILITY": 0.5483938647034144, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.74, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 21.2, + "PROCESSING_CAPACITY": 4119.0, + "INFORMATION_FUSION_CAPABILITY": 0.5604719071656301, + "SYSTEM_RELIABILITY": 0.633956758755577, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-04 10:20:40.768904" + }, + { + "ID": 181, + "TARGET_ID": "FS-俄-后勤保-181", + "TARGET_NAME": "补给站团级", + "COUNTRY_REGION": "俄", + "LEVEL": "团级", + "ROLE_ID": "后勤保障", + "TASK_ID": "火力打击任务", + "X": -31.16, + "Y": -62.94, + "COMMUNICATION_RANGE": 221.46, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.5735909772575809, + "ENVIRONMENT_ADAPTABILITY": 0.6617358915997936, + "ANTI_JAMMING_CAPABILITY": 0.5117706785028246, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 82.4, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 134.8, + "SUPPORT_CAPACITY": 4470.0, + "CREATED_TIME": "2025-06-03 10:20:40.775595" + }, + { + "ID": 82, + "TARGET_ID": "FS-美-协同打-082", + "TARGET_NAME": "预警指挥机军级", + "COUNTRY_REGION": "美", + "LEVEL": "军级", + "ROLE_ID": "协同打击", + "TASK_ID": "侦察监视任务", + "X": -100.29, + "Y": -28.91, + "COMMUNICATION_RANGE": 204.86, + "WEIGHT": 45.6, + "AREA": 55.0, + "MOBILITY": 0.6260068597611019, + "ENVIRONMENT_ADAPTABILITY": 0.5451198886711976, + "ANTI_JAMMING_CAPABILITY": 0.7798866960125045, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 98.57517408374902, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 5.0, + "TARGET_RECOGNITION_CAPABILITY": 0.5018548760106021, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-06-03 10:20:40.770836" + }, + { + "ID": 7, + "TARGET_ID": "FS-中-协同打-007", + "TARGET_NAME": "预警指挥机团级", + "COUNTRY_REGION": "中", + "LEVEL": "团级", + "ROLE_ID": "协同打击", + "TASK_ID": "指挥协调任务", + "X": -160.58, + "Y": 86.72, + "COMMUNICATION_RANGE": 56.92, + "WEIGHT": 34.8, + "AREA": 108.0, + "MOBILITY": 0.8418959990052168, + "ENVIRONMENT_ADAPTABILITY": 0.3530710066286552, + "ANTI_JAMMING_CAPABILITY": 0.9965912957743314, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 39.268142578293975, + "STRIKE_ACCURACY": 0.6387574270477663, + "AMMUNITION_RESERVE": 45.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-05-30 10:20:40.768930" + }, + { + "ID": 76, + "TARGET_ID": "FS-俄-协同打-076", + "TARGET_NAME": "电子战飞机营级", + "COUNTRY_REGION": "俄", + "LEVEL": "营级", + "ROLE_ID": "协同打击", + "TASK_ID": "侦察监视任务", + "X": -50.95, + "Y": -4.28, + "COMMUNICATION_RANGE": 65.58, + "WEIGHT": 68.6, + "AREA": 210.0, + "MOBILITY": 0.5469519520457505, + "ENVIRONMENT_ADAPTABILITY": 0.4921191208699936, + "ANTI_JAMMING_CAPABILITY": 0.5860378050549777, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 87.089099648513, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 6.0, + "TARGET_RECOGNITION_CAPABILITY": 0.8917744732672083, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-05-26 10:20:40.770693" + }, + { + "ID": 153, + "TARGET_ID": "FS-中-平台部-153", + "TARGET_NAME": "港口旅级", + "COUNTRY_REGION": "中", + "LEVEL": "旅级", + "ROLE_ID": "平台部署", + "TASK_ID": "指挥协调任务", + "X": -170.19, + "Y": -44.57, + "COMMUNICATION_RANGE": 92.24, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.746002745173314, + "ANTI_JAMMING_CAPABILITY": 0.807743378372854, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 15892.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 8075.0, + "CREATED_TIME": "2025-05-23 10:20:40.774593" + }, + { + "ID": 13, + "TARGET_ID": "FS-英-指挥控-013", + "TARGET_NAME": "作战中心师级", + "COUNTRY_REGION": "英", + "LEVEL": "师级", + "ROLE_ID": "指挥控制", + "TASK_ID": "侦察监视任务", + "X": 120.99, + "Y": 13.77, + "COMMUNICATION_RANGE": 195.25, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.22636648740168702, + "ENVIRONMENT_ADAPTABILITY": 0.4430748612370031, + "ANTI_JAMMING_CAPABILITY": 0.6378322327831123, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.82, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 26.1, + "PROCESSING_CAPACITY": 767.0, + "INFORMATION_FUSION_CAPABILITY": 0.501785330200301, + "SYSTEM_RELIABILITY": 0.9933702463336052, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-05-22 10:20:40.769073" + }, + { + "ID": 58, + "TARGET_ID": "FS-法-后勤保-058", + "TARGET_NAME": "医疗站军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "后勤保障", + "TASK_ID": "侦察监视任务", + "X": 0.59, + "Y": 66.29, + "COMMUNICATION_RANGE": 185.05, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.35491221639424797, + "ENVIRONMENT_ADAPTABILITY": 0.6905655902704224, + "ANTI_JAMMING_CAPABILITY": 0.5211386963992168, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 12.7, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 129.3, + "SUPPORT_CAPACITY": 638.0, + "CREATED_TIME": "2025-05-21 10:20:40.770276" + }, + { + "ID": 176, + "TARGET_ID": "FS-美-协同打-176", + "TARGET_NAME": "无人机群营级", + "COUNTRY_REGION": null, + "LEVEL": "营级", + "ROLE_ID": "协同打击", + "TASK_ID": "后勤支援任务", + "X": -86.89, + "Y": 76.54, + "COMMUNICATION_RANGE": 151.53, + "WEIGHT": 26.1, + "AREA": 234.0, + "MOBILITY": 0.6857222756263284, + "ENVIRONMENT_ADAPTABILITY": 0.8440485557734743, + "ANTI_JAMMING_CAPABILITY": 0.6826603663261064, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 91.5968633445027, + "STRIKE_ACCURACY": 0.6681101221676765, + "AMMUNITION_RESERVE": 15.0, + "TARGET_RECOGNITION_CAPABILITY": 0.7066973375784653, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-05-20 10:20:40.775460" + }, + { + "ID": 163, + "TARGET_ID": "FS-俄-火力打-163", + "TARGET_NAME": "导弹发射营旅级", + "COUNTRY_REGION": "俄", + "LEVEL": "旅级", + "ROLE_ID": "火力打击", + "TASK_ID": "指挥协调任务", + "X": -155.08, + "Y": 47.36, + "COMMUNICATION_RANGE": 43.29, + "WEIGHT": 41.5, + "AREA": 286.0, + "MOBILITY": 0.763006365208842, + "ENVIRONMENT_ADAPTABILITY": 0.8489290569098005, + "ANTI_JAMMING_CAPABILITY": 0.4581742921079944, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 96.28607447959257, + "STRIKE_ACCURACY": 0.69922377633791, + "AMMUNITION_RESERVE": 7.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-05-20 10:20:40.775003" + }, + { + "ID": 59, + "TARGET_ID": "FS-美-后勤保-059", + "TARGET_NAME": "维修站旅级", + "COUNTRY_REGION": "美", + "LEVEL": "旅级", + "ROLE_ID": "后勤保障", + "TASK_ID": "后勤支援任务", + "X": -87.14, + "Y": 85.28, + "COMMUNICATION_RANGE": 35.62, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.44437577899873415, + "ENVIRONMENT_ADAPTABILITY": 0.43541680856210563, + "ANTI_JAMMING_CAPABILITY": 0.6995796155801299, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 78.9, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 117.4, + "SUPPORT_CAPACITY": 2055.0, + "CREATED_TIME": "2025-05-20 10:20:40.770298" + }, + { + "ID": 179, + "TARGET_ID": "FS-法-火力打-179", + "TARGET_NAME": "战斗机大队团级", + "COUNTRY_REGION": "法", + "LEVEL": "团级", + "ROLE_ID": "火力打击", + "TASK_ID": "火力打击任务", + "X": -105.68, + "Y": -39.29, + "COMMUNICATION_RANGE": 41.51, + "WEIGHT": 74.2, + "AREA": 242.0, + "MOBILITY": 0.5438770284244258, + "ENVIRONMENT_ADAPTABILITY": 0.629804844042027, + "ANTI_JAMMING_CAPABILITY": 0.6780581555071221, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 19.217580669345303, + "STRIKE_ACCURACY": 0.6214389830853697, + "AMMUNITION_RESERVE": 15.0, + "TARGET_RECOGNITION_CAPABILITY": 0.7501738461872707, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-05-17 10:20:40.775538" + }, + { + "ID": 170, + "TARGET_ID": "FS-美-后勤保-170", + "TARGET_NAME": "油料库旅级", + "COUNTRY_REGION": "美", + "LEVEL": "旅级", + "ROLE_ID": "后勤保障", + "TASK_ID": "指挥协调任务", + "X": -13.06, + "Y": -73.16, + "COMMUNICATION_RANGE": 41.63, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.5811770264551491, + "ENVIRONMENT_ADAPTABILITY": 0.5980654032913031, + "ANTI_JAMMING_CAPABILITY": 0.6802259732224611, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 83.7, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 148.8, + "SUPPORT_CAPACITY": 4646.0, + "CREATED_TIME": "2025-05-17 10:20:40.775306" + }, + { + "ID": 128, + "TARGET_ID": "FS-英-指挥控-128", + "TARGET_NAME": "通信中继站团级", + "COUNTRY_REGION": "英", + "LEVEL": "团级", + "ROLE_ID": "指挥控制", + "TASK_ID": "信息传输任务", + "X": 88.93, + "Y": -72.29, + "COMMUNICATION_RANGE": 100.11, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.11968611785787592, + "ENVIRONMENT_ADAPTABILITY": 0.5358766609097231, + "ANTI_JAMMING_CAPABILITY": 0.8592664542493602, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.94, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 244.4630971632028, + "PROCESSING_CAPACITY": 2810.0, + "INFORMATION_FUSION_CAPABILITY": 0.42265585832527247, + "SYSTEM_RELIABILITY": 0.8451069493025585, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-05-15 10:20:40.773611" + }, + { + "ID": 107, + "TARGET_ID": "FS-俄-后勤保-107", + "TARGET_NAME": "维修站军级", + "COUNTRY_REGION": "俄", + "LEVEL": "军级", + "ROLE_ID": "后勤保障", + "TASK_ID": "信息传输任务", + "X": -3.69, + "Y": 29.16, + "COMMUNICATION_RANGE": 91.94, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.4481426857608354, + "ENVIRONMENT_ADAPTABILITY": 0.5558696695626, + "ANTI_JAMMING_CAPABILITY": 0.6226182328960213, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 34.1, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 150.7, + "SUPPORT_CAPACITY": 1587.0, + "CREATED_TIME": "2025-05-14 10:20:40.771749" + }, + { + "ID": 117, + "TARGET_ID": "FS-法-指挥控-117", + "TARGET_NAME": "作战中心军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "指挥控制", + "TASK_ID": "侦察监视任务", + "X": -173.4, + "Y": 60.77, + "COMMUNICATION_RANGE": 183.19, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.45709562427289413, + "ENVIRONMENT_ADAPTABILITY": 0.7127797691418672, + "ANTI_JAMMING_CAPABILITY": 0.6234051228857703, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.48, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 4.1, + "PROCESSING_CAPACITY": 3496.0, + "INFORMATION_FUSION_CAPABILITY": 0.436597195039313, + "SYSTEM_RELIABILITY": 0.7234488054921726, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-05-12 10:20:40.772012" + }, + { + "ID": 164, + "TARGET_ID": "FS-英-指挥控-164", + "TARGET_NAME": "作战中心师级", + "COUNTRY_REGION": "英", + "LEVEL": "师级", + "ROLE_ID": "指挥控制", + "TASK_ID": "后勤支援任务", + "X": 44.63, + "Y": 56.91, + "COMMUNICATION_RANGE": 244.01, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.18926923585693745, + "ENVIRONMENT_ADAPTABILITY": 0.6948256460189554, + "ANTI_JAMMING_CAPABILITY": 0.5052720061495848, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.49, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 18.0, + "PROCESSING_CAPACITY": 5926.0, + "INFORMATION_FUSION_CAPABILITY": 0.6744075981565485, + "SYSTEM_RELIABILITY": 0.7784253110256918, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-05-08 10:20:40.775060" + }, + { + "ID": 198, + "TARGET_ID": "FS-法-情报侦-198", + "TARGET_NAME": "侦察卫星军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "情报侦察", + "TASK_ID": "侦察监视任务", + "X": -35.55, + "Y": -16.97, + "COMMUNICATION_RANGE": 335.47, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.7179998145912513, + "ENVIRONMENT_ADAPTABILITY": 0.2942332833580382, + "ANTI_JAMMING_CAPABILITY": 0.13249844267154642, + "DETECTION_RANGE": 186.02367668791365, + "DETECTION_ACCURACY": 1.0557490344916483, + "REFRESH_RATE": 1.2, + "TRANSMISSION_DELAY": 1.25, + "RELIABILITY": 1.0498381584690075, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-05-07 10:20:40.776148" + }, + { + "ID": 139, + "TARGET_ID": "FS-俄-后勤保-139", + "TARGET_NAME": "补给站师级", + "COUNTRY_REGION": "俄", + "LEVEL": "师级", + "ROLE_ID": "后勤保障", + "TASK_ID": "指挥协调任务", + "X": -23.55, + "Y": -38.21, + "COMMUNICATION_RANGE": 239.49, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.7197912288341608, + "ENVIRONMENT_ADAPTABILITY": 0.4158433847415176, + "ANTI_JAMMING_CAPABILITY": 0.7162763599164875, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 71.2, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 68.1, + "SUPPORT_CAPACITY": 1514.0, + "CREATED_TIME": "2025-05-07 10:20:40.774069" + }, + { + "ID": 94, + "TARGET_ID": "FS-美-火力打-094", + "TARGET_NAME": "导弹发射营营级", + "COUNTRY_REGION": "美", + "LEVEL": "营级", + "ROLE_ID": "火力打击", + "TASK_ID": "指挥协调任务", + "X": -128.58, + "Y": 53.89, + "COMMUNICATION_RANGE": 140.89, + "WEIGHT": 21.5, + "AREA": 256.0, + "MOBILITY": 0.33160458013015265, + "ENVIRONMENT_ADAPTABILITY": 0.939066643498953, + "ANTI_JAMMING_CAPABILITY": 0.8412802454995514, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 71.50064052448745, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 7.0, + "TARGET_RECOGNITION_CAPABILITY": 0.7795663079575479, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-05-03 10:20:40.771354" + }, + { + "ID": 130, + "TARGET_ID": "FS-中-情报侦-130", + "TARGET_NAME": "雷达站团级", + "COUNTRY_REGION": "中", + "LEVEL": "团级", + "ROLE_ID": "情报侦察", + "TASK_ID": "火力打击任务", + "X": -165.22, + "Y": -14.2, + "COMMUNICATION_RANGE": 76.52, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.11381345767922388, + "ENVIRONMENT_ADAPTABILITY": 0.03197032644435194, + "ANTI_JAMMING_CAPABILITY": 0.5546222157940126, + "DETECTION_RANGE": 450.3400648536175, + "DETECTION_ACCURACY": 0.9004205581018352, + "REFRESH_RATE": 5.0, + "TRANSMISSION_DELAY": 0.12, + "RELIABILITY": 0.7967741485026053, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-04-29 10:20:40.773744" + }, + { + "ID": 185, + "TARGET_ID": "FS-英-协同打-185", + "TARGET_NAME": "无人机群团级", + "COUNTRY_REGION": "英", + "LEVEL": "团级", + "ROLE_ID": "协同打击", + "TASK_ID": "火力打击任务", + "X": -26.63, + "Y": 43.17, + "COMMUNICATION_RANGE": 100.07, + "WEIGHT": 73.2, + "AREA": 164.0, + "MOBILITY": 0.4840730804973151, + "ENVIRONMENT_ADAPTABILITY": 0.5475148927030214, + "ANTI_JAMMING_CAPABILITY": 0.8529137209157185, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 10.513144084094835, + "STRIKE_ACCURACY": 0.909030667061954, + "AMMUNITION_RESERVE": 8.0, + "TARGET_RECOGNITION_CAPABILITY": 0.7925078681624562, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-04-28 10:20:40.775751" + }, + { + "ID": 16, + "TARGET_ID": "FS-俄-平台部-016", + "TARGET_NAME": "基地营级", + "COUNTRY_REGION": "俄", + "LEVEL": "营级", + "ROLE_ID": "平台部署", + "TASK_ID": "火力打击任务", + "X": -149.36, + "Y": -64.42, + "COMMUNICATION_RANGE": 90.37, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.811143948782188, + "ANTI_JAMMING_CAPABILITY": 0.8993529987597684, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 34235.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 6413.0, + "CREATED_TIME": "2025-04-28 10:20:40.769203" + }, + { + "ID": 129, + "TARGET_ID": "FS-中-协同打-129", + "TARGET_NAME": "电子战飞机师级", + "COUNTRY_REGION": "中", + "LEVEL": "师级", + "ROLE_ID": "协同打击", + "TASK_ID": "信息传输任务", + "X": 143.98, + "Y": 79.64, + "COMMUNICATION_RANGE": 78.06, + "WEIGHT": 79.0, + "AREA": 261.0, + "MOBILITY": 0.9854401508201234, + "ENVIRONMENT_ADAPTABILITY": 0.9288237708735576, + "ANTI_JAMMING_CAPABILITY": 0.873499163759641, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 66.65474015077658, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 7.0, + "TARGET_RECOGNITION_CAPABILITY": 0.6430929345773507, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-04-20 10:20:40.773703" + }, + { + "ID": 168, + "TARGET_ID": "FS-英-后勤保-168", + "TARGET_NAME": "油料库军级", + "COUNTRY_REGION": "英", + "LEVEL": "军级", + "ROLE_ID": "后勤保障", + "TASK_ID": "指挥协调任务", + "X": 149.6, + "Y": 59.12, + "COMMUNICATION_RANGE": 61.38, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.41367753082299275, + "ENVIRONMENT_ADAPTABILITY": 0.4696035718004009, + "ANTI_JAMMING_CAPABILITY": 0.409823806283593, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 43.4, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 52.2, + "SUPPORT_CAPACITY": 4330.0, + "CREATED_TIME": "2025-04-19 10:20:40.775258" + }, + { + "ID": 174, + "TARGET_ID": "FS-中-火力打-174", + "TARGET_NAME": "自行火炮营旅级", + "COUNTRY_REGION": "中", + "LEVEL": "旅级", + "ROLE_ID": "火力打击", + "TASK_ID": "侦察监视任务", + "X": -173.96, + "Y": 8.32, + "COMMUNICATION_RANGE": 55.79, + "WEIGHT": 75.7, + "AREA": 193.0, + "MOBILITY": 0.8392160598568286, + "ENVIRONMENT_ADAPTABILITY": 0.8967011404937146, + "ANTI_JAMMING_CAPABILITY": 0.6997256443998301, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 34.56085849238408, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 25.0, + "TARGET_RECOGNITION_CAPABILITY": 0.4301862590303774, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-04-16 10:20:40.775403" + }, + { + "ID": 65, + "TARGET_ID": "FS-英-后勤保-065", + "TARGET_NAME": "医疗站旅级", + "COUNTRY_REGION": "英", + "LEVEL": "旅级", + "ROLE_ID": "后勤保障", + "TASK_ID": "后勤支援任务", + "X": 127.59, + "Y": -23.61, + "COMMUNICATION_RANGE": 42.31, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.3412052696553679, + "ENVIRONMENT_ADAPTABILITY": 0.5347511050322685, + "ANTI_JAMMING_CAPABILITY": 0.6459119965012923, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 39.3, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 165.0, + "SUPPORT_CAPACITY": 204.0, + "CREATED_TIME": "2025-04-10 10:20:40.770426" + }, + { + "ID": 73, + "TARGET_ID": "FS-俄-协同打-073", + "TARGET_NAME": "无人机群军级", + "COUNTRY_REGION": "俄", + "LEVEL": "军级", + "ROLE_ID": "协同打击", + "TASK_ID": "火力打击任务", + "X": 32.6, + "Y": 64.82, + "COMMUNICATION_RANGE": 59.3, + "WEIGHT": 39.5, + "AREA": 114.0, + "MOBILITY": 0.9821459459755617, + "ENVIRONMENT_ADAPTABILITY": 0.999817994574711, + "ANTI_JAMMING_CAPABILITY": 0.7548437050820773, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 78.9319607513377, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 18.0, + "TARGET_RECOGNITION_CAPABILITY": 0.9480303041495991, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-04-01 10:20:40.770623" + }, + { + "ID": 30, + "TARGET_ID": "FS-法-指挥控-030", + "TARGET_NAME": "指挥所师级", + "COUNTRY_REGION": "法", + "LEVEL": "师级", + "ROLE_ID": "指挥控制", + "TASK_ID": "后勤支援任务", + "X": 69.0, + "Y": -77.02, + "COMMUNICATION_RANGE": 94.69, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.11541856904407805, + "ENVIRONMENT_ADAPTABILITY": 0.6086307562120046, + "ANTI_JAMMING_CAPABILITY": 0.6264091061666508, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.16, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 29.4, + "PROCESSING_CAPACITY": 9375.0, + "INFORMATION_FUSION_CAPABILITY": 0.3326028633595343, + "SYSTEM_RELIABILITY": 0.6560966431181602, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-03-27 10:20:40.769563" + }, + { + "ID": 110, + "TARGET_ID": "FS-中-情报侦-110", + "TARGET_NAME": "侦察机师级", + "COUNTRY_REGION": "中", + "LEVEL": "师级", + "ROLE_ID": "情报侦察", + "TASK_ID": "火力打击任务", + "X": -7.04, + "Y": -62.68, + "COMMUNICATION_RANGE": 142.86, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.654071336770851, + "ENVIRONMENT_ADAPTABILITY": 0.13593518098828994, + "ANTI_JAMMING_CAPABILITY": 0.07873595136259914, + "DETECTION_RANGE": 100.1421932553779, + "DETECTION_ACCURACY": 0.9430128972909906, + "REFRESH_RATE": 1.3, + "TRANSMISSION_DELAY": 0.42, + "RELIABILITY": 0.8204821037292948, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-03-22 10:20:40.771821" + }, + { + "ID": 157, + "TARGET_ID": "FS-俄-后勤保-157", + "TARGET_NAME": "补给站团级", + "COUNTRY_REGION": "俄", + "LEVEL": "团级", + "ROLE_ID": "后勤保障", + "TASK_ID": "后勤支援任务", + "X": 50.29, + "Y": -59.03, + "COMMUNICATION_RANGE": 122.73, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.7834991470247359, + "ENVIRONMENT_ADAPTABILITY": 0.8381788772329817, + "ANTI_JAMMING_CAPABILITY": 0.7761791736377086, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 46.4, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 150.3, + "SUPPORT_CAPACITY": 3225.0, + "CREATED_TIME": "2025-03-20 10:20:40.774723" + }, + { + "ID": 60, + "TARGET_ID": "FS-法-后勤保-060", + "TARGET_NAME": "油料库旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "后勤保障", + "TASK_ID": "指挥协调任务", + "X": 6.97, + "Y": 80.74, + "COMMUNICATION_RANGE": 86.4, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.5191262379314131, + "ENVIRONMENT_ADAPTABILITY": 0.6748108103086499, + "ANTI_JAMMING_CAPABILITY": 0.7206125360604598, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 98.6, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 66.4, + "SUPPORT_CAPACITY": 1972.0, + "CREATED_TIME": "2025-03-17 10:20:40.770318" + }, + { + "ID": 124, + "TARGET_ID": "FS-英-后勤保-124", + "TARGET_NAME": "油料库营级", + "COUNTRY_REGION": "英", + "LEVEL": "营级", + "ROLE_ID": "后勤保障", + "TASK_ID": "信息传输任务", + "X": -34.0, + "Y": 27.03, + "COMMUNICATION_RANGE": 41.17, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.38004611209975847, + "ENVIRONMENT_ADAPTABILITY": 0.7531343228219308, + "ANTI_JAMMING_CAPABILITY": 0.5558460454873009, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 64.4, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 152.8, + "SUPPORT_CAPACITY": 1338.0, + "CREATED_TIME": "2025-03-16 10:20:40.772899" + }, + { + "ID": 5, + "TARGET_ID": "FS-英-协同打-005", + "TARGET_NAME": "无人机群师级", + "COUNTRY_REGION": "英", + "LEVEL": "师级", + "ROLE_ID": "协同打击", + "TASK_ID": "指挥协调任务", + "X": -25.59, + "Y": -11.13, + "COMMUNICATION_RANGE": 41.0, + "WEIGHT": 43.6, + "AREA": 115.0, + "MOBILITY": 0.5927480104478662, + "ENVIRONMENT_ADAPTABILITY": 0.4568077940025165, + "ANTI_JAMMING_CAPABILITY": 0.9015566941466917, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 75.65723933863056, + "STRIKE_ACCURACY": 0.8847892784229934, + "AMMUNITION_RESERVE": 38.0, + "TARGET_RECOGNITION_CAPABILITY": 0.4511951826088716, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-03-16 10:20:40.768877" + }, + { + "ID": 71, + "TARGET_ID": "FS-俄-情报侦-071", + "TARGET_NAME": "侦察卫星团级", + "COUNTRY_REGION": "俄", + "LEVEL": "团级", + "ROLE_ID": "情报侦察", + "TASK_ID": "后勤支援任务", + "X": 106.49, + "Y": -30.06, + "COMMUNICATION_RANGE": 57.06, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.2983775523225881, + "ENVIRONMENT_ADAPTABILITY": 0.7680209240417678, + "ANTI_JAMMING_CAPABILITY": 0.500279827202823, + "DETECTION_RANGE": 472.46812566808813, + "DETECTION_ACCURACY": 0.6701450468627849, + "REFRESH_RATE": 6.4, + "TRANSMISSION_DELAY": 1.67, + "RELIABILITY": 0.6495092100724353, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-03-14 10:20:40.770576" + }, + { + "ID": 64, + "TARGET_ID": "FS-英-情报侦-064", + "TARGET_NAME": "侦察机军级", + "COUNTRY_REGION": "英", + "LEVEL": "军级", + "ROLE_ID": "情报侦察", + "TASK_ID": "侦察监视任务", + "X": -94.77, + "Y": -56.31, + "COMMUNICATION_RANGE": 100.68, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.4306263544992416, + "ENVIRONMENT_ADAPTABILITY": 0.14018910274780472, + "ANTI_JAMMING_CAPABILITY": 0.32958362151069187, + "DETECTION_RANGE": 283.47796079250367, + "DETECTION_ACCURACY": 0.8289925743579045, + "REFRESH_RATE": 4.7, + "TRANSMISSION_DELAY": 1.45, + "RELIABILITY": 0.6400407270232068, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-03-14 10:20:40.770403" + }, + { + "ID": 53, + "TARGET_ID": "FS-俄-协同打-053", + "TARGET_NAME": "无人机群旅级", + "COUNTRY_REGION": "俄", + "LEVEL": "旅级", + "ROLE_ID": "协同打击", + "TASK_ID": "信息传输任务", + "X": 161.77, + "Y": 14.56, + "COMMUNICATION_RANGE": 120.03, + "WEIGHT": 74.5, + "AREA": 165.0, + "MOBILITY": 0.9439322036837514, + "ENVIRONMENT_ADAPTABILITY": 0.4229309239920552, + "ANTI_JAMMING_CAPABILITY": 0.8317991979460018, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 31.992154655693593, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 29.0, + "TARGET_RECOGNITION_CAPABILITY": 0.43529739668425915, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-03-10 10:20:40.770133" + }, + { + "ID": 151, + "TARGET_ID": "FS-英-指挥控-151", + "TARGET_NAME": "数据中心师级", + "COUNTRY_REGION": "英", + "LEVEL": "师级", + "ROLE_ID": "指挥控制", + "TASK_ID": "信息传输任务", + "X": 61.43, + "Y": 63.97, + "COMMUNICATION_RANGE": 145.83, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.39902208860898924, + "ENVIRONMENT_ADAPTABILITY": 0.8222790985397203, + "ANTI_JAMMING_CAPABILITY": 0.9097187737548205, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.42, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.4, + "PROCESSING_CAPACITY": 2101.0, + "INFORMATION_FUSION_CAPABILITY": 1.2783490822871695, + "SYSTEM_RELIABILITY": 0.6880678144912362, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-03-06 10:20:40.774526" + }, + { + "ID": 2, + "TARGET_ID": "FS-俄-火力打-002", + "TARGET_NAME": "导弹发射营旅级", + "COUNTRY_REGION": "俄", + "LEVEL": "旅级", + "ROLE_ID": "火力打击", + "TASK_ID": "指挥协调任务", + "X": -82.39, + "Y": 88.79, + "COMMUNICATION_RANGE": 101.09, + "WEIGHT": 35.6, + "AREA": 237.0, + "MOBILITY": 0.8145866239364985, + "ENVIRONMENT_ADAPTABILITY": 0.9230454473165111, + "ANTI_JAMMING_CAPABILITY": 0.5777605544315964, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 9.321300565260064, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 33.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-03-06 10:20:40.768776" + }, + { + "ID": 54, + "TARGET_ID": "FS-美-情报侦-054", + "TARGET_NAME": "侦察卫星军级", + "COUNTRY_REGION": "美", + "LEVEL": "军级", + "ROLE_ID": "情报侦察", + "TASK_ID": "后勤支援任务", + "X": -141.16, + "Y": -70.62, + "COMMUNICATION_RANGE": 123.87, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.37027281686504043, + "ENVIRONMENT_ADAPTABILITY": 0.7510935747848653, + "ANTI_JAMMING_CAPABILITY": 0.15964570690291824, + "DETECTION_RANGE": 431.9193006548834, + "DETECTION_ACCURACY": 0.7935967287685295, + "REFRESH_RATE": 5.5, + "TRANSMISSION_DELAY": 1.99, + "RELIABILITY": 0.6363465497863814, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-02-28 10:20:40.770178" + }, + { + "ID": 92, + "TARGET_ID": "FS-中-火力打-092", + "TARGET_NAME": "战斗机大队营级", + "COUNTRY_REGION": "中", + "LEVEL": "营级", + "ROLE_ID": "火力打击", + "TASK_ID": "后勤支援任务", + "X": 149.18, + "Y": 29.66, + "COMMUNICATION_RANGE": 100.18, + "WEIGHT": 46.7, + "AREA": 78.0, + "MOBILITY": 0.7637165652670908, + "ENVIRONMENT_ADAPTABILITY": 0.6866265834512058, + "ANTI_JAMMING_CAPABILITY": 0.5837752388248956, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 16.864014514687803, + "STRIKE_ACCURACY": 0.5373857501673068, + "AMMUNITION_RESERVE": 44.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-02-27 10:20:40.771295" + }, + { + "ID": 56, + "TARGET_ID": "FS-英-火力打-056", + "TARGET_NAME": "战斗机大队师级", + "COUNTRY_REGION": "英", + "LEVEL": "师级", + "ROLE_ID": "火力打击", + "TASK_ID": "信息传输任务", + "X": -161.89, + "Y": -12.91, + "COMMUNICATION_RANGE": 112.4, + "WEIGHT": 23.2, + "AREA": 72.0, + "MOBILITY": 0.7761320252126991, + "ENVIRONMENT_ADAPTABILITY": 0.8062963746387264, + "ANTI_JAMMING_CAPABILITY": 0.7513387451774443, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 14.565339645903753, + "STRIKE_ACCURACY": 0.586074819891458, + "AMMUNITION_RESERVE": 23.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-02-27 10:20:40.770230" + }, + { + "ID": 186, + "TARGET_ID": "FS-中-后勤保-186", + "TARGET_NAME": "油料库师级", + "COUNTRY_REGION": "中", + "LEVEL": "师级", + "ROLE_ID": "后勤保障", + "TASK_ID": "侦察监视任务", + "X": -158.54, + "Y": -72.13, + "COMMUNICATION_RANGE": 74.97, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.790839487743356, + "ENVIRONMENT_ADAPTABILITY": 0.4363573258994909, + "ANTI_JAMMING_CAPABILITY": 0.3109363012046841, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 15.3, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 193.0, + "SUPPORT_CAPACITY": 3381.0, + "CREATED_TIME": "2025-02-23 10:20:40.775777" + }, + { + "ID": 114, + "TARGET_ID": "FS-美-协同打-114", + "TARGET_NAME": "无人机群营级", + "COUNTRY_REGION": "美", + "LEVEL": "营级", + "ROLE_ID": "协同打击", + "TASK_ID": "指挥协调任务", + "X": 140.51, + "Y": -82.6, + "COMMUNICATION_RANGE": 68.26, + "WEIGHT": 59.1, + "AREA": 102.0, + "MOBILITY": 0.35003128360308466, + "ENVIRONMENT_ADAPTABILITY": 0.37733501196739483, + "ANTI_JAMMING_CAPABILITY": 0.9682546463390935, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 72.9734775049242, + "STRIKE_ACCURACY": 0.6218705547813999, + "AMMUNITION_RESERVE": 36.0, + "TARGET_RECOGNITION_CAPABILITY": 1.0, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-02-20 10:20:40.771933" + }, + { + "ID": 38, + "TARGET_ID": "FS-俄-指挥控-038", + "TARGET_NAME": "通信中继站旅级", + "COUNTRY_REGION": "俄", + "LEVEL": "旅级", + "ROLE_ID": "指挥控制", + "TASK_ID": "指挥协调任务", + "X": -132.34, + "Y": -30.55, + "COMMUNICATION_RANGE": 170.99, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.11900852145596574, + "ENVIRONMENT_ADAPTABILITY": 0.9162969582129363, + "ANTI_JAMMING_CAPABILITY": 0.7675800436175584, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.98, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 2.1, + "PROCESSING_CAPACITY": 6247.0, + "INFORMATION_FUSION_CAPABILITY": 0.6987482085456629, + "SYSTEM_RELIABILITY": 0.7871535552191965, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-02-20 10:20:40.769748" + }, + { + "ID": 122, + "TARGET_ID": "FS-美-情报侦-122", + "TARGET_NAME": "侦察卫星营级", + "COUNTRY_REGION": "美", + "LEVEL": "营级", + "ROLE_ID": "情报侦察", + "TASK_ID": "侦察监视任务", + "X": 68.32, + "Y": 83.11, + "COMMUNICATION_RANGE": 184.04, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.051984577823960376, + "ENVIRONMENT_ADAPTABILITY": 0.0603923836133603, + "ANTI_JAMMING_CAPABILITY": 0.7232366143588779, + "DETECTION_RANGE": 415.5343241235386, + "DETECTION_ACCURACY": 0.797152392963875, + "REFRESH_RATE": 7.3, + "TRANSMISSION_DELAY": 1.98, + "RELIABILITY": 0.9851544458932678, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-02-18 10:20:40.772738" + }, + { + "ID": 191, + "TARGET_ID": "FS-英-指挥控-191", + "TARGET_NAME": "作战中心营级", + "COUNTRY_REGION": "英", + "LEVEL": "营级", + "ROLE_ID": "指挥控制", + "TASK_ID": "信息传输任务", + "X": 16.27, + "Y": 57.45, + "COMMUNICATION_RANGE": 307.01, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.4322841356188393, + "ENVIRONMENT_ADAPTABILITY": 0.6440933891416922, + "ANTI_JAMMING_CAPABILITY": 0.6535984888441484, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.91, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 28.1, + "PROCESSING_CAPACITY": 6302.0, + "INFORMATION_FUSION_CAPABILITY": 1.0087391710960292, + "SYSTEM_RELIABILITY": 0.6750805706544136, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-02-11 10:20:40.775897" + }, + { + "ID": 187, + "TARGET_ID": "FS-法-指挥控-187", + "TARGET_NAME": "数据中心旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "指挥控制", + "TASK_ID": "后勤支援任务", + "X": 15.98, + "Y": 61.35, + "COMMUNICATION_RANGE": 216.7, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0695259860026694, + "ENVIRONMENT_ADAPTABILITY": 0.972404602137817, + "ANTI_JAMMING_CAPABILITY": 0.5416118871083714, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.15, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.4, + "PROCESSING_CAPACITY": 389.0, + "INFORMATION_FUSION_CAPABILITY": 0.9596663365297475, + "SYSTEM_RELIABILITY": 0.6750558713885563, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-02-11 10:20:40.775799" + }, + { + "ID": 34, + "TARGET_ID": "FS-美-协同打-034", + "TARGET_NAME": "电子战飞机旅级", + "COUNTRY_REGION": "美", + "LEVEL": "旅级", + "ROLE_ID": "协同打击", + "TASK_ID": "指挥协调任务", + "X": 48.25, + "Y": 35.64, + "COMMUNICATION_RANGE": 214.06, + "WEIGHT": 54.9, + "AREA": 247.0, + "MOBILITY": 0.4738119906592404, + "ENVIRONMENT_ADAPTABILITY": 0.8792939166466645, + "ANTI_JAMMING_CAPABILITY": 0.9664927222274495, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 49.38905861839365, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 48.0, + "TARGET_RECOGNITION_CAPABILITY": 0.8019278615659313, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-02-07 10:20:40.769656" + }, + { + "ID": 152, + "TARGET_ID": "FS-美-协同打-152", + "TARGET_NAME": "预警指挥机团级", + "COUNTRY_REGION": "美", + "LEVEL": "团级", + "ROLE_ID": "协同打击", + "TASK_ID": "后勤支援任务", + "X": -93.95, + "Y": 48.16, + "COMMUNICATION_RANGE": 76.73, + "WEIGHT": 25.3, + "AREA": 235.0, + "MOBILITY": 0.7781804104790686, + "ENVIRONMENT_ADAPTABILITY": 0.38669325067811955, + "ANTI_JAMMING_CAPABILITY": 0.7526508662017282, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 51.27305111454132, + "STRIKE_ACCURACY": 0.6227858023051853, + "AMMUNITION_RESERVE": 11.0, + "TARGET_RECOGNITION_CAPABILITY": 0.8196756499677987, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-02-04 10:20:40.774552" + }, + { + "ID": 183, + "TARGET_ID": "FS-俄-平台部-183", + "TARGET_NAME": "机场师级", + "COUNTRY_REGION": "俄", + "LEVEL": "师级", + "ROLE_ID": "平台部署", + "TASK_ID": "火力打击任务", + "X": 159.07, + "Y": -48.18, + "COMMUNICATION_RANGE": 69.1, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.9239536409307703, + "ANTI_JAMMING_CAPABILITY": 0.6683396256054583, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 25165.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 2784.0, + "CREATED_TIME": "2025-02-01 10:20:40.775695" + }, + { + "ID": 106, + "TARGET_ID": "FS-英-平台部-106", + "TARGET_NAME": "港口军级", + "COUNTRY_REGION": "英", + "LEVEL": "军级", + "ROLE_ID": "平台部署", + "TASK_ID": "指挥协调任务", + "X": 54.27, + "Y": -72.25, + "COMMUNICATION_RANGE": 63.77, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.9265258094590463, + "ANTI_JAMMING_CAPABILITY": 0.709117232458309, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 22317.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 9764.0, + "CREATED_TIME": "2025-01-31 10:20:40.771726" + }, + { + "ID": 100, + "TARGET_ID": "FS-俄-后勤保-100", + "TARGET_NAME": "医疗站营级", + "COUNTRY_REGION": "俄", + "LEVEL": "营级", + "ROLE_ID": "后勤保障", + "TASK_ID": "指挥协调任务", + "X": -94.69, + "Y": 39.81, + "COMMUNICATION_RANGE": 70.87, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.7521134550646282, + "ENVIRONMENT_ADAPTABILITY": 0.4428682045322012, + "ANTI_JAMMING_CAPABILITY": 0.6078904382710589, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 93.1, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 193.7, + "SUPPORT_CAPACITY": 4283.0, + "CREATED_TIME": "2025-01-30 10:20:40.771497" + }, + { + "ID": 63, + "TARGET_ID": "FS-俄-平台部-063", + "TARGET_NAME": "港口师级", + "COUNTRY_REGION": "俄", + "LEVEL": "师级", + "ROLE_ID": "平台部署", + "TASK_ID": "火力打击任务", + "X": 58.52, + "Y": 88.58, + "COMMUNICATION_RANGE": 66.87, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.7193661215563005, + "ANTI_JAMMING_CAPABILITY": 0.679702762016761, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 16229.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 1388.0, + "CREATED_TIME": "2025-01-30 10:20:40.770384" + }, + { + "ID": 24, + "TARGET_ID": "FS-中-情报侦-024", + "TARGET_NAME": "雷达站旅级", + "COUNTRY_REGION": "中", + "LEVEL": "旅级", + "ROLE_ID": "情报侦察", + "TASK_ID": "信息传输任务", + "X": 51.13, + "Y": -29.49, + "COMMUNICATION_RANGE": 68.1, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.007508819742141862, + "ENVIRONMENT_ADAPTABILITY": 0.054263137340309964, + "ANTI_JAMMING_CAPABILITY": 0.110882853374206, + "DETECTION_RANGE": 238.45684740987127, + "DETECTION_ACCURACY": 0.7620257013602899, + "REFRESH_RATE": 5.6, + "TRANSMISSION_DELAY": 0.29, + "RELIABILITY": 0.5061511033764677, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-01-24 10:20:40.769413" + }, + { + "ID": 196, + "TARGET_ID": "FS-美-火力打-196", + "TARGET_NAME": "战斗机大队师级", + "COUNTRY_REGION": "美", + "LEVEL": "师级", + "ROLE_ID": "火力打击", + "TASK_ID": "信息传输任务", + "X": -91.68, + "Y": -16.54, + "COMMUNICATION_RANGE": 67.74, + "WEIGHT": 65.0, + "AREA": 74.0, + "MOBILITY": 0.5953110093024454, + "ENVIRONMENT_ADAPTABILITY": 0.3019519203508244, + "ANTI_JAMMING_CAPABILITY": 0.4896887311206409, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 47.32217148679349, + "STRIKE_ACCURACY": 0.6182351586485793, + "AMMUNITION_RESERVE": 49.0, + "TARGET_RECOGNITION_CAPABILITY": 0.5020823574530893, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-01-17 10:20:40.776056" + }, + { + "ID": 51, + "TARGET_ID": "FS-俄-火力打-051", + "TARGET_NAME": "导弹发射营师级", + "COUNTRY_REGION": "俄", + "LEVEL": "师级", + "ROLE_ID": "火力打击", + "TASK_ID": "侦察监视任务", + "X": 46.91, + "Y": 16.81, + "COMMUNICATION_RANGE": 71.72, + "WEIGHT": 64.8, + "AREA": 175.0, + "MOBILITY": 0.48448163323928195, + "ENVIRONMENT_ADAPTABILITY": 0.7233617791639311, + "ANTI_JAMMING_CAPABILITY": 0.636676732999353, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 40.27927921821658, + "STRIKE_ACCURACY": 0.5307669708306397, + "AMMUNITION_RESERVE": 46.0, + "TARGET_RECOGNITION_CAPABILITY": 0.8165220122682818, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-01-16 10:20:40.770051" + }, + { + "ID": 47, + "TARGET_ID": "FS-法-协同打-047", + "TARGET_NAME": "电子战飞机军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "协同打击", + "TASK_ID": "指挥协调任务", + "X": 54.41, + "Y": 7.75, + "COMMUNICATION_RANGE": 71.91, + "WEIGHT": 57.8, + "AREA": 101.0, + "MOBILITY": 0.3286630109123921, + "ENVIRONMENT_ADAPTABILITY": 0.5817369567266258, + "ANTI_JAMMING_CAPABILITY": 0.9218120922493653, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 44.96869649341776, + "STRIKE_ACCURACY": 0.9561747122364158, + "AMMUNITION_RESERVE": 5.0, + "TARGET_RECOGNITION_CAPABILITY": 0.40667319474515645, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-01-16 10:20:40.769956" + }, + { + "ID": 127, + "TARGET_ID": "FS-英-火力打-127", + "TARGET_NAME": "战斗机大队团级", + "COUNTRY_REGION": "英", + "LEVEL": "团级", + "ROLE_ID": "火力打击", + "TASK_ID": "信息传输任务", + "X": 128.84, + "Y": 44.43, + "COMMUNICATION_RANGE": 65.84, + "WEIGHT": 50.4, + "AREA": 164.0, + "MOBILITY": 0.573428012261973, + "ENVIRONMENT_ADAPTABILITY": 0.4571840277132902, + "ANTI_JAMMING_CAPABILITY": 0.8590290533549719, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 18.866610152410775, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 19.0, + "TARGET_RECOGNITION_CAPABILITY": 0.7636742371002834, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-01-11 10:20:40.773224" + }, + { + "ID": 119, + "TARGET_ID": "FS-英-后勤保-119", + "TARGET_NAME": "医疗站师级", + "COUNTRY_REGION": "英", + "LEVEL": "师级", + "ROLE_ID": "后勤保障", + "TASK_ID": "侦察监视任务", + "X": -63.17, + "Y": 25.63, + "COMMUNICATION_RANGE": 54.16, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.4456435804619381, + "ENVIRONMENT_ADAPTABILITY": 0.6720094965251981, + "ANTI_JAMMING_CAPABILITY": 0.4186899231940372, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 95.9, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 117.8, + "SUPPORT_CAPACITY": 3003.0, + "CREATED_TIME": "2025-01-10 10:20:40.772374" + }, + { + "ID": 88, + "TARGET_ID": "FS-俄-情报侦-088", + "TARGET_NAME": "侦察卫星师级", + "COUNTRY_REGION": "俄", + "LEVEL": "师级", + "ROLE_ID": "情报侦察", + "TASK_ID": "指挥协调任务", + "X": -112.59, + "Y": 89.36, + "COMMUNICATION_RANGE": 102.12, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.817377613718918, + "ENVIRONMENT_ADAPTABILITY": 0.16888931124007633, + "ANTI_JAMMING_CAPABILITY": 0.9066520470065111, + "DETECTION_RANGE": 160.42094936303218, + "DETECTION_ACCURACY": 1.0941612484836978, + "REFRESH_RATE": 2.4, + "TRANSMISSION_DELAY": 0.81, + "RELIABILITY": 0.6442664191556642, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-01-10 10:20:40.771174" + }, + { + "ID": 11, + "TARGET_ID": "FS-法-后勤保-011", + "TARGET_NAME": "补给站团级", + "COUNTRY_REGION": "法", + "LEVEL": "团级", + "ROLE_ID": "后勤保障", + "TASK_ID": "指挥协调任务", + "X": -24.56, + "Y": -66.14, + "COMMUNICATION_RANGE": 104.49, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.6197023954884233, + "ENVIRONMENT_ADAPTABILITY": 0.8668044460473187, + "ANTI_JAMMING_CAPABILITY": 0.6734573285679439, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 17.0, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 107.1, + "SUPPORT_CAPACITY": 660.0, + "CREATED_TIME": "2025-01-09 10:20:40.769027" + }, + { + "ID": 31, + "TARGET_ID": "FS-中-情报侦-031", + "TARGET_NAME": "雷达站团级", + "COUNTRY_REGION": "中", + "LEVEL": "团级", + "ROLE_ID": "情报侦察", + "TASK_ID": "指挥协调任务", + "X": -168.2, + "Y": -24.12, + "COMMUNICATION_RANGE": 151.23, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.8152071173101112, + "ENVIRONMENT_ADAPTABILITY": 0.359333618497673, + "ANTI_JAMMING_CAPABILITY": 0.1441961476789485, + "DETECTION_RANGE": 520.5489057611674, + "DETECTION_ACCURACY": 0.9142729061699109, + "REFRESH_RATE": 8.4, + "TRANSMISSION_DELAY": 1.62, + "RELIABILITY": 0.5493105971574974, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2025-01-08 10:20:40.769585" + }, + { + "ID": 145, + "TARGET_ID": "FS-中-后勤保-145", + "TARGET_NAME": "维修站团级", + "COUNTRY_REGION": "中", + "LEVEL": "团级", + "ROLE_ID": "后勤保障", + "TASK_ID": "侦察监视任务", + "X": 117.7, + "Y": -13.74, + "COMMUNICATION_RANGE": 88.58, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.6238535372605245, + "ENVIRONMENT_ADAPTABILITY": 0.8284347447289757, + "ANTI_JAMMING_CAPABILITY": 1.0, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 82.6, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 170.1, + "SUPPORT_CAPACITY": 4674.0, + "CREATED_TIME": "2025-01-03 10:20:40.774351" + }, + { + "ID": 204, + "TARGET_ID": "FS-英-后勤保-090", + "TARGET_NAME": "医疗站旅级", + "COUNTRY_REGION": "英", + "LEVEL": "旅级", + "ROLE_ID": "后勤保障", + "TASK_ID": "指挥协调任务", + "X": -129.46, + "Y": -2.38, + "COMMUNICATION_RANGE": 94.81, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.5903922471038296, + "ENVIRONMENT_ADAPTABILITY": 0.6844333731677029, + "ANTI_JAMMING_CAPABILITY": 0.5055842542914323, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 20.3, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 59.7, + "SUPPORT_CAPACITY": 4715.0, + "CREATED_TIME": "2024-12-31 10:20:40.771244" + }, + { + "ID": 57, + "TARGET_ID": "FS-法-指挥控-057", + "TARGET_NAME": "作战中心团级", + "COUNTRY_REGION": "法", + "LEVEL": "团级", + "ROLE_ID": "指挥控制", + "TASK_ID": "指挥协调任务", + "X": -145.87, + "Y": -81.59, + "COMMUNICATION_RANGE": 79.03, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.2851709086150126, + "ENVIRONMENT_ADAPTABILITY": 0.6545979046921537, + "ANTI_JAMMING_CAPABILITY": 0.8051850697061017, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.45, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 2.5, + "PROCESSING_CAPACITY": 9976.0, + "INFORMATION_FUSION_CAPABILITY": 0.6569348152848105, + "SYSTEM_RELIABILITY": 0.9549186899738143, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-31 10:20:40.770253" + }, + { + "ID": 166, + "TARGET_ID": "FS-俄-后勤保-166", + "TARGET_NAME": "维修站团级", + "COUNTRY_REGION": "俄", + "LEVEL": "团级", + "ROLE_ID": "后勤保障", + "TASK_ID": "信息传输任务", + "X": -19.18, + "Y": 87.32, + "COMMUNICATION_RANGE": 87.5, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.45112679616074053, + "ENVIRONMENT_ADAPTABILITY": 0.815850988139763, + "ANTI_JAMMING_CAPABILITY": 0.7347471659692446, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 51.1, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 114.2, + "SUPPORT_CAPACITY": 203.0, + "CREATED_TIME": "2024-12-29 10:20:40.775211" + }, + { + "ID": 159, + "TARGET_ID": "FS-法-火力打-159", + "TARGET_NAME": "战斗机大队旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "火力打击", + "TASK_ID": "信息传输任务", + "X": 152.68, + "Y": -82.46, + "COMMUNICATION_RANGE": 99.07, + "WEIGHT": 20.0, + "AREA": 257.0, + "MOBILITY": 0.4200792980139961, + "ENVIRONMENT_ADAPTABILITY": 0.883976872191159, + "ANTI_JAMMING_CAPABILITY": 0.5440473435235404, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.90844754090002, + "STRIKE_ACCURACY": 0.8080178009938058, + "AMMUNITION_RESERVE": 48.0, + "TARGET_RECOGNITION_CAPABILITY": 0.7329523816856406, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-25 10:20:40.774778" + }, + { + "ID": 70, + "TARGET_ID": "FS-中-火力打-070", + "TARGET_NAME": "自行火炮营团级", + "COUNTRY_REGION": "中", + "LEVEL": "团级", + "ROLE_ID": "火力打击", + "TASK_ID": "后勤支援任务", + "X": 127.36, + "Y": 79.03, + "COMMUNICATION_RANGE": 65.91, + "WEIGHT": 71.5, + "AREA": 100.0, + "MOBILITY": 0.8478008959568173, + "ENVIRONMENT_ADAPTABILITY": 0.8325354177579396, + "ANTI_JAMMING_CAPABILITY": 0.7767836183914667, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 63.08451366126336, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 17.0, + "TARGET_RECOGNITION_CAPABILITY": 0.7543007426450994, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-25 10:20:40.770551" + }, + { + "ID": 37, + "TARGET_ID": "FS-英-情报侦-037", + "TARGET_NAME": "预警机军级", + "COUNTRY_REGION": "英", + "LEVEL": "军级", + "ROLE_ID": "情报侦察", + "TASK_ID": "指挥协调任务", + "X": 2.37, + "Y": 22.07, + "COMMUNICATION_RANGE": 140.07, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.4295862095895838, + "ENVIRONMENT_ADAPTABILITY": 0.13882453477212642, + "ANTI_JAMMING_CAPABILITY": 0.8654478593348648, + "DETECTION_RANGE": 351.37619287485336, + "DETECTION_ACCURACY": 0.9060927149055333, + "REFRESH_RATE": 3.8, + "TRANSMISSION_DELAY": 0.6, + "RELIABILITY": 0.6049864385454555, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-22 10:20:40.769724" + }, + { + "ID": 83, + "TARGET_ID": "FS-中-情报侦-083", + "TARGET_NAME": "电子侦察站团级", + "COUNTRY_REGION": "中", + "LEVEL": "团级", + "ROLE_ID": "情报侦察", + "TASK_ID": "后勤支援任务", + "X": 4.82, + "Y": -46.71, + "COMMUNICATION_RANGE": 130.81, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 1.0, + "ENVIRONMENT_ADAPTABILITY": 0.822745249013477, + "ANTI_JAMMING_CAPABILITY": 0.17511186787616495, + "DETECTION_RANGE": 291.421499803341, + "DETECTION_ACCURACY": 0.8050289974673062, + "REFRESH_RATE": 5.1, + "TRANSMISSION_DELAY": 1.5, + "RELIABILITY": 0.8731826696107342, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-21 10:20:40.770860" + }, + { + "ID": 43, + "TARGET_ID": "FS-俄-火力打-043", + "TARGET_NAME": "火箭炮营营级", + "COUNTRY_REGION": "俄", + "LEVEL": "营级", + "ROLE_ID": "火力打击", + "TASK_ID": "火力打击任务", + "X": 136.34, + "Y": -35.69, + "COMMUNICATION_RANGE": 145.69, + "WEIGHT": 79.3, + "AREA": 157.0, + "MOBILITY": 0.4150210293662726, + "ENVIRONMENT_ADAPTABILITY": 0.9292049703082099, + "ANTI_JAMMING_CAPABILITY": 0.6483353883130868, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 31.8987656507989, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 29.0, + "TARGET_RECOGNITION_CAPABILITY": 0.586543067021017, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-21 10:20:40.769860" + }, + { + "ID": 15, + "TARGET_ID": "FS-英-协同打-015", + "TARGET_NAME": "电子战飞机营级", + "COUNTRY_REGION": "英", + "LEVEL": "营级", + "ROLE_ID": "协同打击", + "TASK_ID": "指挥协调任务", + "X": 44.55, + "Y": 86.46, + "COMMUNICATION_RANGE": 76.06, + "WEIGHT": 78.8, + "AREA": 137.0, + "MOBILITY": 0.5304933018636336, + "ENVIRONMENT_ADAPTABILITY": 0.9316757094701937, + "ANTI_JAMMING_CAPABILITY": 0.641803675055316, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 41.17324006515433, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 4.0, + "TARGET_RECOGNITION_CAPABILITY": 0.9806835958510448, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-21 10:20:40.769174" + }, + { + "ID": 133, + "TARGET_ID": "FS-俄-情报侦-133", + "TARGET_NAME": "侦察卫星军级", + "COUNTRY_REGION": "俄", + "LEVEL": "军级", + "ROLE_ID": "情报侦察", + "TASK_ID": "后勤支援任务", + "X": 50.14, + "Y": 68.12, + "COMMUNICATION_RANGE": 116.48, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.05672371342968563, + "ENVIRONMENT_ADAPTABILITY": 0.8545789175470546, + "ANTI_JAMMING_CAPABILITY": 0.2597632241829321, + "DETECTION_RANGE": 116.88357925161127, + "DETECTION_ACCURACY": 0.9800745300781406, + "REFRESH_RATE": 2.9, + "TRANSMISSION_DELAY": 0.92, + "RELIABILITY": 0.8810740494139927, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-20 10:20:40.773836" + }, + { + "ID": 202, + "TARGET_ID": "FS-美-火力打-137", + "TARGET_NAME": "自行火炮营团级", + "COUNTRY_REGION": "美", + "LEVEL": "团级", + "ROLE_ID": "火力打击", + "TASK_ID": "后勤支援任务", + "X": -179.95, + "Y": -2.335151515151514, + "COMMUNICATION_RANGE": 93.15, + "WEIGHT": 65.6, + "AREA": 277.0, + "MOBILITY": 0.5070074923447424, + "ENVIRONMENT_ADAPTABILITY": 0.885212208285217, + "ANTI_JAMMING_CAPABILITY": 0.4710872952786959, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 26.1070913421298, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 15.0, + "TARGET_RECOGNITION_CAPABILITY": 0.7710454408458943, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-19 10:20:40.774016" + }, + { + "ID": 40, + "TARGET_ID": "FS-法-后勤保-040", + "TARGET_NAME": "维修站军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "后勤保障", + "TASK_ID": "火力打击任务", + "X": -171.06, + "Y": 77.5, + "COMMUNICATION_RANGE": 90.49, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.5413744511715186, + "ENVIRONMENT_ADAPTABILITY": 0.4660990473288675, + "ANTI_JAMMING_CAPABILITY": 0.6425295985140305, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 43.4, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 182.4, + "SUPPORT_CAPACITY": 2297.0, + "CREATED_TIME": "2024-12-17 10:20:40.769792" + }, + { + "ID": 3, + "TARGET_ID": "FS-中-情报侦-003", + "TARGET_NAME": "预警机旅级", + "COUNTRY_REGION": "中", + "LEVEL": "旅级", + "ROLE_ID": "情报侦察", + "TASK_ID": "侦察监视任务", + "X": -147.98, + "Y": 10.98, + "COMMUNICATION_RANGE": 92.79, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.8799121067899577, + "ENVIRONMENT_ADAPTABILITY": 0.48664831245289486, + "ANTI_JAMMING_CAPABILITY": 0.5211339704675207, + "DETECTION_RANGE": 358.8341092031314, + "DETECTION_ACCURACY": 0.7333597659505381, + "REFRESH_RATE": 7.8, + "TRANSMISSION_DELAY": 0.76, + "RELIABILITY": 1.0944572511672006, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-16 10:20:40.768817" + }, + { + "ID": 85, + "TARGET_ID": "FS-美-平台部-085", + "TARGET_NAME": "机场旅级", + "COUNTRY_REGION": "美", + "LEVEL": "旅级", + "ROLE_ID": "平台部署", + "TASK_ID": "指挥协调任务", + "X": 167.55, + "Y": 33.59, + "COMMUNICATION_RANGE": 142.57, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.6838727650442589, + "ANTI_JAMMING_CAPABILITY": 0.9839580867692566, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 7561.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 9584.0, + "CREATED_TIME": "2024-12-12 10:20:40.770909" + }, + { + "ID": 142, + "TARGET_ID": "FS-法-平台部-142", + "TARGET_NAME": "前进阵地军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "平台部署", + "TASK_ID": "后勤支援任务", + "X": 121.58, + "Y": -17.11, + "COMMUNICATION_RANGE": 185.14, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.0, + "ENVIRONMENT_ADAPTABILITY": 0.5725882149535909, + "ANTI_JAMMING_CAPABILITY": 0.9201572088958546, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 39916.0, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 7705.0, + "CREATED_TIME": "2024-12-11 10:20:40.774241" + }, + { + "ID": 46, + "TARGET_ID": "FS-法-火力打-046", + "TARGET_NAME": "导弹发射营团级", + "COUNTRY_REGION": "法", + "LEVEL": "团级", + "ROLE_ID": "火力打击", + "TASK_ID": "信息传输任务", + "X": -149.5, + "Y": -55.33, + "COMMUNICATION_RANGE": 151.98, + "WEIGHT": 75.0, + "AREA": 299.0, + "MOBILITY": 0.5051458841027283, + "ENVIRONMENT_ADAPTABILITY": 0.7000300435002065, + "ANTI_JAMMING_CAPABILITY": 0.4757303374207519, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 99.14910360879813, + "STRIKE_ACCURACY": 0.5839685189891749, + "AMMUNITION_RESERVE": 45.0, + "TARGET_RECOGNITION_CAPABILITY": 0.702519543670033, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-08 10:20:40.769932" + }, + { + "ID": 172, + "TARGET_ID": "FS-中-协同打-172", + "TARGET_NAME": "电子战飞机团级", + "COUNTRY_REGION": "中", + "LEVEL": "团级", + "ROLE_ID": "协同打击", + "TASK_ID": "指挥协调任务", + "X": 106.49, + "Y": -69.47, + "COMMUNICATION_RANGE": 113.95, + "WEIGHT": 24.9, + "AREA": 80.0, + "MOBILITY": 0.5243600059255982, + "ENVIRONMENT_ADAPTABILITY": 0.3077406655714446, + "ANTI_JAMMING_CAPABILITY": 0.997174214158621, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 79.10606624820149, + "STRIKE_ACCURACY": 0.9170097692888634, + "AMMUNITION_RESERVE": 26.0, + "TARGET_RECOGNITION_CAPABILITY": 0.5714634970492309, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-05 10:20:40.775351" + }, + { + "ID": 147, + "TARGET_ID": "FS-法-后勤保-147", + "TARGET_NAME": "补给站营级", + "COUNTRY_REGION": "法", + "LEVEL": "营级", + "ROLE_ID": "后勤保障", + "TASK_ID": "信息传输任务", + "X": 89.85, + "Y": -88.57, + "COMMUNICATION_RANGE": 62.48, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.560295948035485, + "ENVIRONMENT_ADAPTABILITY": 0.6698957127798166, + "ANTI_JAMMING_CAPABILITY": 0.43152366336158776, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 43.1, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 186.5, + "SUPPORT_CAPACITY": 762.0, + "CREATED_TIME": "2024-12-04 10:20:40.774427" + }, + { + "ID": 79, + "TARGET_ID": "FS-法-协同打-079", + "TARGET_NAME": "预警指挥机军级", + "COUNTRY_REGION": "法", + "LEVEL": "军级", + "ROLE_ID": "协同打击", + "TASK_ID": "火力打击任务", + "X": -103.84, + "Y": -13.55, + "COMMUNICATION_RANGE": 43.3, + "WEIGHT": 24.9, + "AREA": 165.0, + "MOBILITY": 0.540091014800575, + "ENVIRONMENT_ADAPTABILITY": 0.3759160184535362, + "ANTI_JAMMING_CAPABILITY": 0.9579260351557877, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 18.05598551830507, + "STRIKE_ACCURACY": 0.7071532443518843, + "AMMUNITION_RESERVE": 17.0, + "TARGET_RECOGNITION_CAPABILITY": 0.8814085237572037, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-04 10:20:40.770761" + }, + { + "ID": 29, + "TARGET_ID": "FS-英-指挥控-029", + "TARGET_NAME": "通信中继站师级", + "COUNTRY_REGION": "英", + "LEVEL": "师级", + "ROLE_ID": "指挥控制", + "TASK_ID": "火力打击任务", + "X": -154.12, + "Y": 2.47, + "COMMUNICATION_RANGE": 136.92, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.12020868240095306, + "ENVIRONMENT_ADAPTABILITY": 0.5810290512361727, + "ANTI_JAMMING_CAPABILITY": 0.521202029235571, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.69, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 5.5, + "PROCESSING_CAPACITY": 4772.0, + "INFORMATION_FUSION_CAPABILITY": 0.8068332597003363, + "SYSTEM_RELIABILITY": 0.8709375282176276, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-04 10:20:40.769539" + }, + { + "ID": 108, + "TARGET_ID": "FS-法-协同打-108", + "TARGET_NAME": "无人机群旅级", + "COUNTRY_REGION": "法", + "LEVEL": "旅级", + "ROLE_ID": "协同打击", + "TASK_ID": "信息传输任务", + "X": -96.01, + "Y": -46.24, + "COMMUNICATION_RANGE": 151.72, + "WEIGHT": 55.3, + "AREA": 165.0, + "MOBILITY": 0.9916724608890908, + "ENVIRONMENT_ADAPTABILITY": 0.47470545689011023, + "ANTI_JAMMING_CAPABILITY": 0.41523770955754724, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 43.309126766367854, + "STRIKE_ACCURACY": 1.0, + "AMMUNITION_RESERVE": 15.0, + "TARGET_RECOGNITION_CAPABILITY": 0.9749495721101716, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-12-01 10:20:40.771772" + }, + { + "ID": 116, + "TARGET_ID": "FS-中-协同打-116", + "TARGET_NAME": "无人机群营级", + "COUNTRY_REGION": "中", + "LEVEL": "营级", + "ROLE_ID": "协同打击", + "TASK_ID": "信息传输任务", + "X": 51.41, + "Y": -27.99, + "COMMUNICATION_RANGE": 161.13, + "WEIGHT": 55.3, + "AREA": 128.0, + "MOBILITY": 0.8692663984296041, + "ENVIRONMENT_ADAPTABILITY": 0.8046424401970753, + "ANTI_JAMMING_CAPABILITY": 0.7671254046747026, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 96.22414479824327, + "STRIKE_ACCURACY": 0.8567113374667013, + "AMMUNITION_RESERVE": 7.0, + "TARGET_RECOGNITION_CAPABILITY": 0.9849280005648883, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-11-30 10:20:40.771980" + }, + { + "ID": 95, + "TARGET_ID": "FS-美-指挥控-095", + "TARGET_NAME": "通信中继站旅级", + "COUNTRY_REGION": "美", + "LEVEL": "旅级", + "ROLE_ID": "指挥控制", + "TASK_ID": "指挥协调任务", + "X": 165.2, + "Y": -65.19, + "COMMUNICATION_RANGE": 159.66, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.16661967393457666, + "ENVIRONMENT_ADAPTABILITY": 0.8984152561330906, + "ANTI_JAMMING_CAPABILITY": 0.7021646249580153, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.74, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 18.2, + "PROCESSING_CAPACITY": 4306.0, + "INFORMATION_FUSION_CAPABILITY": 0.71100650688615, + "SYSTEM_RELIABILITY": 0.8362997515315905, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-11-29 10:20:40.771381" + }, + { + "ID": 48, + "TARGET_ID": "FS-中-火力打-048", + "TARGET_NAME": null, + "COUNTRY_REGION": "中", + "LEVEL": "军级", + "ROLE_ID": "火力打击", + "TASK_ID": "信息传输任务", + "X": 18.23, + "Y": 63.14, + "COMMUNICATION_RANGE": 148.96, + "WEIGHT": 27.1, + "AREA": 277.0, + "MOBILITY": 0.7416743233080199, + "ENVIRONMENT_ADAPTABILITY": 0.6958049990481117, + "ANTI_JAMMING_CAPABILITY": 0.7471636607368379, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 88.50079555292606, + "STRIKE_ACCURACY": 0.5413961148123343, + "AMMUNITION_RESERVE": 20.0, + "TARGET_RECOGNITION_CAPABILITY": 0.4239479942088748, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-11-29 10:20:40.769979" + }, + { + "ID": 26, + "TARGET_ID": "FS-中-协同打-026", + "TARGET_NAME": "无人机群营级", + "COUNTRY_REGION": "中", + "LEVEL": "营级", + "ROLE_ID": "协同打击", + "TASK_ID": "火力打击任务", + "X": 123.4, + "Y": -54.24, + "COMMUNICATION_RANGE": 154.01, + "WEIGHT": 71.3, + "AREA": 158.0, + "MOBILITY": 0.7852609829782771, + "ENVIRONMENT_ADAPTABILITY": 0.6265411650056977, + "ANTI_JAMMING_CAPABILITY": 0.4310919855254529, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 67.37335266888057, + "STRIKE_ACCURACY": 0.6258961021217302, + "AMMUNITION_RESERVE": 49.0, + "TARGET_RECOGNITION_CAPABILITY": 0.920517543043721, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-11-29 10:20:40.769460" + }, + { + "ID": 126, + "TARGET_ID": "FS-中-指挥控-126", + "TARGET_NAME": "指挥所营级", + "COUNTRY_REGION": "中", + "LEVEL": "营级", + "ROLE_ID": "指挥控制", + "TASK_ID": "火力打击任务", + "X": 166.65, + "Y": -43.17, + "COMMUNICATION_RANGE": 89.26, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.1983745793461127, + "ENVIRONMENT_ADAPTABILITY": 0.6809579023236645, + "ANTI_JAMMING_CAPABILITY": 0.6600040121876969, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.44, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 15.4, + "PROCESSING_CAPACITY": 123.0, + "INFORMATION_FUSION_CAPABILITY": 1.0332013327435459, + "SYSTEM_RELIABILITY": 0.6703138856938541, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 62.146341463414636, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 133.48048780487807, + "SUPPORT_CAPACITY": 3609.55737704918, + "CREATED_TIME": "2024-11-25 10:20:40.773199" + }, + { + "ID": 118, + "TARGET_ID": "FS-法-后勤保-118", + "TARGET_NAME": "维修站营级", + "COUNTRY_REGION": "法", + "LEVEL": "营级", + "ROLE_ID": "后勤保障", + "TASK_ID": "指挥协调任务", + "X": -94.3, + "Y": -30.68, + "COMMUNICATION_RANGE": 89.52, + "WEIGHT": 53.152702702702705, + "AREA": 169.51351351351352, + "MOBILITY": 0.5815259684299081, + "ENVIRONMENT_ADAPTABILITY": 0.7854505606122183, + "ANTI_JAMMING_CAPABILITY": 0.4777300935985096, + "DETECTION_RANGE": 311.43915388058707, + "DETECTION_ACCURACY": 0.9221871246969584, + "REFRESH_RATE": 5.1499999999999995, + "TRANSMISSION_DELAY": 0.8832307692307693, + "RELIABILITY": 0.7840911946609623, + "DECISION_RESPONSE_TIME": 23.389132166554926, + "PROCESSING_CAPACITY": 4561.451612903225, + "INFORMATION_FUSION_CAPABILITY": 0.789593701487015, + "SYSTEM_RELIABILITY": 0.7923055432252173, + "STRIKE_RANGE": 55.122584025030505, + "STRIKE_ACCURACY": 0.9830599905917308, + "AMMUNITION_RESERVE": 26.824324324324323, + "TARGET_RECOGNITION_CAPABILITY": 0.7732718347097838, + "LOAD_CAPACITY": 58.9, + "PLATFORM_AREA": 24187.45, + "SUPPORT_RANGE": 132.9, + "SUPPORT_CAPACITY": 4978.0, + "CREATED_TIME": "2024-11-25 10:20:40.772327" + } +] \ No newline at end of file diff --git a/final/data/nodes.json b/final/data/nodes.json new file mode 100644 index 0000000..7c4d081 --- /dev/null +++ b/final/data/nodes.json @@ -0,0 +1,7407 @@ +{ + "nodes": { + "FS-俄-情报侦-132": { + "TARGET_ID": "FS-俄-情报侦-132", + "function_vector": { + "f_IC": 0.9273, + "f_IA": 0.7896, + "f_CS": 0.2584, + "f_IT": 0.5187, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 79.36, + 52.11 + ], + "effective_radius": 94.96 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 3.7, + "data_age": 1.48, + "time_window": 3.7 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4094, + "mtbf": 0.7202 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-后勤保-042": { + "TARGET_ID": "FS-法-后勤保-042", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5336, + "f_IT": 0.4399, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.833 + }, + "spatial": { + "position": [ + 19.54, + 39.4 + ], + "effective_radius": 60.23 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6612, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-法-协同打-144": { + "TARGET_ID": "FS-法-协同打-144", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7659, + "f_IT": 0.7319, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 142.64, + -2.03 + ], + "effective_radius": 60.37 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.678, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-指挥控-025": { + "TARGET_ID": "FS-俄-指挥控-025", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.9353, + "f_CS": 0.4341, + "f_IT": 0.8187, + "f_DP": 0.9004, + "f_CPS": 0.9288, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -64.34, + -83.34 + ], + "effective_radius": 100.62 + }, + "temporal": { + "response_time": 2.3, + "cycle_time": 5.15, + "data_age": 0.55, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5535, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-中-情报侦-039": { + "TARGET_ID": "FS-中-情报侦-039", + "function_vector": { + "f_IC": 1.0, + "f_IA": 0.7896, + "f_CS": 0.9456, + "f_IT": 0.598, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -39.98, + -29.19 + ], + "effective_radius": 178.9 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 9.7, + "data_age": 0.14, + "time_window": 9.7 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.0647, + "mtbf": 0.6863 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "中", + "history_success": 0.8 + }, + "FS-英-情报侦-067": { + "TARGET_ID": "FS-英-情报侦-067", + "function_vector": { + "f_IC": 0.831, + "f_IA": 0.7896, + "f_CS": 0.6489, + "f_IT": 0.3781, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 177.46, + -88.55 + ], + "effective_radius": 174.42 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.9, + "data_age": 1.75, + "time_window": 5.9 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.9645, + "mtbf": 0.8143 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "英", + "history_success": 0.8 + }, + "FS-美-情报侦-190": { + "TARGET_ID": "FS-美-情报侦-190", + "function_vector": { + "f_IC": 0.7059, + "f_IA": 0.7896, + "f_CS": 0.0768, + "f_IT": 0.041, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 108.79, + 8.91 + ], + "effective_radius": 123.64 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 7.3, + "data_age": 1.4, + "time_window": 7.3 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.3267, + "mtbf": 0.6729 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "美", + "history_success": 0.8 + }, + "FS-法-协同打-050": { + "TARGET_ID": "FS-法-协同打-050", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7946, + "f_IT": 0.4247, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 15.8, + -76.51 + ], + "effective_radius": 58.22 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9543, + "survivability": 0.7393, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "法", + "history_success": 0.8 + }, + "FS-英-情报侦-023": { + "TARGET_ID": "FS-英-情报侦-023", + "function_vector": { + "f_IC": 0.9435, + "f_IA": 0.7896, + "f_CS": 0.2725, + "f_IT": 0.0638, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 167.18, + -10.14 + ], + "effective_radius": 111.32 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 6.2, + "data_age": 1.81, + "time_window": 6.2 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.1522, + "mtbf": 0.9082 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "英", + "history_success": 0.8 + }, + "FS-中-协同打-093": { + "TARGET_ID": "FS-中-协同打-093", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4461, + "f_IT": 0.6027, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 160.1, + 6.34 + ], + "effective_radius": 121.51 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.6089, + "survivability": 0.8857, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "中", + "history_success": 0.8 + }, + "FS-中-后勤保-068": { + "TARGET_ID": "FS-中-后勤保-068", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7618, + "f_IT": 0.5085, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.777 + }, + "spatial": { + "position": [ + -27.79, + -11.05 + ], + "effective_radius": 111.95 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4718, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "中", + "history_success": 0.8 + }, + "FS-美-火力打-156": { + "TARGET_ID": "FS-美-火力打-156", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.38, + "f_IT": 0.9836, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -72.97, + 76.42 + ], + "effective_radius": 68.62 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.544, + "survivability": 0.9458, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "美", + "history_success": 0.8 + }, + "FS-俄-指挥控-158": { + "TARGET_ID": "FS-俄-指挥控-158", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7893, + "f_CS": 0.2219, + "f_IT": 0.6838, + "f_DP": 0.6953, + "f_CPS": 0.8929, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -15.38, + 4.63 + ], + "effective_radius": 184.9 + }, + "temporal": { + "response_time": 3.6, + "cycle_time": 5.15, + "data_age": 0.39, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.607, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-情报侦-004": { + "TARGET_ID": "FS-法-情报侦-004", + "function_vector": { + "f_IC": 1.0, + "f_IA": 0.7896, + "f_CS": 0.7731, + "f_IT": 0.554, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -47.01, + -18.1 + ], + "effective_radius": 192.82 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 6.8, + "data_age": 0.89, + "time_window": 6.8 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.041, + "mtbf": 0.6911 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-平台部-148": { + "TARGET_ID": "FS-俄-平台部-148", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.6774, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8468 + }, + "spatial": { + "position": [ + 30.64, + -22.45 + ], + "effective_radius": 207.31 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8576, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-英-平台部-027": { + "TARGET_ID": "FS-英-平台部-027", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.6853, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 159.79, + -23.05 + ], + "effective_radius": 81.42 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5954, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "英", + "history_success": 0.8 + }, + "FS-俄-协同打-061": { + "TARGET_ID": "FS-俄-协同打-061", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8627, + "f_IT": 0.4708, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -47.15, + 81.75 + ], + "effective_radius": 90.37 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9722, + "survivability": 0.596, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-指挥控-044": { + "TARGET_ID": "FS-法-指挥控-044", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.5572, + "f_CS": 0.2881, + "f_IT": 0.5859, + "f_DP": 0.9463, + "f_CPS": 0.6818, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 163.96, + -85.57 + ], + "effective_radius": 165.38 + }, + "temporal": { + "response_time": 14.0, + "cycle_time": 5.15, + "data_age": 0.54, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8603, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-平台部-143": { + "TARGET_ID": "FS-俄-平台部-143", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.675, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.767 + }, + "spatial": { + "position": [ + 111.0, + -55.13 + ], + "effective_radius": 202.51 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6133, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-火力打-098": { + "TARGET_ID": "FS-法-火力打-098", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7585, + "f_IT": 0.4653, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 108.94, + 87.44 + ], + "effective_radius": 194.27 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.7844, + "survivability": 0.39, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-平台部-161": { + "TARGET_ID": "FS-俄-平台部-161", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.7878, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7983 + }, + "spatial": { + "position": [ + 154.47, + -33.09 + ], + "effective_radius": 106.99 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.899, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-后勤保-131": { + "TARGET_ID": "FS-法-后勤保-131", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.6189, + "f_IT": 0.7453, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.6747 + }, + "spatial": { + "position": [ + -103.8, + -34.11 + ], + "effective_radius": 57.36 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8345, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "法", + "history_success": 0.8 + }, + "FS-法-指挥控-036": { + "TARGET_ID": "FS-法-指挥控-036", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 1.0, + "f_CS": 0.1248, + "f_IT": 0.6629, + "f_DP": 0.9437, + "f_CPS": 0.6024, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 57.85, + 89.63 + ], + "effective_radius": 108.56 + }, + "temporal": { + "response_time": 19.8, + "cycle_time": 5.15, + "data_age": 0.29, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.767, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-中-情报侦-033": { + "TARGET_ID": "FS-中-情报侦-033", + "function_vector": { + "f_IC": 0.8729, + "f_IA": 0.7896, + "f_CS": 0.4751, + "f_IT": 0.302, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 4.18, + -8.62 + ], + "effective_radius": 143.26 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 9.7, + "data_age": 0.9, + "time_window": 9.7 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.9897, + "mtbf": 0.9686 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "中", + "history_success": 0.8 + }, + "FS-英-指挥控-112": { + "TARGET_ID": "FS-英-指挥控-112", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.5478, + "f_CS": 0.2107, + "f_IT": 0.6017, + "f_DP": 0.9469, + "f_CPS": 0.6173, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 5.95, + -88.13 + ], + "effective_radius": 218.4 + }, + "temporal": { + "response_time": 18.6, + "cycle_time": 5.15, + "data_age": 0.77, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4503, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "英", + "history_success": 0.8 + }, + "FS-美-情报侦-021": { + "TARGET_ID": "FS-美-情报侦-021", + "function_vector": { + "f_IC": 1.0, + "f_IA": 0.7896, + "f_CS": 0.1698, + "f_IT": 0.3964, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 64.31, + 29.5 + ], + "effective_radius": 174.54 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 4.3, + "data_age": 1.69, + "time_window": 4.3 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.3451, + "mtbf": 0.543 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "美", + "history_success": 0.8 + }, + "FS-俄-后勤保-175": { + "TARGET_ID": "FS-俄-后勤保-175", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.535, + "f_IT": 0.7643, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7002 + }, + "spatial": { + "position": [ + -30.69, + 4.2 + ], + "effective_radius": 123.41 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8354, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-火力打-135": { + "TARGET_ID": "FS-法-火力打-135", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5381, + "f_IT": 0.7366, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 65.85, + -57.06 + ], + "effective_radius": 48.62 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.8127, + "survivability": 0.8573, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-美-协同打-121": { + "TARGET_ID": "FS-美-协同打-121", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3013, + "f_IT": 0.8002, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -64.59, + -76.6 + ], + "effective_radius": 55.65 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.9316, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "美", + "history_success": 0.8 + }, + "FS-英-后勤保-010": { + "TARGET_ID": "FS-英-后勤保-010", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3319, + "f_IT": 0.32, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8914 + }, + "spatial": { + "position": [ + -145.98, + 30.49 + ], + "effective_radius": 61.82 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6769, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "英", + "history_success": 0.8 + }, + "FS-法-后勤保-182": { + "TARGET_ID": "FS-法-后勤保-182", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7217, + "f_IT": 0.3962, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7781 + }, + "spatial": { + "position": [ + -36.09, + -66.4 + ], + "effective_radius": 68.06 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.7855, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-指挥控-149": { + "TARGET_ID": "FS-俄-指挥控-149", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 1.0, + "f_CS": 0.4945, + "f_IT": 0.6744, + "f_DP": 0.6196, + "f_CPS": 0.9585, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -40.08, + -48.24 + ], + "effective_radius": 149.92 + }, + "temporal": { + "response_time": 1.3, + "cycle_time": 5.15, + "data_age": 0.45, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.7019, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-英-火力打-080": { + "TARGET_ID": "FS-英-火力打-080", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.9479, + "f_IT": 0.9467, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 167.98, + 38.37 + ], + "effective_radius": 158.71 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.5407, + "survivability": 0.6096, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "英", + "history_success": 0.8 + }, + "FS-英-协同打-104": { + "TARGET_ID": "FS-英-协同打-104", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 1.0, + "f_IT": 0.9435, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -115.03, + 56.36 + ], + "effective_radius": 166.53 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.9679, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "英", + "history_success": 0.8 + }, + "FS-法-指挥控-101": { + "TARGET_ID": "FS-法-指挥控-101", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.902, + "f_CS": 0.1852, + "f_IT": 0.7894, + "f_DP": 0.8756, + "f_CPS": 0.7194, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 108.99, + -32.27 + ], + "effective_radius": 154.03 + }, + "temporal": { + "response_time": 11.7, + "cycle_time": 5.15, + "data_age": 0.7, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8133, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-平台部-045": { + "TARGET_ID": "FS-俄-平台部-045", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.6497, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.6698 + }, + "spatial": { + "position": [ + 69.8, + -3.7 + ], + "effective_radius": 166.48 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8975, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-中-情报侦-200": { + "TARGET_ID": "FS-中-情报侦-200", + "function_vector": { + "f_IC": 1.0, + "f_IA": 0.7896, + "f_CS": 0.2314, + "f_IT": 0.0586, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -30.22, + -36.6 + ], + "effective_radius": 242.15 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 3.9, + "data_age": 1.49, + "time_window": 3.9 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4962, + "mtbf": 0.6419 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "中", + "history_success": 0.8 + }, + "FS-法-指挥控-169": { + "TARGET_ID": "FS-法-指挥控-169", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 1.0, + "f_CS": 0.4805, + "f_IT": 0.5346, + "f_DP": 0.9457, + "f_CPS": 0.7075, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 76.74, + -15.33 + ], + "effective_radius": 200.36 + }, + "temporal": { + "response_time": 12.4, + "cycle_time": 5.15, + "data_age": 0.32, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4924, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-美-后勤保-160": { + "TARGET_ID": "FS-美-后勤保-160", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 1.0, + "f_IT": 0.3133, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8436 + }, + "spatial": { + "position": [ + -119.43, + 2.98 + ], + "effective_radius": 180.46 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.604, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "美", + "history_success": 0.8 + }, + "FS-美-火力打-125": { + "TARGET_ID": "FS-美-火力打-125", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.9365, + "f_IT": 0.9566, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -8.47, + -85.02 + ], + "effective_radius": 113.51 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.3811, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "美", + "history_success": 0.8 + }, + "FS-中-指挥控-019": { + "TARGET_ID": "FS-中-指挥控-019", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.6023, + "f_CS": 0.2752, + "f_IT": 0.565, + "f_DP": 0.9994, + "f_CPS": 0.5146, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 63.22, + -75.49 + ], + "effective_radius": 114.71 + }, + "temporal": { + "response_time": 28.3, + "cycle_time": 5.15, + "data_age": 0.78, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4155, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "中", + "history_success": 0.8 + }, + "FS-美-指挥控-180": { + "TARGET_ID": "FS-美-指挥控-180", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 1.0, + "f_CS": 0.1526, + "f_IT": 0.5235, + "f_DP": 0.7573, + "f_CPS": 0.6316, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -88.43, + 51.36 + ], + "effective_radius": 247.67 + }, + "temporal": { + "response_time": 17.5, + "cycle_time": 5.15, + "data_age": 0.08, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4737, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "美", + "history_success": 0.8 + }, + "FS-美-情报侦-192": { + "TARGET_ID": "FS-美-情报侦-192", + "function_vector": { + "f_IC": 0.9501, + "f_IA": 0.7896, + "f_CS": 0.0554, + "f_IT": 0.5401, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -124.83, + 29.72 + ], + "effective_radius": 307.77 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 6.0, + "data_age": 0.23, + "time_window": 6.0 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.138, + "mtbf": 0.5223 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "美", + "history_success": 0.8 + }, + "FS-英-后勤保-111": { + "TARGET_ID": "FS-英-后勤保-111", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5775, + "f_IT": 0.4216, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.6403 + }, + "spatial": { + "position": [ + -83.14, + -37.05 + ], + "effective_radius": 255.68 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5703, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "英", + "history_success": 0.8 + }, + "FS-法-指挥控-177": { + "TARGET_ID": "FS-法-指挥控-177", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7089, + "f_CS": 0.3997, + "f_IT": 0.8771, + "f_DP": 0.9404, + "f_CPS": 0.5415, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 47.12, + -40.74 + ], + "effective_radius": 216.42 + }, + "temporal": { + "response_time": 25.4, + "cycle_time": 5.15, + "data_age": 0.63, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6122, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-英-后勤保-020": { + "TARGET_ID": "FS-英-后勤保-020", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4414, + "f_IT": 0.3649, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7518 + }, + "spatial": { + "position": [ + 51.1, + 19.99 + ], + "effective_radius": 142.44 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.7627, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "英", + "history_success": 0.8 + }, + "FS-英-情报侦-199": { + "TARGET_ID": "FS-英-情报侦-199", + "function_vector": { + "f_IC": 0.8834, + "f_IA": 0.7896, + "f_CS": 1.0, + "f_IT": 0.9969, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -148.19, + 40.94 + ], + "effective_radius": 225.26 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 9.8, + "data_age": 0.43, + "time_window": 9.8 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4763, + "mtbf": 0.7887 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "英", + "history_success": 0.8 + }, + "FS-英-情报侦-184": { + "TARGET_ID": "FS-英-情报侦-184", + "function_vector": { + "f_IC": 1.0, + "f_IA": 0.7896, + "f_CS": 0.8517, + "f_IT": 0.5555, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -110.32, + -33.03 + ], + "effective_radius": 189.97 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 2.8, + "data_age": 1.1, + "time_window": 2.8 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.159, + "mtbf": 1.0371 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "英", + "history_success": 0.8 + }, + "FS-中-平台部-197": { + "TARGET_ID": "FS-中-平台部-197", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.9193, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.718 + }, + "spatial": { + "position": [ + -35.25, + -52.18 + ], + "effective_radius": 191.51 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5796, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "中", + "history_success": 0.8 + }, + "FS-英-协同打-113": { + "TARGET_ID": "FS-英-协同打-113", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.6728, + "f_IT": 0.4066, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -6.52, + -38.96 + ], + "effective_radius": 120.15 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.8282, + "survivability": 0.9786, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "英", + "history_success": 0.8 + }, + "FS-法-火力打-032": { + "TARGET_ID": "FS-法-火力打-032", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4676, + "f_IT": 0.9088, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 134.38, + -75.35 + ], + "effective_radius": 74.68 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.966, + "survivability": 0.8546, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-英-后勤保-008": { + "TARGET_ID": "FS-英-后勤保-008", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3779, + "f_IT": 0.7331, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7386 + }, + "spatial": { + "position": [ + -23.56, + -45.23 + ], + "effective_radius": 65.32 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.721, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "英", + "history_success": 0.8 + }, + "FS-美-情报侦-154": { + "TARGET_ID": "FS-美-情报侦-154", + "function_vector": { + "f_IC": 0.7904, + "f_IA": 0.7896, + "f_CS": 0.2422, + "f_IT": 0.9034, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -81.37, + -78.26 + ], + "effective_radius": 98.14 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 2.9, + "data_age": 1.46, + "time_window": 2.9 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5885, + "mtbf": 0.7714 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "美", + "history_success": 0.8 + }, + "FS-中-火力打-049": { + "TARGET_ID": "FS-中-火力打-049", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.9165, + "f_IT": 0.4009, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -127.39, + -25.62 + ], + "effective_radius": 82.45 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.798, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "中", + "history_success": 0.8 + }, + "FS-法-后勤保-069": { + "TARGET_ID": "FS-法-后勤保-069", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4209, + "f_IT": 0.5862, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7342 + }, + "spatial": { + "position": [ + 35.12, + -82.12 + ], + "effective_radius": 90.25 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8042, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-后勤保-052": { + "TARGET_ID": "FS-俄-后勤保-052", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5408, + "f_IT": 0.5843, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7032 + }, + "spatial": { + "position": [ + -42.92, + 49.63 + ], + "effective_radius": 45.51 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8906, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-中-后勤保-195": { + "TARGET_ID": "FS-中-后勤保-195", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.302, + "f_IT": 0.7892, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7378 + }, + "spatial": { + "position": [ + 158.62, + 14.0 + ], + "effective_radius": 39.93 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5457, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "中", + "history_success": 0.8 + }, + "FS-美-协同打-072": { + "TARGET_ID": "FS-美-协同打-072", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.9463, + "f_IT": 0.8975, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 98.47, + 74.22 + ], + "effective_radius": 38.06 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.5704, + "survivability": 0.5812, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "美", + "history_success": 0.8 + }, + "FS-法-协同打-140": { + "TARGET_ID": "FS-法-协同打-140", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7161, + "f_IT": 0.82, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -1.05, + -47.04 + ], + "effective_radius": 49.48 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.8724, + "survivability": 0.4388, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "法", + "history_success": 0.8 + }, + "FS-中-火力打-074": { + "TARGET_ID": "FS-中-火力打-074", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5396, + "f_IT": 0.6702, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 172.68, + -47.7 + ], + "effective_radius": 63.26 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.7801, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "中", + "history_success": 0.8 + }, + "FS-法-协同打-066": { + "TARGET_ID": "FS-法-协同打-066", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3555, + "f_IT": 0.8099, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 132.82, + 53.65 + ], + "effective_radius": 69.51 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.4455, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-美-后勤保-189": { + "TARGET_ID": "FS-美-后勤保-189", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5779, + "f_IT": 0.3424, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.9093 + }, + "spatial": { + "position": [ + -155.89, + 74.37 + ], + "effective_radius": 62.65 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.679, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "美", + "history_success": 0.8 + }, + "FS-法-情报侦-086": { + "TARGET_ID": "FS-法-情报侦-086", + "function_vector": { + "f_IC": 0.7697, + "f_IA": 0.7896, + "f_CS": 0.0882, + "f_IT": 0.8233, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 174.31, + 69.0 + ], + "effective_radius": 120.54 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 4.8, + "data_age": 1.58, + "time_window": 4.8 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.3069, + "mtbf": 1.0343 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": null, + "history_success": 0.8 + }, + "FS-俄-火力打-075": { + "TARGET_ID": "FS-俄-火力打-075", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.326, + "f_IT": 0.763, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 98.09, + -51.67 + ], + "effective_radius": 112.21 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.6778, + "survivability": 0.3572, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-中-情报侦-055": { + "TARGET_ID": "FS-中-情报侦-055", + "function_vector": { + "f_IC": 1.0, + "f_IA": 0.7896, + "f_CS": 0.0215, + "f_IT": 0.6294, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 84.96, + 31.53 + ], + "effective_radius": 185.42 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 3.2, + "data_age": 1.62, + "time_window": 3.2 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.2607, + "mtbf": 0.839 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "中", + "history_success": 0.8 + }, + "FS-中-火力打-035": { + "TARGET_ID": "FS-中-火力打-035", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3154, + "f_IT": 0.5999, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -165.36, + -21.33 + ], + "effective_radius": 123.38 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.6113, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "中", + "history_success": 0.8 + }, + "FS-中-情报侦-009": { + "TARGET_ID": "FS-中-情报侦-009", + "function_vector": { + "f_IC": 0.7323, + "f_IA": 0.7896, + "f_CS": 0.8015, + "f_IT": 0.2499, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -23.67, + 13.7 + ], + "effective_radius": 172.81 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 6.9, + "data_age": 1.34, + "time_window": 6.9 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.0899, + "mtbf": 0.763 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "中", + "history_success": 0.8 + }, + "FS-法-情报侦-173": { + "TARGET_ID": "FS-法-情报侦-173", + "function_vector": { + "f_IC": 0.9735, + "f_IA": 0.7896, + "f_CS": 0.8111, + "f_IT": 0.2786, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 30.49, + -62.01 + ], + "effective_radius": 179.06 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 6.5, + "data_age": 1.81, + "time_window": 6.5 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.0277, + "mtbf": 1.0851 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "法", + "history_success": 0.8 + }, + "FS-中-协同打-103": { + "TARGET_ID": "FS-中-协同打-103", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3607, + "f_IT": 0.9595, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 0.24, + 6.34 + ], + "effective_radius": 178.6 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.8821, + "survivability": 0.837, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "中", + "history_success": 0.8 + }, + "FS-英-协同打-105": { + "TARGET_ID": "FS-英-协同打-105", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4932, + "f_IT": 0.7337, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 150.46, + 0.32 + ], + "effective_radius": 142.69 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.9135, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "英", + "history_success": 0.8 + }, + "FS-俄-指挥控-099": { + "TARGET_ID": "FS-俄-指挥控-099", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.625, + "f_CS": 0.177, + "f_IT": 0.973, + "f_DP": 0.8286, + "f_CPS": 0.6198, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -146.99, + 45.81 + ], + "effective_radius": 141.65 + }, + "temporal": { + "response_time": 18.4, + "cycle_time": 5.15, + "data_age": 0.17, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8707, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-中-平台部-091": { + "TARGET_ID": "FS-中-平台部-091", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.9867, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8126 + }, + "spatial": { + "position": [ + 142.43, + -61.99 + ], + "effective_radius": 154.9 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.9472, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "中", + "history_success": 0.8 + }, + "FS-中-后勤保-138": { + "TARGET_ID": "FS-中-后勤保-138", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3785, + "f_IT": 0.3153, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7308 + }, + "spatial": { + "position": [ + 122.1, + 14.37 + ], + "effective_radius": 141.96 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8314, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "中", + "history_success": 0.8 + }, + "FS-法-火力打-028": { + "TARGET_ID": "FS-法-火力打-028", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8924, + "f_IT": 0.8711, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -127.35, + -41.31 + ], + "effective_radius": 72.29 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.6893, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "法", + "history_success": 0.8 + }, + "FS-法-平台部-171": { + "TARGET_ID": "FS-法-平台部-171", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.6564, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7938 + }, + "spatial": { + "position": [ + -66.88, + 83.57 + ], + "effective_radius": 76.95 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5498, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-火力打-162": { + "TARGET_ID": "FS-俄-火力打-162", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8255, + "f_IT": 0.5217, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -70.32, + -29.69 + ], + "effective_radius": 84.86 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.6705, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-美-情报侦-089": { + "TARGET_ID": "FS-美-情报侦-089", + "function_vector": { + "f_IC": 1.0, + "f_IA": 0.7896, + "f_CS": 0.5781, + "f_IT": 0.2651, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -32.17, + -78.07 + ], + "effective_radius": 155.53 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 4.0, + "data_age": 1.24, + "time_window": 4.0 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.0279, + "mtbf": 0.8035 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "美", + "history_success": 0.8 + }, + "FS-俄-指挥控-167": { + "TARGET_ID": "FS-俄-指挥控-167", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 1.0, + "f_CS": 0.129, + "f_IT": 0.7337, + "f_DP": 0.9859, + "f_CPS": 0.8451, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 115.74, + 60.12 + ], + "effective_radius": 213.75 + }, + "temporal": { + "response_time": 5.5, + "cycle_time": 5.15, + "data_age": 0.41, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5123, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-美-后勤保-115": { + "TARGET_ID": "FS-美-后勤保-115", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4166, + "f_IT": 0.6417, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.709 + }, + "spatial": { + "position": [ + 12.75, + 15.19 + ], + "effective_radius": 200.0 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.7896, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "美", + "history_success": 0.8 + }, + "FS-法-情报侦-012": { + "TARGET_ID": "FS-法-情报侦-012", + "function_vector": { + "f_IC": 1.0, + "f_IA": 0.7896, + "f_CS": 0.0797, + "f_IT": 0.2364, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -10.6, + -89.88 + ], + "effective_radius": 145.99 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 1.1, + "data_age": 0.83, + "time_window": 1.1 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.2374, + "mtbf": 0.9705 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-火力打-096": { + "TARGET_ID": "FS-俄-火力打-096", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8289, + "f_IT": 0.7286, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -19.22, + 31.82 + ], + "effective_radius": 79.63 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.7478, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-俄-火力打-014": { + "TARGET_ID": "FS-俄-火力打-014", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8816, + "f_IT": 0.7325, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -1.62, + -37.05 + ], + "effective_radius": 88.63 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.3836, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-英-火力打-150": { + "TARGET_ID": "FS-英-火力打-150", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4547, + "f_IT": 0.5932, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -59.95, + 35.17 + ], + "effective_radius": 73.94 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.7931, + "survivability": 0.41, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "英", + "history_success": 0.8 + }, + "FS-法-平台部-102": { + "TARGET_ID": "FS-法-平台部-102", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.6273, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7974 + }, + "spatial": { + "position": [ + -53.03, + -14.62 + ], + "effective_radius": 89.55 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.9489, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-协同打-155": { + "TARGET_ID": "FS-俄-协同打-155", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8997, + "f_IT": 0.6182, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 131.28, + 4.51 + ], + "effective_radius": 86.88 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.5524, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-美-协同打-017": { + "TARGET_ID": "FS-美-协同打-017", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7954, + "f_IT": 0.6425, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -61.05, + -76.77 + ], + "effective_radius": 88.86 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9455, + "survivability": 0.386, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "美", + "history_success": 0.8 + }, + "FS-英-火力打-178": { + "TARGET_ID": "FS-英-火力打-178", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8017, + "f_IT": 0.8574, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -40.79, + -66.36 + ], + "effective_radius": 69.1 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9294, + "survivability": 0.517, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "英", + "history_success": 0.8 + }, + "FS-美-平台部-123": { + "TARGET_ID": "FS-美-平台部-123", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.7163, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8385 + }, + "spatial": { + "position": [ + 74.87, + 41.3 + ], + "effective_radius": 82.37 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5749, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "美", + "history_success": 0.8 + }, + "FS-俄-火力打-087": { + "TARGET_ID": "FS-俄-火力打-087", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8284, + "f_IT": 0.7158, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -62.32, + -30.19 + ], + "effective_radius": 75.4 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.71, + "survivability": 0.4256, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-协同打-120": { + "TARGET_ID": "FS-法-协同打-120", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3024, + "f_IT": 0.6013, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 155.48, + -10.42 + ], + "effective_radius": 58.56 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.704, + "survivability": 0.6594, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-后勤保-022": { + "TARGET_ID": "FS-俄-后勤保-022", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.2692, + "f_IT": 0.6477, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.685 + }, + "spatial": { + "position": [ + 111.85, + 12.73 + ], + "effective_radius": 1138.75 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.7992, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-指挥控-136": { + "TARGET_ID": "FS-法-指挥控-136", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.8348, + "f_CS": 0.194, + "f_IT": 0.8848, + "f_DP": 0.9276, + "f_CPS": 0.6881, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 73.85, + 89.17 + ], + "effective_radius": 1221.96 + }, + "temporal": { + "response_time": 13.6, + "cycle_time": 5.15, + "data_age": 0.3, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4318, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "法", + "history_success": 0.8 + }, + "FS-美-火力打-001": { + "TARGET_ID": "FS-美-火力打-001", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4256, + "f_IT": 0.986, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -176.33, + 32.86 + ], + "effective_radius": 1247.79 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.8895, + "survivability": 0.8719, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "美", + "history_success": 0.8 + }, + "FS-俄-平台部-146": { + "TARGET_ID": "FS-俄-平台部-146", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.8308, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8024 + }, + "spatial": { + "position": [ + -121.63, + -56.83 + ], + "effective_radius": 104.83 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5831, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-俄-协同打-041": { + "TARGET_ID": "FS-俄-协同打-041", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.9265, + "f_IT": 0.4221, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 114.58, + 41.7 + ], + "effective_radius": 17.27 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.8306, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-中-指挥控-097": { + "TARGET_ID": "FS-中-指挥控-097", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.5111, + "f_CS": 0.404, + "f_IT": 0.6641, + "f_DP": 0.9317, + "f_CPS": 0.5882, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -61.48, + 5.78 + ], + "effective_radius": 116.74 + }, + "temporal": { + "response_time": 21.0, + "cycle_time": 5.15, + "data_age": 0.48, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.7997, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "中", + "history_success": 0.8 + }, + "FS-英-协同打-134": { + "TARGET_ID": "FS-英-协同打-134", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.867, + "f_IT": 0.6994, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 81.81, + 26.38 + ], + "effective_radius": 163.59 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.9215, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": null, + "history_success": 0.8 + }, + "FS-法-协同打-084": { + "TARGET_ID": "FS-法-协同打-084", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4728, + "f_IT": 0.9542, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 104.98, + -34.65 + ], + "effective_radius": 162.41 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.8282, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "法", + "history_success": 0.8 + }, + "FS-美-平台部-165": { + "TARGET_ID": "FS-美-平台部-165", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.85, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7945 + }, + "spatial": { + "position": [ + -149.48, + -57.04 + ], + "effective_radius": 91.24 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6973, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "美", + "history_success": 0.8 + }, + "FS-法-平台部-188": { + "TARGET_ID": "FS-法-平台部-188", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.8258, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7893 + }, + "spatial": { + "position": [ + 23.87, + 84.48 + ], + "effective_radius": 135.29 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.9416, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-中-协同打-109": { + "TARGET_ID": "FS-中-协同打-109", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5354, + "f_IT": 0.9551, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -152.3, + 29.24 + ], + "effective_radius": 129.29 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.7233, + "survivability": 0.8264, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "中", + "history_success": 0.8 + }, + "FS-美-后勤保-194": { + "TARGET_ID": "FS-美-后勤保-194", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4092, + "f_IT": 0.7029, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8943 + }, + "spatial": { + "position": [ + -118.26, + -27.2 + ], + "effective_radius": 82.22 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5173, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": null, + "history_success": 0.8 + }, + "FS-中-协同打-193": { + "TARGET_ID": "FS-中-协同打-193", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7469, + "f_IT": 0.6549, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -80.02, + 74.68 + ], + "effective_radius": 53.08 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.6898, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "中", + "history_success": 0.8 + }, + "FS-法-协同打-018": { + "TARGET_ID": "FS-法-协同打-018", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3544, + "f_IT": 0.9249, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 45.47, + -43.93 + ], + "effective_radius": 62.84 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.504, + "survivability": 0.8418, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "法", + "history_success": 0.8 + }, + "FS-法-后勤保-062": { + "TARGET_ID": "FS-法-后勤保-062", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.6768, + "f_IT": 0.4262, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.912 + }, + "spatial": { + "position": [ + -25.58, + -54.57 + ], + "effective_radius": 64.9 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4416, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-指挥控-141": { + "TARGET_ID": "FS-俄-指挥控-141", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.4527, + "f_CS": 0.4925, + "f_IT": 0.8016, + "f_DP": 0.9413, + "f_CPS": 0.5068, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -45.32, + -86.08 + ], + "effective_radius": 127.44 + }, + "temporal": { + "response_time": 29.2, + "cycle_time": 5.15, + "data_age": 0.76, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.645, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-美-情报侦-081": { + "TARGET_ID": "FS-美-情报侦-081", + "function_vector": { + "f_IC": 0.9453, + "f_IA": 0.7896, + "f_CS": 1.0, + "f_IT": 0.5374, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -103.79, + -10.14 + ], + "effective_radius": 158.87 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 2.2, + "data_age": 1.82, + "time_window": 2.2 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8781, + "mtbf": 0.666 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "美", + "history_success": 0.8 + }, + "FS-美-后勤保-077": { + "TARGET_ID": "FS-美-后勤保-077", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7564, + "f_IT": 0.7326, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.9215 + }, + "spatial": { + "position": [ + -159.1, + 78.0 + ], + "effective_radius": 157.74 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4948, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "美", + "history_success": 0.8 + }, + "FS-美-指挥控-078": { + "TARGET_ID": "FS-美-指挥控-078", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 1.0, + "f_CS": 0.0465, + "f_IT": 0.5998, + "f_DP": 0.9125, + "f_CPS": 0.5929, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 76.36, + -17.44 + ], + "effective_radius": 104.46 + }, + "temporal": { + "response_time": 20.6, + "cycle_time": 5.15, + "data_age": 0.99, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.7024, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "美", + "history_success": 0.8 + }, + "FS-美-指挥控-006": { + "TARGET_ID": "FS-美-指挥控-006", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.5605, + "f_CS": 0.1665, + "f_IT": 0.5484, + "f_DP": 0.9037, + "f_CPS": 0.5859, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 12.06, + -31.33 + ], + "effective_radius": 219.63 + }, + "temporal": { + "response_time": 21.2, + "cycle_time": 5.15, + "data_age": 0.74, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4592, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "美", + "history_success": 0.8 + }, + "FS-俄-后勤保-181": { + "TARGET_ID": "FS-俄-后勤保-181", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5736, + "f_IT": 0.5118, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8772 + }, + "spatial": { + "position": [ + -31.16, + -62.94 + ], + "effective_radius": 221.46 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6617, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-美-协同打-082": { + "TARGET_ID": "FS-美-协同打-082", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.626, + "f_IT": 0.7799, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -100.29, + -28.91 + ], + "effective_radius": 204.86 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.5451, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "美", + "history_success": 0.8 + }, + "FS-中-协同打-007": { + "TARGET_ID": "FS-中-协同打-007", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8419, + "f_IT": 0.9966, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -160.58, + 86.72 + ], + "effective_radius": 56.92 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.6388, + "survivability": 0.3531, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "中", + "history_success": 0.8 + }, + "FS-俄-协同打-076": { + "TARGET_ID": "FS-俄-协同打-076", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.547, + "f_IT": 0.586, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -50.95, + -4.28 + ], + "effective_radius": 65.58 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.4921, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-中-平台部-153": { + "TARGET_ID": "FS-中-平台部-153", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.8077, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8347 + }, + "spatial": { + "position": [ + -170.19, + -44.57 + ], + "effective_radius": 92.24 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.746, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "中", + "history_success": 0.8 + }, + "FS-英-指挥控-013": { + "TARGET_ID": "FS-英-指挥控-013", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.5018, + "f_CS": 0.2264, + "f_IT": 0.6378, + "f_DP": 0.7213, + "f_CPS": 0.5348, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 120.99, + 13.77 + ], + "effective_radius": 195.25 + }, + "temporal": { + "response_time": 26.1, + "cycle_time": 5.15, + "data_age": 0.82, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4431, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "英", + "history_success": 0.8 + }, + "FS-法-后勤保-058": { + "TARGET_ID": "FS-法-后勤保-058", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3549, + "f_IT": 0.5211, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.4716 + }, + "spatial": { + "position": [ + 0.59, + 66.29 + ], + "effective_radius": 185.05 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6906, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-美-协同打-176": { + "TARGET_ID": "FS-美-协同打-176", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.6857, + "f_IT": 0.6827, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -86.89, + 76.54 + ], + "effective_radius": 151.53 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.6681, + "survivability": 0.844, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": null, + "history_success": 0.8 + }, + "FS-俄-火力打-163": { + "TARGET_ID": "FS-俄-火力打-163", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.763, + "f_IT": 0.4582, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -155.08, + 47.36 + ], + "effective_radius": 43.29 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.6992, + "survivability": 0.8489, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-美-后勤保-059": { + "TARGET_ID": "FS-美-后勤保-059", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4444, + "f_IT": 0.6996, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8125 + }, + "spatial": { + "position": [ + -87.14, + 85.28 + ], + "effective_radius": 35.62 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4354, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "美", + "history_success": 0.8 + }, + "FS-法-火力打-179": { + "TARGET_ID": "FS-法-火力打-179", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5439, + "f_IT": 0.6781, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -105.68, + -39.29 + ], + "effective_radius": 41.51 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.6214, + "survivability": 0.6298, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "法", + "history_success": 0.8 + }, + "FS-美-后勤保-170": { + "TARGET_ID": "FS-美-后勤保-170", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5812, + "f_IT": 0.6802, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8849 + }, + "spatial": { + "position": [ + -13.06, + -73.16 + ], + "effective_radius": 41.63 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5981, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "美", + "history_success": 0.8 + }, + "FS-英-指挥控-128": { + "TARGET_ID": "FS-英-指挥控-128", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.4227, + "f_CS": 0.1197, + "f_IT": 0.8593, + "f_DP": 0.8622, + "f_CPS": 0.1093, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 88.93, + -72.29 + ], + "effective_radius": 100.11 + }, + "temporal": { + "response_time": 244.4631, + "cycle_time": 5.15, + "data_age": 0.94, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5359, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "英", + "history_success": 0.8 + }, + "FS-俄-后勤保-107": { + "TARGET_ID": "FS-俄-后勤保-107", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4481, + "f_IT": 0.6226, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.6165 + }, + "spatial": { + "position": [ + -3.69, + 29.16 + ], + "effective_radius": 91.94 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5559, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-指挥控-117": { + "TARGET_ID": "FS-法-指挥控-117", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.4366, + "f_CS": 0.4571, + "f_IT": 0.6234, + "f_DP": 0.8859, + "f_CPS": 0.8798, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -173.4, + 60.77 + ], + "effective_radius": 183.19 + }, + "temporal": { + "response_time": 4.1, + "cycle_time": 5.15, + "data_age": 0.48, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.7128, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-英-指挥控-164": { + "TARGET_ID": "FS-英-指挥控-164", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.6744, + "f_CS": 0.1893, + "f_IT": 0.5053, + "f_DP": 0.9432, + "f_CPS": 0.625, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 44.63, + 56.91 + ], + "effective_radius": 244.01 + }, + "temporal": { + "response_time": 18.0, + "cycle_time": 5.15, + "data_age": 0.49, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6948, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "英", + "history_success": 0.8 + }, + "FS-法-情报侦-198": { + "TARGET_ID": "FS-法-情报侦-198", + "function_vector": { + "f_IC": 1.0, + "f_IA": 0.7896, + "f_CS": 0.718, + "f_IT": 0.1325, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -35.55, + -16.97 + ], + "effective_radius": 335.47 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 1.2, + "data_age": 1.25, + "time_window": 1.2 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.2942, + "mtbf": 1.0498 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-后勤保-139": { + "TARGET_ID": "FS-俄-后勤保-139", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7198, + "f_IT": 0.7163, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7619 + }, + "spatial": { + "position": [ + -23.55, + -38.21 + ], + "effective_radius": 239.49 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4158, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-美-火力打-094": { + "TARGET_ID": "FS-美-火力打-094", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3316, + "f_IT": 0.8413, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -128.58, + 53.89 + ], + "effective_radius": 140.89 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.9391, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "美", + "history_success": 0.8 + }, + "FS-中-情报侦-130": { + "TARGET_ID": "FS-中-情报侦-130", + "function_vector": { + "f_IC": 0.9004, + "f_IA": 0.7896, + "f_CS": 0.1138, + "f_IT": 0.5546, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -165.22, + -14.2 + ], + "effective_radius": 76.52 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.0, + "data_age": 0.12, + "time_window": 5.0 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.032, + "mtbf": 0.7968 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "中", + "history_success": 0.8 + }, + "FS-英-协同打-185": { + "TARGET_ID": "FS-英-协同打-185", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4841, + "f_IT": 0.8529, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -26.63, + 43.17 + ], + "effective_radius": 100.07 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.909, + "survivability": 0.5475, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "英", + "history_success": 0.8 + }, + "FS-俄-平台部-016": { + "TARGET_ID": "FS-俄-平台部-016", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.8994, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8196 + }, + "spatial": { + "position": [ + -149.36, + -64.42 + ], + "effective_radius": 90.37 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8111, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-中-协同打-129": { + "TARGET_ID": "FS-中-协同打-129", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.9854, + "f_IT": 0.8735, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 143.98, + 79.64 + ], + "effective_radius": 78.06 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.9288, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "中", + "history_success": 0.8 + }, + "FS-英-后勤保-168": { + "TARGET_ID": "FS-英-后勤保-168", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4137, + "f_IT": 0.4098, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7191 + }, + "spatial": { + "position": [ + 149.6, + 59.12 + ], + "effective_radius": 61.38 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4696, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "英", + "history_success": 0.8 + }, + "FS-中-火力打-174": { + "TARGET_ID": "FS-中-火力打-174", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8392, + "f_IT": 0.6997, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -173.96, + 8.32 + ], + "effective_radius": 55.79 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.8967, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "中", + "history_success": 0.8 + }, + "FS-英-后勤保-065": { + "TARGET_ID": "FS-英-后勤保-065", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3412, + "f_IT": 0.6459, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.504 + }, + "spatial": { + "position": [ + 127.59, + -23.61 + ], + "effective_radius": 42.31 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5348, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "英", + "history_success": 0.8 + }, + "FS-俄-协同打-073": { + "TARGET_ID": "FS-俄-协同打-073", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.9821, + "f_IT": 0.7548, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 32.6, + 64.82 + ], + "effective_radius": 59.3 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.9998, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-指挥控-030": { + "TARGET_ID": "FS-法-指挥控-030", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.3326, + "f_CS": 0.1154, + "f_IT": 0.6264, + "f_DP": 0.993, + "f_CPS": 0.5051, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 69.0, + -77.02 + ], + "effective_radius": 94.69 + }, + "temporal": { + "response_time": 29.4, + "cycle_time": 5.15, + "data_age": 0.16, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6086, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "法", + "history_success": 0.8 + }, + "FS-中-情报侦-110": { + "TARGET_ID": "FS-中-情报侦-110", + "function_vector": { + "f_IC": 0.943, + "f_IA": 0.7896, + "f_CS": 0.6541, + "f_IT": 0.0787, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -7.04, + -62.68 + ], + "effective_radius": 142.86 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 1.3, + "data_age": 0.42, + "time_window": 1.3 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.1359, + "mtbf": 0.8205 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "中", + "history_success": 0.8 + }, + "FS-俄-后勤保-157": { + "TARGET_ID": "FS-俄-后勤保-157", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7835, + "f_IT": 0.7762, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7119 + }, + "spatial": { + "position": [ + 50.29, + -59.03 + ], + "effective_radius": 122.73 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8382, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-后勤保-060": { + "TARGET_ID": "FS-法-后勤保-060", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5191, + "f_IT": 0.7206, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8887 + }, + "spatial": { + "position": [ + 6.97, + 80.74 + ], + "effective_radius": 86.4 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6748, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-英-后勤保-124": { + "TARGET_ID": "FS-英-后勤保-124", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.38, + "f_IT": 0.5558, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7266 + }, + "spatial": { + "position": [ + -34.0, + 27.03 + ], + "effective_radius": 41.17 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.7531, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "英", + "history_success": 0.8 + }, + "FS-英-协同打-005": { + "TARGET_ID": "FS-英-协同打-005", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5927, + "f_IT": 0.9016, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -25.59, + -11.13 + ], + "effective_radius": 41.0 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.8848, + "survivability": 0.4568, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "英", + "history_success": 0.8 + }, + "FS-俄-情报侦-071": { + "TARGET_ID": "FS-俄-情报侦-071", + "function_vector": { + "f_IC": 0.6701, + "f_IA": 0.7896, + "f_CS": 0.2984, + "f_IT": 0.5003, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 106.49, + -30.06 + ], + "effective_radius": 57.06 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 6.4, + "data_age": 1.67, + "time_window": 6.4 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.768, + "mtbf": 0.6495 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-英-情报侦-064": { + "TARGET_ID": "FS-英-情报侦-064", + "function_vector": { + "f_IC": 0.829, + "f_IA": 0.7896, + "f_CS": 0.4306, + "f_IT": 0.3296, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -94.77, + -56.31 + ], + "effective_radius": 100.68 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 4.7, + "data_age": 1.45, + "time_window": 4.7 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.1402, + "mtbf": 0.64 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "英", + "history_success": 0.8 + }, + "FS-俄-协同打-053": { + "TARGET_ID": "FS-俄-协同打-053", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.9439, + "f_IT": 0.8318, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 161.77, + 14.56 + ], + "effective_radius": 120.03 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.4229, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-英-指挥控-151": { + "TARGET_ID": "FS-英-指挥控-151", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 1.0, + "f_CS": 0.399, + "f_IT": 0.9097, + "f_DP": 0.8306, + "f_CPS": 0.5618, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 61.43, + 63.97 + ], + "effective_radius": 145.83 + }, + "temporal": { + "response_time": 23.4, + "cycle_time": 5.15, + "data_age": 0.42, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8223, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "英", + "history_success": 0.8 + }, + "FS-俄-火力打-002": { + "TARGET_ID": "FS-俄-火力打-002", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8146, + "f_IT": 0.5778, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -82.39, + 88.79 + ], + "effective_radius": 101.09 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.923, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-美-情报侦-054": { + "TARGET_ID": "FS-美-情报侦-054", + "function_vector": { + "f_IC": 0.7936, + "f_IA": 0.7896, + "f_CS": 0.3703, + "f_IT": 0.1596, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -141.16, + -70.62 + ], + "effective_radius": 123.87 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.5, + "data_age": 1.99, + "time_window": 5.5 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.7511, + "mtbf": 0.6363 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "美", + "history_success": 0.8 + }, + "FS-中-火力打-092": { + "TARGET_ID": "FS-中-火力打-092", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7637, + "f_IT": 0.5838, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 149.18, + 29.66 + ], + "effective_radius": 100.18 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.5374, + "survivability": 0.6866, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "中", + "history_success": 0.8 + }, + "FS-英-火力打-056": { + "TARGET_ID": "FS-英-火力打-056", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7761, + "f_IT": 0.7513, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -161.89, + -12.91 + ], + "effective_radius": 112.4 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.5861, + "survivability": 0.8063, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "英", + "history_success": 0.8 + }, + "FS-中-后勤保-186": { + "TARGET_ID": "FS-中-后勤保-186", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7908, + "f_IT": 0.3109, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.5906 + }, + "spatial": { + "position": [ + -158.54, + -72.13 + ], + "effective_radius": 74.97 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4364, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "中", + "history_success": 0.8 + }, + "FS-美-协同打-114": { + "TARGET_ID": "FS-美-协同打-114", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.35, + "f_IT": 0.9683, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 140.51, + -82.6 + ], + "effective_radius": 68.26 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.6219, + "survivability": 0.3773, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "美", + "history_success": 0.8 + }, + "FS-俄-指挥控-038": { + "TARGET_ID": "FS-俄-指挥控-038", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.6987, + "f_CS": 0.119, + "f_IT": 0.7676, + "f_DP": 0.9489, + "f_CPS": 0.9346, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -132.34, + -30.55 + ], + "effective_radius": 170.99 + }, + "temporal": { + "response_time": 2.1, + "cycle_time": 5.15, + "data_age": 0.98, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.9163, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-美-情报侦-122": { + "TARGET_ID": "FS-美-情报侦-122", + "function_vector": { + "f_IC": 0.7972, + "f_IA": 0.7896, + "f_CS": 0.052, + "f_IT": 0.7232, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 68.32, + 83.11 + ], + "effective_radius": 184.04 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 7.3, + "data_age": 1.98, + "time_window": 7.3 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.0604, + "mtbf": 0.9852 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "美", + "history_success": 0.8 + }, + "FS-英-指挥控-191": { + "TARGET_ID": "FS-英-指挥控-191", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 1.0, + "f_CS": 0.4323, + "f_IT": 0.6536, + "f_DP": 0.9499, + "f_CPS": 0.5164, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 16.27, + 57.45 + ], + "effective_radius": 307.01 + }, + "temporal": { + "response_time": 28.1, + "cycle_time": 5.15, + "data_age": 0.91, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6441, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "英", + "history_success": 0.8 + }, + "FS-法-指挥控-187": { + "TARGET_ID": "FS-法-指挥控-187", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.9597, + "f_CS": 0.0695, + "f_IT": 0.5416, + "f_DP": 0.6478, + "f_CPS": 0.5618, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 15.98, + 61.35 + ], + "effective_radius": 216.7 + }, + "temporal": { + "response_time": 23.4, + "cycle_time": 5.15, + "data_age": 0.15, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.9724, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-美-协同打-034": { + "TARGET_ID": "FS-美-协同打-034", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4738, + "f_IT": 0.9665, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 48.25, + 35.64 + ], + "effective_radius": 214.06 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.8793, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "美", + "history_success": 0.8 + }, + "FS-美-协同打-152": { + "TARGET_ID": "FS-美-协同打-152", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7782, + "f_IT": 0.7527, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -93.95, + 48.16 + ], + "effective_radius": 76.73 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.6228, + "survivability": 0.3867, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "美", + "history_success": 0.8 + }, + "FS-俄-平台部-183": { + "TARGET_ID": "FS-俄-平台部-183", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.6683, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7653 + }, + "spatial": { + "position": [ + 159.07, + -48.18 + ], + "effective_radius": 69.1 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.924, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-英-平台部-106": { + "TARGET_ID": "FS-英-平台部-106", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.7091, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.847 + }, + "spatial": { + "position": [ + 54.27, + -72.25 + ], + "effective_radius": 63.77 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.9265, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "英", + "history_success": 0.8 + }, + "FS-俄-后勤保-100": { + "TARGET_ID": "FS-俄-后勤保-100", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7521, + "f_IT": 0.6079, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.9172 + }, + "spatial": { + "position": [ + -94.69, + 39.81 + ], + "effective_radius": 70.87 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4429, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-俄-平台部-063": { + "TARGET_ID": "FS-俄-平台部-063", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.6797, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.72 + }, + "spatial": { + "position": [ + 58.52, + 88.58 + ], + "effective_radius": 66.87 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.7194, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-中-情报侦-024": { + "TARGET_ID": "FS-中-情报侦-024", + "function_vector": { + "f_IC": 0.762, + "f_IA": 0.7896, + "f_CS": 0.0075, + "f_IT": 0.1109, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 51.13, + -29.49 + ], + "effective_radius": 68.1 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.6, + "data_age": 0.29, + "time_window": 5.6 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.0543, + "mtbf": 0.5062 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "中", + "history_success": 0.8 + }, + "FS-美-火力打-196": { + "TARGET_ID": "FS-美-火力打-196", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5953, + "f_IT": 0.4897, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -91.68, + -16.54 + ], + "effective_radius": 67.74 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.6182, + "survivability": 0.302, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "美", + "history_success": 0.8 + }, + "FS-俄-火力打-051": { + "TARGET_ID": "FS-俄-火力打-051", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4845, + "f_IT": 0.6367, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 46.91, + 16.81 + ], + "effective_radius": 71.72 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.5308, + "survivability": 0.7234, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-协同打-047": { + "TARGET_ID": "FS-法-协同打-047", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.3287, + "f_IT": 0.9218, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 54.41, + 7.75 + ], + "effective_radius": 71.91 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9562, + "survivability": 0.5817, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-英-火力打-127": { + "TARGET_ID": "FS-英-火力打-127", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5734, + "f_IT": 0.859, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 128.84, + 44.43 + ], + "effective_radius": 65.84 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.4572, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "英", + "history_success": 0.8 + }, + "FS-英-后勤保-119": { + "TARGET_ID": "FS-英-后勤保-119", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4456, + "f_IT": 0.4187, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.9052 + }, + "spatial": { + "position": [ + -63.17, + 25.63 + ], + "effective_radius": 54.16 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.672, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "英", + "history_success": 0.8 + }, + "FS-俄-情报侦-088": { + "TARGET_ID": "FS-俄-情报侦-088", + "function_vector": { + "f_IC": 1.0, + "f_IA": 0.7896, + "f_CS": 0.8174, + "f_IT": 0.9067, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -112.59, + 89.36 + ], + "effective_radius": 102.12 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 2.4, + "data_age": 0.81, + "time_window": 2.4 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.1689, + "mtbf": 0.6443 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-后勤保-011": { + "TARGET_ID": "FS-法-后勤保-011", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.6197, + "f_IT": 0.6735, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.491 + }, + "spatial": { + "position": [ + -24.56, + -66.14 + ], + "effective_radius": 104.49 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8668, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "法", + "history_success": 0.8 + }, + "FS-中-情报侦-031": { + "TARGET_ID": "FS-中-情报侦-031", + "function_vector": { + "f_IC": 0.9143, + "f_IA": 0.7896, + "f_CS": 0.8152, + "f_IT": 0.1442, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -168.2, + -24.12 + ], + "effective_radius": 151.23 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 8.4, + "data_age": 1.62, + "time_window": 8.4 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.3593, + "mtbf": 0.5493 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "中", + "history_success": 0.8 + }, + "FS-中-后勤保-145": { + "TARGET_ID": "FS-中-后勤保-145", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.6239, + "f_IT": 1.0, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8809 + }, + "spatial": { + "position": [ + 117.7, + -13.74 + ], + "effective_radius": 88.58 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8284, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "中", + "history_success": 0.8 + }, + "FS-英-后勤保-090": { + "TARGET_ID": "FS-英-后勤保-090", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5904, + "f_IT": 0.5056, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.6322 + }, + "spatial": { + "position": [ + -129.46, + -2.38 + ], + "effective_radius": 94.81 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6844, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "英", + "history_success": 0.8 + }, + "FS-法-指挥控-057": { + "TARGET_ID": "FS-法-指挥控-057", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.6569, + "f_CS": 0.2852, + "f_IT": 0.8052, + "f_DP": 0.9997, + "f_CPS": 0.9231, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -145.87, + -81.59 + ], + "effective_radius": 79.03 + }, + "temporal": { + "response_time": 2.5, + "cycle_time": 5.15, + "data_age": 0.45, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6546, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "法", + "history_success": 0.8 + }, + "FS-俄-后勤保-166": { + "TARGET_ID": "FS-俄-后勤保-166", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4511, + "f_IT": 0.7347, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.5508 + }, + "spatial": { + "position": [ + -19.18, + 87.32 + ], + "effective_radius": 87.5 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8159, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-法-火力打-159": { + "TARGET_ID": "FS-法-火力打-159", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.4201, + "f_IT": 0.544, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 152.68, + -82.46 + ], + "effective_radius": 99.07 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.808, + "survivability": 0.884, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-中-火力打-070": { + "TARGET_ID": "FS-中-火力打-070", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8478, + "f_IT": 0.7768, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 127.36, + 79.03 + ], + "effective_radius": 65.91 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.8325, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "中", + "history_success": 0.8 + }, + "FS-英-情报侦-037": { + "TARGET_ID": "FS-英-情报侦-037", + "function_vector": { + "f_IC": 0.9061, + "f_IA": 0.7896, + "f_CS": 0.4296, + "f_IT": 0.8654, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 2.37, + 22.07 + ], + "effective_radius": 140.07 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 3.8, + "data_age": 0.6, + "time_window": 3.8 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.1388, + "mtbf": 0.605 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "英", + "history_success": 0.8 + }, + "FS-中-情报侦-083": { + "TARGET_ID": "FS-中-情报侦-083", + "function_vector": { + "f_IC": 0.805, + "f_IA": 0.7896, + "f_CS": 1.0, + "f_IT": 0.1751, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 4.82, + -46.71 + ], + "effective_radius": 130.81 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.1, + "data_age": 1.5, + "time_window": 5.1 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8227, + "mtbf": 0.8732 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "中", + "history_success": 0.8 + }, + "FS-俄-火力打-043": { + "TARGET_ID": "FS-俄-火力打-043", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.415, + "f_IT": 0.6483, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 136.34, + -35.69 + ], + "effective_radius": 145.69 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.9292, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-英-协同打-015": { + "TARGET_ID": "FS-英-协同打-015", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5305, + "f_IT": 0.6418, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 44.55, + 86.46 + ], + "effective_radius": 76.06 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.9317, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "英", + "history_success": 0.8 + }, + "FS-俄-情报侦-133": { + "TARGET_ID": "FS-俄-情报侦-133", + "function_vector": { + "f_IC": 0.9801, + "f_IA": 0.7896, + "f_CS": 0.0567, + "f_IT": 0.2598, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 50.14, + 68.12 + ], + "effective_radius": 116.48 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 2.9, + "data_age": 0.92, + "time_window": 2.9 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8546, + "mtbf": 0.8811 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "俄", + "history_success": 0.8 + }, + "FS-美-火力打-137": { + "TARGET_ID": "FS-美-火力打-137", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.507, + "f_IT": 0.4711, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -179.95, + -2.34 + ], + "effective_radius": 93.15 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.8852, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "美", + "history_success": 0.8 + }, + "FS-法-后勤保-040": { + "TARGET_ID": "FS-法-后勤保-040", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5414, + "f_IT": 0.6425, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.6778 + }, + "spatial": { + "position": [ + -171.06, + 77.5 + ], + "effective_radius": 90.49 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4661, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-中-情报侦-003": { + "TARGET_ID": "FS-中-情报侦-003", + "function_vector": { + "f_IC": 0.7334, + "f_IA": 0.7896, + "f_CS": 0.8799, + "f_IT": 0.5211, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -147.98, + 10.98 + ], + "effective_radius": 92.79 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 7.8, + "data_age": 0.76, + "time_window": 7.8 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.4866, + "mtbf": 1.0945 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "中", + "history_success": 0.8 + }, + "FS-美-平台部-085": { + "TARGET_ID": "FS-美-平台部-085", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.984, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8458 + }, + "spatial": { + "position": [ + 167.55, + 33.59 + ], + "effective_radius": 142.57 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6839, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "美", + "history_success": 0.8 + }, + "FS-法-平台部-142": { + "TARGET_ID": "FS-法-平台部-142", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.0, + "f_IT": 0.9202, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.8316 + }, + "spatial": { + "position": [ + 121.58, + -17.11 + ], + "effective_radius": 185.14 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.5726, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-法-火力打-046": { + "TARGET_ID": "FS-法-火力打-046", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5051, + "f_IT": 0.4757, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -149.5, + -55.33 + ], + "effective_radius": 151.98 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.584, + "survivability": 0.7, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "法", + "history_success": 0.8 + }, + "FS-中-协同打-172": { + "TARGET_ID": "FS-中-协同打-172", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5244, + "f_IT": 0.9972, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 106.49, + -69.47 + ], + "effective_radius": 113.95 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.917, + "survivability": 0.3077, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "团级", + "nation": "中", + "history_success": 0.8 + }, + "FS-法-后勤保-147": { + "TARGET_ID": "FS-法-后勤保-147", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5603, + "f_IT": 0.4315, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.6048 + }, + "spatial": { + "position": [ + 89.85, + -88.57 + ], + "effective_radius": 62.48 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.6699, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "法", + "history_success": 0.8 + }, + "FS-法-协同打-079": { + "TARGET_ID": "FS-法-协同打-079", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5401, + "f_IT": 0.9579, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -103.84, + -13.55 + ], + "effective_radius": 43.3 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.7072, + "survivability": 0.3759, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "法", + "history_success": 0.8 + }, + "FS-英-指挥控-029": { + "TARGET_ID": "FS-英-指挥控-029", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.8068, + "f_CS": 0.1202, + "f_IT": 0.5212, + "f_DP": 0.9197, + "f_CPS": 0.8451, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -154.12, + 2.47 + ], + "effective_radius": 136.92 + }, + "temporal": { + "response_time": 5.5, + "cycle_time": 5.15, + "data_age": 0.69, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.581, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "师级", + "nation": "英", + "history_success": 0.8 + }, + "FS-法-协同打-108": { + "TARGET_ID": "FS-法-协同打-108", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.9917, + "f_IT": 0.4152, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + -96.01, + -46.24 + ], + "effective_radius": 151.72 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 1.0, + "survivability": 0.4747, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "法", + "history_success": 0.8 + }, + "FS-中-协同打-116": { + "TARGET_ID": "FS-中-协同打-116", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.8693, + "f_IT": 0.7671, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 51.41, + -27.99 + ], + "effective_radius": 161.13 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.8567, + "survivability": 0.8046, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "中", + "history_success": 0.8 + }, + "FS-美-指挥控-095": { + "TARGET_ID": "FS-美-指挥控-095", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.711, + "f_CS": 0.1666, + "f_IT": 0.7022, + "f_DP": 0.9085, + "f_CPS": 0.6224, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 165.2, + -65.19 + ], + "effective_radius": 159.66 + }, + "temporal": { + "response_time": 18.2, + "cycle_time": 5.15, + "data_age": 0.74, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.8984, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "旅级", + "nation": "美", + "history_success": 0.8 + }, + "FS-中-火力打-048": { + "TARGET_ID": "FS-中-火力打-048", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7417, + "f_IT": 0.7472, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 18.23, + 63.14 + ], + "effective_radius": 148.96 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.5414, + "survivability": 0.6958, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "军级", + "nation": "中", + "history_success": 0.8 + }, + "FS-中-协同打-026": { + "TARGET_ID": "FS-中-协同打-026", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.7853, + "f_IT": 0.4311, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 123.4, + -54.24 + ], + "effective_radius": 154.01 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.6259, + "survivability": 0.6265, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "中", + "history_success": 0.8 + }, + "FS-中-指挥控-126": { + "TARGET_ID": "FS-中-指挥控-126", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 1.0, + "f_CS": 0.1984, + "f_IT": 0.66, + "f_DP": 0.5233, + "f_CPS": 0.6608, + "f_CC": 0.7822 + }, + "spatial": { + "position": [ + 166.65, + -43.17 + ], + "effective_radius": 89.26 + }, + "temporal": { + "response_time": 15.4, + "cycle_time": 5.15, + "data_age": 0.44, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.681, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "中", + "history_success": 0.8 + }, + "FS-法-后勤保-118": { + "TARGET_ID": "FS-法-后勤保-118", + "function_vector": { + "f_IC": 0.9222, + "f_IA": 0.7896, + "f_CS": 0.5815, + "f_IT": 0.4777, + "f_DP": 0.9148, + "f_CPS": 0.5619, + "f_CC": 0.7902 + }, + "spatial": { + "position": [ + -94.3, + -30.68 + ], + "effective_radius": 89.52 + }, + "temporal": { + "response_time": 23.3891, + "cycle_time": 5.15, + "data_age": 0.8832, + "time_window": 5.15 + }, + "performance": { + "core_performance": 0.9831, + "survivability": 0.7855, + "mtbf": 0.7841 + }, + "protocol_list": [], + "format_list": [], + "interface_list": [], + "security_level": 3, + "org_unit": "营级", + "nation": "法", + "history_success": 0.8 + } + }, + "global_params": { + "mtbf_max": 1.0945 + } +} \ No newline at end of file diff --git a/data/raw_data_sample.json b/final/data/raw_data_sample.json similarity index 100% rename from data/raw_data_sample.json rename to final/data/raw_data_sample.json diff --git a/final/data/triples.json b/final/data/triples.json new file mode 100644 index 0000000..937a208 --- /dev/null +++ b/final/data/triples.json @@ -0,0 +1,60 @@ +{ + "triples": [ + { + "head": "CMD001", + "head_type": "指挥控制", + "relation": "指挥控制", + "tail": "DEF001", + "tail_type": "信息获取" + }, + { + "head": "CMD001", + "head_type": "指挥控制", + "relation": "指挥控制", + "tail": "STK001", + "tail_type": "协同打击" + }, + { + "head": "DEF001", + "head_type": "信息获取", + "relation": "状态反馈", + "tail": "CMD001", + "tail_type": "指挥控制" + }, + { + "head": "DEF001", + "head_type": "信息获取", + "relation": "情报保障", + "tail": "STK001", + "tail_type": "协同打击" + }, + { + "head": "STK001", + "head_type": "协同打击", + "relation": "状态反馈", + "tail": "CMD001", + "tail_type": "指挥控制" + }, + { + "head": "STK001", + "head_type": "协同打击", + "relation": "协同作战", + "tail": "STK002", + "tail_type": "协同打击" + }, + { + "head": "LOG001", + "head_type": "综合保障", + "relation": "平台部署", + "tail": "STK001", + "tail_type": "协同打击" + }, + { + "head": "MED001", + "head_type": "综合保障", + "relation": "平台部署", + "tail": "TRN001", + "tail_type": "部署平台" + } + ] +} \ No newline at end of file diff --git a/final/data/triplets.json b/final/data/triplets.json new file mode 100644 index 0000000..5508f4b --- /dev/null +++ b/final/data/triplets.json @@ -0,0 +1,58 @@ +[ + { + "head": "CMD001", + "head_type": "指挥控制", + "relation": "指挥控制", + "tail": "DEF001", + "tail_type": "信息获取" + }, + { + "head": "CMD001", + "head_type": "指挥控制", + "relation": "指挥控制", + "tail": "STK001", + "tail_type": "协同打击" + }, + { + "head": "DEF001", + "head_type": "信息获取", + "relation": "状态反馈", + "tail": "CMD001", + "tail_type": "指挥控制" + }, + { + "head": "DEF001", + "head_type": "信息获取", + "relation": "情报保障", + "tail": "STK001", + "tail_type": "协同打击" + }, + { + "head": "STK001", + "head_type": "协同打击", + "relation": "状态反馈", + "tail": "CMD001", + "tail_type": "指挥控制" + }, + { + "head": "STK001", + "head_type": "协同打击", + "relation": "协同作战", + "tail": "STK002", + "tail_type": "协同打击" + }, + { + "head": "LOG001", + "head_type": "综合保障", + "relation": "平台部署", + "tail": "STK001", + "tail_type": "协同打击" + }, + { + "head": "MED001", + "head_type": "综合保障", + "relation": "平台部署", + "tail": "TRN001", + "tail_type": "部署平台" + } +] \ No newline at end of file diff --git a/final/report/detailed_cleaning_report.json b/final/report/detailed_cleaning_report.json new file mode 100644 index 0000000..19d2bd1 --- /dev/null +++ b/final/report/detailed_cleaning_report.json @@ -0,0 +1,94 @@ +{ + "timestamp": "2026-04-23 12:20:15", + "summary": { + "total_records": 210, + "final_records": 200, + "duplicates_removed": 10 + }, + "details": { + "missing_values_fixed": { + "X": 2, + "Y": 5, + "WEIGHT": 126, + "AREA": 126, + "DETECTION_RANGE": 166, + "DETECTION_ACCURACY": 166, + "REFRESH_RATE": 166, + "TRANSMISSION_DELAY": 135, + "RELIABILITY": 166, + "DECISION_RESPONSE_TIME": 169, + "PROCESSING_CAPACITY": 169, + "INFORMATION_FUSION_CAPABILITY": 169, + "SYSTEM_RELIABILITY": 169, + "STRIKE_RANGE": 126, + "STRIKE_ACCURACY": 126, + "AMMUNITION_RESERVE": 126, + "TARGET_RECOGNITION_CAPABILITY": 126, + "LOAD_CAPACITY": 159, + "PLATFORM_AREA": 180, + "SUPPORT_RANGE": 159, + "SUPPORT_CAPACITY": 139 + }, + "outliers_corrected": { + "count": 59, + "examples": [ + { + "id": "FS-法-协同打-144", + "field": "TARGET_RECOGNITION_CAPABILITY", + "original": 1.1645873020580773, + "corrected": 1.0, + "reason": "Value out of range [0, 1]" + }, + { + "id": "FS-法-协同打-144", + "field": "STRIKE_ACCURACY", + "original": 1.2863907411837974, + "corrected": 1.0, + "reason": "Value out of range [0, 1]" + }, + { + "id": "FS-美-火力打-156", + "field": "TARGET_RECOGNITION_CAPABILITY", + "original": -0.8869593801185574, + "corrected": 0.8869593801185574, + "reason": "Value out of range [0, 1]" + }, + { + "id": "FS-俄-协同打-061", + "field": "TARGET_RECOGNITION_CAPABILITY", + "original": 1.1931823083468704, + "corrected": 1.0, + "reason": "Value out of range [0, 1]" + }, + { + "id": "FS-美-协同打-121", + "field": "STRIKE_ACCURACY", + "original": 1.439367437550393, + "corrected": 1.0, + "reason": "Value out of range [0, 1]" + } + ] + }, + "noise_reduction": { + "method": "Kalman Filter", + "fields_processed": [ + "COMMUNICATION_RANGE" + ], + "total_smoothed": 200 + }, + "standardization": [ + "Coordinates normalized to 2 decimal places", + "Timestamps formatted to ISO-8601", + "Attributes aligned to 1125 schema (format + content)" + ], + "attribute_alignment": { + "enabled": true, + "format_errors_by_field": {}, + "content_errors_by_field": {}, + "records_with_errors": 0, + "aligned_count": 200, + "transformed_count": 200, + "samples": [] + } + } +} \ No newline at end of file diff --git a/final/report/triplet_cleaning_report.json b/final/report/triplet_cleaning_report.json new file mode 100644 index 0000000..a161065 --- /dev/null +++ b/final/report/triplet_cleaning_report.json @@ -0,0 +1,20 @@ +{ + "timestamp": "2026-02-27 19:45:51", + "original_count": 8, + "deduplicate": { + "enabled": true, + "removed": 0 + }, + "filter_orphans": { + "enabled": false, + "removed": 0 + }, + "remove_null_core": { + "enabled": true, + "removed": 0 + }, + "normalize_relation_type": { + "enabled": true + }, + "final_count": 8 +} \ No newline at end of file diff --git a/final/requirements.txt b/final/requirements.txt new file mode 100644 index 0000000..d30ea45 --- /dev/null +++ b/final/requirements.txt @@ -0,0 +1,5 @@ +numpy>=1.20.0 +pandas>=1.3.0 +PyYAML>=5.4 +openpyxl>=3.0.0 +# 达梦模式需额外:pip install dmPython diff --git a/final/results/evaluation_report.txt b/final/results/evaluation_report.txt new file mode 100644 index 0000000..a0508f3 --- /dev/null +++ b/final/results/evaluation_report.txt @@ -0,0 +1,83 @@ +============================================================ +网络关系与效能评价报告 +============================================================ + +1. 基本信息 +---------------------------------------- +过滤阈值: 0.15 【关系强度阈值】 +总三元组数量: 8 +分别有: +有效计算三元组: 0 +跳过三元组: 8 +通过过滤三元组: 0 +通过率: 0.0% + +2. 计算公式 +边关系计算公式 +-------------------------------------------------- +情报保障关系 L_IS(i,j) = w_f·M_F^IS + w_s·M_S^IS + w_t·M_T^IS + w_p·M_P^IS + w_i·M_I^IS +指挥控制关系 L_CC(i,j) = w_f·M_F^CC + w_s·M_S^CC + w_t·M_T^CC + w_p·M_P^CC + w_i·M_I^CC +状态反馈关系 L_SF(i,j) = w_f·M_F^SF + w_s·M_S^SF + w_t·M_T^SF + w_p·M_P^SF + w_i·M_I^SF +平台部署关系 L_PD(i,j) = w_f·M_F^PD + w_s·M_S^PD + w_t·M_T^PD + w_p·M_P^PD + w_i·M_I^PD +协同作战关系 L_CO(i,j) = w_f·M_F^CO + w_s·M_S^CO + w_t·M_T^CO + w_p·M_P^CO + w_i·M_I^CO +【符号说明】 + M_F^IS 情报保障功能匹配项 + M_S^IS 情报保障空间匹配项 + M_T^IS 情报保障时间匹配项 + M_P^IS 情报保障性能匹配项 + M_I^IS 情报保障交互匹配项 + +任务网络效能计算公式 +-------------------------------------------------- +综合防御 P_defense = α1·(∑f_IC/N_IC) + α2·(∑f_IA/N_IA) + α3·(∑L_IS/N_IS) + α4·(∑t_resp/N) + α5·(∑L_CC/N_CC) +火力打击 P_fire = β1·(∑f_CS/N_CS) + β2·(∑f_IA/N_IA) + β3·(∑L_CO/N_CO) + β4·(∑p_core·f_CS/N_CS) + β5·(∑L_IS/N_IS) +后勤保障 P_logistics = γ1·(∑f_CPS/N_CPS) + γ2·(∑f_DP/N_DP) + γ3·(∑L_PD/N_PD) + γ4·(∑p_rel/N) + γ5·(∑f_IT/N_IT) +医疗救援 P_medical = δ1·(∑f_CPS/N_CPS) + δ2·(∑t_resp/N) + δ3·(∑f_IT/N_IT) + δ4·(∑L_SF/N_SF) + δ5·(∑fresh_i/N) +紧急疏散 P_evacuation = ε1·(∑f_CC/N_CC) + ε2·(∑f_IT/N_IT) + ε3·(∑L_CC/N_CC) + ε4·(∑f_CPS/N_CPS) + ε5·(∑t_resp/N) +【符号说明】 + N_IC 信息对抗节点数量 + ∑f_IC/N_IC 信息对抗节点平均能力 + ∑L_IS/N_IS 情报保障关系平均强度 + ∑t_resp/N 系统平均响应速度 + ∑L_CC/N_CC 指挥控制关系平均强度 + ∑f_CS/N_CS 协同打击节点平均能力 + ∑f_IA/N_IA 信息获取节点平均能力 + ∑L_CO/N_CO 协同作战关系平均强度 + ∑p_core·f_CS/N_CS 打击节点性能加权能力 + ∑f_CPS/N_CPS 综合保障节点平均能力 + ∑f_DP/N_DP 部署平台节点平均能力 + ∑L_PD/N_PD 平台部署关系平均强度 + ∑p_rel/N 系统平均可靠性 + ∑f_IT/N_IT 信息传输节点平均能力 + ∑L_SF/N_SF 状态反馈关系平均强度 + ∑fresh_i/N 系统平均数据新鲜度 + α1...α5 综合防御权重 [0.30,0.25,0.20,0.15,0.10] + β1...β5 火力打击权重 [0.35,0.25,0.20,0.10,0.10] + γ1...γ5 后勤保障权重 [0.30,0.25,0.20,0.15,0.10] + δ1...δ5 医疗救援权重 [0.35,0.25,0.20,0.10,0.10] + ε1...ε5 紧急疏散权重 [0.30,0.25,0.20,0.15,0.10] + +3. 关系类型统计 +---------------------------------------- +【被过滤掉的关系明细】 +---------------------------------------- +4. 所属任务网络评估 +---------------------------------------- +任务网络概率:综合防御 21.2% 火力打击 17.5% 后勤保障 20.2% 医疗救援 19.7% 紧急疏散 21.4% +最有可能的任务网络:紧急疏散 可能性为:21.4 % +5. 最终紧急疏散任务网络的五个维度评价 +功能维度 (Function): +功能维度反映了网络中节点的功能匹配程度。得分: 0.917 +高于参考值,表示节点在功能上高度互补,能够有效协同工作。 +空间系维度 (Relationship): +空间维度反映了节点之间的连接强度。得分: 0.000 +低于参考值,表示节点之间的连接较弱,信息传递效率较低。 +性能维度 (Performance): +性能维度反映了节点的性能指标,如响应时间和可靠性。得分: 0.935 +高于参考值,表示节点在性能上表现出色,能够稳定运行。 +时间维度 (Temporal): +时间维度反映了节点的时间同步性和响应能力。得分: 0.126 +低于参考值,表示节点在时间同步性上存在偏差,响应速度较慢。 +交互维度 (Interaction): +交互维度反映了节点之间的协议、格式和安全兼容性。得分: 0.000 +低于参考值,表示节点在交互上存在兼容性问题,通信安全性较低。 \ No newline at end of file diff --git a/final/results/filtered_triples.json b/final/results/filtered_triples.json new file mode 100644 index 0000000..0d42048 --- /dev/null +++ b/final/results/filtered_triples.json @@ -0,0 +1,3 @@ +{ + "triples": [] +} \ No newline at end of file diff --git a/final/results/triples.csv b/final/results/triples.csv new file mode 100644 index 0000000..e02abfc --- /dev/null +++ b/final/results/triples.csv @@ -0,0 +1 @@ + diff --git a/final/results/triples.xlsx b/final/results/triples.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f843a042d30106bd54de8c190fdb242d0f11b264 GIT binary patch literal 5589 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 literal 0 HcmV?d00001 diff --git a/final/scripts/__pycache__/f_net1125.cpython-38.pyc b/final/scripts/__pycache__/f_net1125.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0cb071b67ec97c74a4f979726f973f2cb8af6b1d GIT binary patch literal 5757 zcmcIo>u(g-6`wmhGyAl0h!ZfcEQW+^1&(bXq$!~xHneUV2i5SQi>=Xi@2uH)U%4}e zvNBQ>OaoD(wn{1zgj%~&Dy*ugYN}LFhyD}&biY<>%qPA#s?y)Nv$N}6)__Dht2ukl z+&lMi&hI?tp6cp~X}C(`1Nj3_Yudj_SbK#aysl}?eFF^FI4fvHmS&82y`ZN<_zx9~ zqM0^}R@y3t(_yALk#y9FrQ<))xWUbNjhh$sbb{*>TFSadqosHFj+SOzOY59r4KMHz&BU$iAs*(Dc{6SB zD39^@b)6@8*SwK7c{iSHfZW5Mf@~>yBjl%fFXS*ht$P)sZnzCo}HMxZ|BGiar5pDy-dMeJt9I#&yI=gH(Lb47Sy-+u{|d`$yn6b@{;`Svz5S!djt>qFff;#o zl$g|1^0nmPz$=H;+vC-ZWZ2W=*u>cA-XsZA)jjH&vhr!y6MK_Ev;RM}H<>GxGw8Tg zbyQuNoZmJD(3na$GTK;_44-rI(`P(4Ye1pFMZAuCguwGGm^n75+1i{A%H~3#I@bVB z1|W(s+NFUJUCGX+3~9JdA*Y^-2%1C`WJwcU`1{WfM_!#g=F0c5%6S>FZM^T<_EQ+w zwLmn(Viv1z?*x~Dpm#M+4s+Vqh&0uIN|%cy{W?=EK<+Jh@l0K%O=?zA?iP4!%0a|kGX+GX6o(cdu$ z4{}4Bcd30Y=~5pUl&rMG#3qcoX7jPb1=u57E>?~_hZdI8x{pVT0)^uSdT-9UjpkQ+@3Pkpww-2I2GFbhkDi;1;AN(t%m`$o zdw-a({rOWreAJe2*KYr@cKPb+;*AyykX1=D$^uC+$^x4w^$Y9*KX?eZ^MG))MgfHpxx^@CBG-g1F?@E?vi$XOo}d7sv+EwZ|%1Dqr zWEa9o1*zJxy?oIDEMYrMhMZqiL?1Zc1t=yqt*{5uV>Z4BQafo0@c}x+t#f@5ff7g!t)Js+fgA4U)n~0BqH|l&8yjkaC;4R`2nd0Lz%$=MA zgGeK1kBumLRO(|BQXd(S`ne(8!?^e3K7jk+k}2ZYj(CPhlE@20_JX9szJ94ajp6cH z8ZMuaM#0V_i+Hxu7^G~r&C)XAAT-(awR{Hyxa1NVi?JT{>jtfM_Jg%=u5W_{jP_(U zpu%vT#xNF4KWDVqBiyhDY2LR7={>Lq={>MV9DHDp1o*%nUE|PLUMORXOo&0O8FqN9 zWmkkvLYDGH3LeTAw*`5JFb3Uh_my)D_<+qC8_gZ~QKL z_}<9$Z>qx`1CufcZKIHJ&5SF})`Mp=;0 zx~TK)krNZ-qoXIJeqyv`a|AO=t_o&U9w?agu7w%bw+8SEiKFO(s?Pg)F29Pb^KcZ6 zqH{B*A6j4Mjm36?60LmfK2FT^`;5hBK`)2gXY9Q z=31Qxg++Du`VQQDx!T)2IiUWk)s|lkf+H#HdpJq{(H9~_WFZ>(bG=uLqC(>hi|P*^#+W)zBvAhyMje0}FFKww z#Q;_#ju1IUgq%o_I>bvvC?&V-q$T)MWuSby@oh^rM!l}kRp1wI&@c}z9NtEcrr!>& zukuWx<7bpOfdNvcj0B(3GJ(MDA3vSRSNvtDKoZZFJV#{IX_ky}d}owgIvz~L#cQ-o zN)#xB=*r`nz_@GWaO~F T|06VkON&de2Y&m|d$K$H8cPC?tl<87K^^%h9 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 literal 0 HcmV?d00001 diff --git a/final/scripts/__pycache__/f_relation1125.cpython-38.pyc b/final/scripts/__pycache__/f_relation1125.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eab8fc98f505d22a372061323059ae1c56e375bf GIT binary patch literal 8775 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 bGo9>@wB8g>{C@Y0zKPv;-?PU>Y+dBP6UO^4 literal 0 HcmV?d00001 diff --git a/final/scripts/__pycache__/inspect_dm_tables.cpython-313.pyc b/final/scripts/__pycache__/inspect_dm_tables.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..31d1952df5f47f3a6e21d7615c53cf5e009df2e7 GIT binary patch literal 12154 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 literal 0 HcmV?d00001 diff --git a/final/scripts/__pycache__/run_all.cpython-313.pyc b/final/scripts/__pycache__/run_all.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..748b5db91a953d6583c22f59a1018b7bb73ee997 GIT binary patch literal 10062 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 AEdT%j literal 0 HcmV?d00001 diff --git a/final/scripts/__pycache__/utils.cpython-313.pyc b/final/scripts/__pycache__/utils.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f1838d4bf97ae52a939472f3592d6742738c875e GIT binary patch literal 6058 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 literal 0 HcmV?d00001 diff --git a/final/scripts/export_triplets.py b/final/scripts/export_triplets.py new file mode 100644 index 0000000..9133da9 --- /dev/null +++ b/final/scripts/export_triplets.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python3 +""" +从达梦数据库导出三元组数据到 JSON 文件 +三元组来源:RELATION_INSTANCE 表 (HEAD_ID, RELATION_TYPE, TAIL_ID) +支持可选清洗:去重、过滤悬空引用、移除空值、规范化关系类型 +用法: python scripts/export_triplets.py +需设置环境变量 DM_PASSWORD,且 config 中 source=db +""" +import json +import os +import sys + +_script_dir = os.path.dirname(os.path.abspath(__file__)) +_project_root = os.path.dirname(_script_dir) +sys.path.insert(0, _project_root) + + +def _json_serializer(obj): + """处理 Timestamp、datetime、numpy 等不可直接 JSON 序列化的类型""" + if hasattr(obj, 'isoformat'): + return obj.isoformat() + if hasattr(obj, 'item'): + return obj.item() + if isinstance(obj, float) and (obj != obj or obj == float('inf') or obj == float('-inf')): + return None + raise TypeError(f'Object of type {type(obj).__name__} is not JSON serializable') + + +def load_config(project_root: str) -> dict: + """加载 config""" + config_dir = os.path.join(project_root, 'config') + json_path = os.path.join(config_dir, 'config.json') + yaml_path = os.path.join(config_dir, 'config.yaml') + if os.path.exists(json_path): + with open(json_path, 'r', encoding='utf-8') as f: + return json.load(f) + if os.path.exists(yaml_path): + try: + import yaml + with open(yaml_path, 'r', encoding='utf-8') as f: + return yaml.safe_load(f) + except ImportError: + pass + return {'source': 'json', 'db': {}, 'triplet': {}} + + +def main(): + from src.data_loader import load_triplets_from_dm, load_from_dm + from src.triplet_cleaner import clean_triplets, transform_triplet_output_format + + config = load_config(_project_root) + if config.get('source') != 'db': + print("错误:三元组导出仅支持达梦模式,请将 config 中 source 改为 db") + sys.exit(1) + + tc = config.get('triplet', {}) + output_file = tc.get('output_file', 'data/triples.json') + report_file = tc.get('report_file', 'report/triplet_cleaning_report.json') + output_path = output_file if os.path.isabs(output_file) else os.path.join(_project_root, output_file) + report_path = report_file if os.path.isabs(report_file) else os.path.join(_project_root, report_file) + os.makedirs(os.path.dirname(output_path), exist_ok=True) + os.makedirs(os.path.dirname(report_path), exist_ok=True) + + # 清洗配置(clean: false 则跳过;否则按子项配置) + clean_cfg = tc.get('clean', True) + do_clean = False + if clean_cfg is True: + do_clean = {'deduplicate': True, 'filter_orphans': False, 'remove_null_core': True, 'normalize_relation_type': True} + elif isinstance(clean_cfg, dict): + do_clean = clean_cfg + + deduplicate = do_clean.get('deduplicate', True) if do_clean else False + filter_orphans = do_clean.get('filter_orphans', False) if do_clean else False + remove_null_core = do_clean.get('remove_null_core', True) if do_clean else False + normalize_relation_type = do_clean.get('normalize_relation_type', True) if do_clean else False + + print("正在从达梦读取三元组 (RELATION_INSTANCE)...") + triplets = load_triplets_from_dm(config, _project_root) + print(f"读取到 {len(triplets)} 条三元组") + + valid_ids = None + if filter_orphans: + print("正在加载实体表以校验悬空引用...") + entities = load_from_dm(config, _project_root) + valid_ids = {str(e.get('TARGET_ID', '')).strip() for e in entities if e.get('TARGET_ID')} + print(f"有效实体数: {len(valid_ids)}") + + if do_clean and (deduplicate or filter_orphans or remove_null_core or normalize_relation_type): + print("正在执行三元组清洗...") + triplets, report = clean_triplets( + triplets, + valid_ids=valid_ids, + deduplicate=deduplicate, + filter_orphans=filter_orphans, + remove_null_core=remove_null_core, + normalize_relation_type=normalize_relation_type, + ) + with open(report_path, 'w', encoding='utf-8') as f: + json.dump(report, f, ensure_ascii=False, indent=2, default=_json_serializer) + print(f"清洗完成:{report['original_count']} -> {report['final_count']},报告: {report_path}") + + # 转为输出格式:head, head_type, relation, tail, tail_type + entities = load_from_dm(config, _project_root) + id_to_role = {str(e.get('TARGET_ID', '')).strip(): str(e.get('ROLE_ID', '')).strip() for e in entities if e.get('TARGET_ID')} + triplets = transform_triplet_output_format(triplets, id_to_role) + + with open(output_path, 'w', encoding='utf-8') as f: + json.dump(triplets, f, ensure_ascii=False, indent=2, default=_json_serializer) + print(f"已导出至 {output_path}") + + +if __name__ == "__main__": + main() diff --git a/final/scripts/f_net1125.py b/final/scripts/f_net1125.py new file mode 100644 index 0000000..87aaadb --- /dev/null +++ b/final/scripts/f_net1125.py @@ -0,0 +1,112 @@ +# f_net1125.py ← 边关系已算完,只算任务网络 +from __future__ import annotations +import numpy as np +from typing import Dict, List, Tuple + +NodeID = str +TaskScore = float # 网络效能得分 [0,1] + + +class TaskNetworkEvaluator: + """ + 输入: + nodes - 节点数据(含 function_vector / performance / temporal) + relations - 已算好的全部边关系 + 格式:relations[("IS","DEF001","CMD001")] = 0.87 + """ + def __init__(self, + nodes: Dict[NodeID, Dict], + relations: Dict[Tuple[str, NodeID, NodeID], float], + weights: Dict[str, Dict[str, float]] = None): + self.nodes = nodes + self.rels = relations + self.w = weights + + # ---------- 工具 ---------- + def _avg(self, scores: List[float]) -> float: + return float(np.mean(scores)) if scores else 0.0 + + def _collect_func(self, key: str) -> List[float]: + """所有节点指定功能值""" + return [n["function_vector"][key] for n in self.nodes.values()] + + def _collect_rel(self, tag: str) -> List[float]: + """预存关系强度列表""" + return [v for k, v in self.rels.items() if k[0] == tag] + + def _collect_resp(self) -> List[float]: + """响应时间得分""" + return [np.exp(-0.1 * n["temporal"]["response_time"]) for n in self.nodes.values()] + + # ---------- 2.1 综合防御 ---------- + def eval_defense(self) -> TaskScore: + w = self.w["defense"] + f_ic = self._avg(self._collect_func("f_IC")) + f_ia = self._avg(self._collect_func("f_IA")) + l_is = self._avg(self._collect_rel("IS")) + t_resp = self._avg(self._collect_resp()) + l_cc = self._avg(self._collect_rel("CC")) + return w["w1"] * f_ic + w["w2"] * f_ia + w["w3"] * l_is + w["w4"] * t_resp + w["w5"] * l_cc + + # ---------- 2.2 火力打击 ---------- + def eval_fire(self) -> TaskScore: + w = self.w["fire"] + f_cs = self._avg(self._collect_func("f_CS")) + f_ia = self._avg(self._collect_func("f_IA")) + l_co = self._avg(self._collect_rel("CO")) + perf_cs = self._avg([n["performance"]["core_performance"] * n["function_vector"]["f_CS"] + for n in self.nodes.values()]) + l_is = self._avg(self._collect_rel("IS")) + return w["w1"] * f_cs + w["w2"] * f_ia + w["w3"] * l_co + w["w4"] * perf_cs + w["w5"] * l_is + + # ---------- 2.3 后勤保障 ---------- + def eval_logistics(self) -> TaskScore: + w = self.w["logistics"] + f_cps = self._avg(self._collect_func("f_CPS")) + f_dp = self._avg(self._collect_func("f_DP")) + l_pd = self._avg(self._collect_rel("PD")) + p_rel = self._avg([n["performance"]["mtbf"] / 1000 for n in self.nodes.values()]) + f_it = self._avg(self._collect_func("f_IT")) + return w["w1"] * f_cps + w["w2"] * f_dp + w["w3"] * l_pd + w["w4"] * p_rel + w["w5"] * f_it + + # ---------- 2.4 医疗救援 ---------- + def eval_medical(self) -> TaskScore: + w = self.w["medical"] + f_cps = self._avg(self._collect_func("f_CPS")) + t_resp = self._avg(self._collect_resp()) + f_it = self._avg(self._collect_func("f_IT")) + l_sf = self._avg(self._collect_rel("SF")) + fresh = self._avg([np.exp(-0.1 * n["temporal"]["data_age"]) for n in self.nodes.values()]) + return w["w1"] * f_cps + w["w2"] * t_resp + w["w3"] * f_it + w["w4"] * l_sf + w["w5"] * fresh + + # ---------- 2.5 紧急疏散 ---------- + def eval_evacuation(self) -> TaskScore: + w = self.w["evacuation"] + f_cc = self._avg(self._collect_func("f_CC")) + f_it = self._avg(self._collect_func("f_IT")) + l_cc = self._avg(self._collect_rel("CC")) + f_cps = self._avg(self._collect_func("f_CPS")) + t_resp = self._avg(self._collect_resp()) + return w["w1"] * f_cc + w["w2"] * f_it + w["w3"] * l_cc + w["w4"] * f_cps + w["w5"] * t_resp + + # ---------- 一键评估 ---------- + def eval_all(self) -> Dict[str, TaskScore]: + results = { + "defense": self.eval_defense(), + "fire": self.eval_fire(), + "logistics": self.eval_logistics(), + "medical": self.eval_medical(), + "evacuation": self.eval_evacuation(), + } + + # 计算五个维度的分数 + dimensions = { + "function": self._avg(self._collect_func("f_IC")), + "relationship": self._avg(self._collect_rel("IS")), + "performance": self._avg([n["performance"]["core_performance"] for n in self.nodes.values()]), + "temporal": self._avg(self._collect_resp()), + "interaction": self._avg(self._collect_rel("SF")) + } + + results["dimensions"] = dimensions + return results \ No newline at end of file diff --git a/final/scripts/f_relation1125.py b/final/scripts/f_relation1125.py new file mode 100644 index 0000000..5d9fbc1 --- /dev/null +++ b/final/scripts/f_relation1125.py @@ -0,0 +1,395 @@ +import numpy as np +from typing import Dict +from .utils import NetworkUtils + + +class RelationCalculator: + """关系强度计算器""" + + def __init__(self, nodes_data: Dict, cfg): + """ + 初始化 + :param nodes_data: 节点数据 + :param auxiliary_data: 辅助数据(接口标准、角色匹配等) + """ + self.nodes_data = nodes_data + self.utils = NetworkUtils() + self.cfg = cfg + + def _weights(self, rel: str): + return self.cfg["W_REL"][rel] + + def _lambda(self, rel: str): + return self.cfg["LAMBDA"][rel] + + def calculate_IS_relation(self, i: str, j: str) -> float: + """ + 计算情报保障关系强度 + L_IS(i,j) = w_f·M_IS_F + w_s·M_IS_S + w_t·M_IS_T + w_p·M_IS_P + w_i·M_IS_I + """ + # 权重参数(根据1.3.pdf) + w = self._weights("IS") + # 提取节点数据 + node_i = self.nodes_data['nodes'][i] + node_j = self.nodes_data['nodes'][j] + + # 1. 功能维度 M_IS_F + f_i_IA = node_i['function_vector']['f_IA'] + f_j_avg = ( + node_j['function_vector']['f_CC'] + + node_j['function_vector']['f_IC'] + + node_j['function_vector']['f_CS'] + + node_j['function_vector']['f_CPS'] + ) / 4 + + std_ij = self.utils.get_interface_standard(node_i, node_j) + r_ij = self.utils.get_role_match(node_i, node_j) + M_IS_F = f_i_IA * f_j_avg * std_ij * r_ij + + # 2. 空间维度 M_IS_S + d_ij = self.utils.calculate_distance( + node_i['spatial']['position'], + node_j['spatial']['position'] + ) + lambda_IS = self._lambda("IS") + R_match = self.utils.calculate_range_match( + node_i['spatial']['effective_radius'], + node_j['spatial']['effective_radius'], + d_ij + ) + + s_area = self.utils.get_area_relation(node_i, node_j) + M_IS_S = np.exp(-d_ij / lambda_IS) * R_match * s_area + + # 3. 时间维度 + alpha = self.cfg["TIME"]["alpha"] + beta = self.cfg["TIME"]["beta"] + gamma = self.cfg["TIME"]["gamma"] + + fresh_i = np.exp(-gamma * node_i['temporal']['data_age']) + t_i_resp = np.exp(-alpha * node_i['temporal']['response_time']) + + w_ij = self.utils.calculate_time_window_overlap(node_i, node_j) + + M_IS_T = fresh_i * t_i_resp * w_ij + + # 4. 性能维度 M_IS_P + p_i_core = node_i['performance']['core_performance'] + mtbf_max = self.nodes_data['global_params']['mtbf_max'] + p_i_rel = node_i['performance']['mtbf'] / mtbf_max + M_IS_P = p_i_core * p_i_rel + + # 5. 交互维度 M_IS_I + prot_ij = self.utils.get_protocol_compatibility(node_i, node_j) + fmt_ij = self.utils.get_format_compatibility(node_i, node_j) + sec_ij = self.utils.get_security_compatibility(node_i, node_j) + hist_ij = self.utils.get_interaction_history(node_i, node_j) + M_IS_I = ((prot_ij + fmt_ij + sec_ij) / 3) * hist_ij + + # 综合计算 + L_IS = (w["w_f"] * M_IS_F + w["w_s"] * M_IS_S + w["w_t"] * M_IS_T + + w["w_p"] * M_IS_P + w["w_i"] * M_IS_I) + + return L_IS + + def calculate_CC_relation(self, i: str, j: str) -> float: + """ + 计算指挥控制关系强度 + L_CC(i,j) = w_f·M_CC_F + w_s·M_CC_S + w_t·M_CC_T + w_p·M_CC_P + w_i·M_CC_I + """ + # 权重参数 + w = self._weights("CC") + lambda_CC = self._lambda("CC")# 根据公式,指挥控制距离敏感性更高 + + node_i = self.nodes_data['nodes'][i] + node_j = self.nodes_data['nodes'][j] + + # 1. 功能维度 M_CC_F + f_i_CC = node_i['function_vector']['f_CC'] + f_j_sum = sum([ + node_j['function_vector']['f_IA'], + node_j['function_vector']['f_IT'], + node_j['function_vector']['f_IC'], + node_j['function_vector']['f_CS'], + node_j['function_vector']['f_DP'], + node_j['function_vector']['f_CPS'] + ]) + f_j_avg = f_j_sum / 6 + + std_ij = self.utils.get_interface_standard(node_i, node_j) + r_ij = self.utils.get_role_match(node_i, node_j) + M_CC_F = f_i_CC * f_j_avg * std_ij * r_ij + + # 2. 空间维度 M_CC_S + d_ij = self.utils.calculate_distance( + node_i['spatial']['position'], + node_j['spatial']['position'] + ) + + R_match = self.utils.calculate_range_match( + node_i['spatial']['effective_radius'], + node_j['spatial']['effective_radius'], + d_ij + ) + + s_area = self.utils.get_area_relation(node_i, node_j) + M_CC_S = np.exp(-d_ij / lambda_CC) * R_match * s_area + + # 3. 时间维度 M_CC_T + alpha = self.cfg["TIME"]["alpha"] + beta = self.cfg["TIME"]["beta"] + gamma = self.cfg["TIME"]["gamma"] + + t_i_resp = np.exp(-alpha * node_i['temporal']['response_time']) + t_i_cycle = np.exp(-beta * node_i['temporal']['cycle_time']) + + w_ij = self.utils.calculate_time_window_overlap(node_i, node_j) + + M_CC_T = t_i_resp * t_i_cycle * w_ij + + # 4. 性能维度 M_CC_P + p_i_core = node_i['performance']['core_performance'] + p_i_surv = node_i['performance']['survivability'] + mtbf_max = self.nodes_data['global_params']['mtbf_max'] + p_i_rel = node_i['performance']['mtbf'] / mtbf_max + M_CC_P = p_i_core * p_i_surv * p_i_rel + + # 5. 交互维度 M_CC_I + prot_ij = self.utils.get_protocol_compatibility(node_i, node_j) + sec_ij = self.utils.get_security_compatibility(node_i, node_j) + org_ij = self.utils.get_organization_relation(node_i, node_j) + hist_ij = self.utils.get_interaction_history(node_i, node_j) + M_CC_I = ((prot_ij + sec_ij + org_ij) / 3) * hist_ij + + # 综合计算 + L_CC = (w["w_f"] * M_CC_F + w["w_s"] * M_CC_S + w["w_t"] * M_CC_T + + w["w_p"] * M_CC_P + w["w_i"] * M_CC_I) + + return L_CC + + def calculate_SF_relation(self, i: str, j: str) -> float: + """ + 计算状态反馈关系强度 + L_SF(i,j) = w_f·M_SF_F + w_s·M_SF_S + w_t·M_SF_T + w_p·M_SF_P + w_i·M_SF_I + """ + # 权重参数 + w = self._weights("SF") + lambda_SF = self._lambda("SF") + + node_i = self.nodes_data['nodes'][i] + node_j = self.nodes_data['nodes'][j] + + # 1. 功能维度 M_SF_F + f_i_sum = sum([ + node_i['function_vector']['f_IA'], + node_i['function_vector']['f_IT'], + node_i['function_vector']['f_IC'], + node_i['function_vector']['f_CS'], + node_i['function_vector']['f_DP'], + node_i['function_vector']['f_CPS'] + ]) + f_i_avg = f_i_sum / 6 + f_j_CC = node_j['function_vector']['f_CC'] + + std_ij = self.utils.get_interface_standard(node_i, node_j) + r_ij = self.utils.get_role_match(node_i, node_j) + M_SF_F = f_i_avg * f_j_CC * std_ij * r_ij + + # 2. 空间维度 M_SF_S + d_ij = self.utils.calculate_distance( + node_i['spatial']['position'], + node_j['spatial']['position'] + ) + + R_match = self.utils.calculate_range_match( + node_i['spatial']['effective_radius'], + node_j['spatial']['effective_radius'], + d_ij + ) + + s_area = self.utils.get_area_relation(node_i, node_j) + M_SF_S = np.exp(-d_ij / lambda_SF) * R_match * s_area + + # 3. 时间维度 M_SF_T(状态反馈对时间敏感) + alpha = self.cfg["TIME"]["alpha"] + beta = self.cfg["TIME"]["beta"] + gamma = self.cfg["TIME"]["gamma"] + + fresh_i = np.exp(-gamma * node_i['temporal']['data_age']) + t_i_resp = np.exp(-alpha * node_i['temporal']['response_time']) + + w_ij = self.utils.calculate_time_window_overlap(node_i, node_j) + + M_SF_T = fresh_i * t_i_resp * w_ij + + # 4. 性能维度 M_SF_P + p_i_core = node_i['performance']['core_performance'] + mtbf_max = self.nodes_data['global_params']['mtbf_max'] + p_i_rel = node_i['performance']['mtbf'] / mtbf_max + M_SF_P = p_i_core * p_i_rel + + # 5. 交互维度 M_SF_I + prot_ij = self.utils.get_protocol_compatibility(node_i, node_j) + fmt_ij = self.utils.get_format_compatibility(node_i, node_j) + sec_ij = self.utils.get_security_compatibility(node_i, node_j) + hist_ij = self.utils.get_interaction_history(node_i, node_j) + M_SF_I = ((prot_ij + fmt_ij + sec_ij) / 3) * hist_ij + + # 综合计算 + L_SF = (w["w_f"] * M_SF_F + w["w_s"] * M_SF_S + w["w_t"] * M_SF_T + + w["w_p"] * M_SF_P + w["w_i"] * M_SF_I) + + return L_SF + + def calculate_PD_relation(self, i: str, j: str) -> float: + """ + 计算平台部署关系强度 + L_PD(i,j) = w_f·M_PD_F + w_s·M_PD_S + w_t·M_PD_T + w_p·M_PD_P + w_i·M_PD_I + """ + # 权重参数 + w = self._weights("PD") + lambda_PD = self._lambda("PD") + + node_i = self.nodes_data['nodes'][i] + node_j = self.nodes_data['nodes'][j] + + # 1. 功能维度 M_PD_F + f_i_DP = node_i['function_vector']['f_DP'] + f_J_sum = sum([ + node_j['function_vector']['f_IA'], + node_j['function_vector']['f_IT'], + node_j['function_vector']['f_IC'], + node_j['function_vector']['f_CS'], + ]) + f_J_avg = f_J_sum / 4 + + # 修复:直接传递节点数据 + std_ij = self.utils.get_interface_standard(node_i, node_j) + r_ij = self.utils.get_role_match(node_i, node_j) + M_PD_F = f_i_DP * f_J_avg * std_ij * r_ij + + # 2. 空间维度 M_PD_S(平台部署对空间要求高) + d_ij = self.utils.calculate_distance( + node_i['spatial']['position'], + node_j['spatial']['position'] + ) + + R_match = self.utils.calculate_range_match( + node_i['spatial']['effective_radius'], + node_j['spatial']['effective_radius'], + d_ij + ) + # 修复:直接传递节点数据 + s_area = self.utils.get_area_relation(node_i, node_j) + if d_ij <= self.cfg["PD_SGM"]: + M_PD_S = 1 + else: + M_PD_S = np.exp(-d_ij / lambda_PD) * R_match * s_area + + # 3. 时间维度 M_PD_T + alpha = self.cfg["TIME"]["alpha"] + beta = self.cfg["TIME"]["beta"] + gamma = self.cfg["TIME"]["gamma"] + + t_i_resp = np.exp(-alpha * node_i['temporal']['response_time']) + t_i_cycle = np.exp(-beta * node_i['temporal']['cycle_time']) + + w_ij = self.utils.calculate_time_window_overlap(node_i, node_j) + + M_PD_T = t_i_resp * t_i_cycle * w_ij + + # 4. 性能维度 M_PD_P + p_i_core = node_i['performance']['core_performance'] + # 部署平台的生存能力 + p_i_surv = node_i['performance']['survivability'] + M_PD_P = p_i_core * p_i_surv + + # 5. 交互维度 M_PD_I + prot_ij = self.utils.get_protocol_compatibility(node_i, node_j) + fmt_ij = self.utils.get_format_compatibility(node_i, node_j) + # 注意:这里std_ij已经在上面计算过了 + M_PD_I = (prot_ij + fmt_ij + std_ij) / 3 + + # 综合计算 + L_PD = (w["w_f"] * M_PD_F + w["w_s"] * M_PD_S + w["w_t"] * M_PD_T + + w["w_p"] * M_PD_P + w["w_i"] * M_PD_I) + + return L_PD + + def calculate_CO_relation(self, i: str, j: str) -> float: + """ + 计算协同作战关系强度 + L_CO(i,j) = w_f·M_CO_F + w_s·M_CO_S + w_t·M_CO_T + w_p·M_CO_P + w_i·M_CO_I + """ + # 权重参数 + w = self._weights("CO") + lambda_CO = self._lambda("CO") + node_i = self.nodes_data['nodes'][i] + node_j = self.nodes_data['nodes'][j] + + # 1. 功能维度 M_CO_F + # 协同作战需要多个功能匹配 + f_i_avg = sum(node_i['function_vector'].values()) / len(node_i['function_vector']) + f_j_avg = sum(node_j['function_vector'].values()) / len(node_j['function_vector']) + + std_ij = self.utils.get_interface_standard(node_i, node_j) + r_ij = self.utils.get_role_match(node_i, node_j) + M_CO_F = f_i_avg * f_j_avg * std_ij * r_ij + + # 2. 空间维度 M_CO_S + d_ij = self.utils.calculate_distance( + node_i['spatial']['position'], + node_j['spatial']['position'] + ) + + R_match = self.utils.calculate_range_match( + node_i['spatial']['effective_radius'], + node_j['spatial']['effective_radius'], + d_ij + ) + + s_area = self.utils.get_area_relation(node_i, node_j) + M_CO_S = np.exp(-d_ij / lambda_CO) * R_match * s_area + + # 3. 时间维度 M_CO_T(协同需要时间同步) + alpha = self.cfg["TIME"]["alpha"] + beta = self.cfg["TIME"]["beta"] + gamma = self.cfg["TIME"]["gamma"] + + t_i_resp = np.exp(-alpha * node_i['temporal']['response_time']) + t_j_resp = np.exp(-alpha * node_j['temporal']['response_time']) + + t_i_cycle = np.exp(-beta * node_i['temporal']['cycle_time']) + t_j_cycle = np.exp(-beta * node_j['temporal']['cycle_time']) + + w_ij = self.utils.calculate_time_window_overlap(node_i, node_j) + + M_CO_T = (t_i_resp + t_j_resp) * (t_i_cycle + t_j_cycle) * w_ij * 0.25 + + # 4. 性能维度 M_CO_P + p_i_core = node_i['performance']['core_performance'] + p_j_core = node_j['performance']['core_performance'] + + mtbf_max = self.nodes_data['global_params']['mtbf_max'] + p_i_rel = node_i['performance']['mtbf'] / mtbf_max + p_j_rel = node_j['performance']['mtbf'] / mtbf_max + + p_i_surv = node_i['performance']['survivability'] + p_j_surv = node_j['performance']['survivability'] + # 协同性能取平均 + M_CO_P = ((p_i_core + p_j_core) / 2) * ((p_i_rel + p_j_rel) / 2) * ((p_i_surv + p_j_surv) / 2) + + # 5. 交互维度 M_CO_I + prot_ij = self.utils.get_protocol_compatibility(node_i, node_j) + fmt_ij = self.utils.get_format_compatibility(node_i, node_j) + sec_ij = self.utils.get_security_compatibility(node_i, node_j) + org_ij = self.utils.get_organization_relation(node_i, node_j) + hist_ij = self.utils.get_interaction_history(node_i, node_j) + M_CO_I = ((prot_ij + fmt_ij + sec_ij + org_ij) / 4) * hist_ij + + # 综合计算 + L_CO = (w["w_f"] * M_CO_F + w["w_s"] * M_CO_S + w["w_t"] * M_CO_T + + w["w_p"] * M_CO_P + w["w_i"] * M_CO_I) + + + return L_CO \ No newline at end of file diff --git a/final/scripts/inspect_dm_tables.py b/final/scripts/inspect_dm_tables.py new file mode 100644 index 0000000..29553a4 --- /dev/null +++ b/final/scripts/inspect_dm_tables.py @@ -0,0 +1,241 @@ +#!/usr/bin/env python3 +""" +在达梦数据库机器上运行,查看各表结构,用于编写 config 中的 db.query +用法: python scripts/inspect_dm_tables.py + +密码获取顺序:环境变量 DM_PASS > 下方 LOCAL_PASSWORD +若使用 LOCAL_PASSWORD,切勿提交到 git!可执行:git update-index --assume-unchanged scripts/inspect_dm_tables.py +""" +import os +import sys + +# 可选:在此直接填写密码(仅限本机调试,切勿提交到版本库!) +LOCAL_PASSWORD = None # 例如: "你的密码" + +# 支持从项目根或 scripts 目录运行 +_script_dir = os.path.dirname(os.path.abspath(__file__)) +_project_root = os.path.dirname(_script_dir) +XLSX_PATH = os.path.join(_project_root, "1125暂时属性需求(1).xlsx") +if _project_root not in sys.path: + sys.path.insert(0, _project_root) + +try: + import dmPython +except ImportError: + print("请先安装: pip install dmPython") + sys.exit(1) + +CONFIG = { + "user": os.getenv("DM_USER", "SYSDBA"), + "password": os.getenv("DM_PASS") or LOCAL_PASSWORD, + "server": os.getenv("DM_HOST", "127.0.0.1"), + "port": int(os.getenv("DM_PORT", "9080")), + "schema": "SYSDBA", +} + +TABLES = [ + "OBJECTIVE_INSTANCE", + "METRIC_VALUE_INSTANCE", + "METRIC_PROFILE", + "ROLE_PROFILE", + "TASK_PROFILE", + "RELATION_INSTANCE", + "RES_FORMAL_ANALYSIS", +] + + +def _load_required_attrs(xlsx_path: str) -> list: + """从 1125暂时属性需求(1).xlsx 解析需求属性列表(一条=一个属性)""" + if not os.path.exists(xlsx_path): + print(f" (未找到 {xlsx_path},使用内置属性列表)") + return _DEFAULT_REQ_ATTRS + try: + import pandas as pd + df = pd.read_excel(xlsx_path, header=None) + attrs = [] + for _, row in df.iterrows(): + v0 = row[0] + v2 = str(row[2]) if len(row) > 2 and pd.notna(row[2]) else "" + if pd.notna(v0) and str(v0).strip() and str(v0) != "属性代码名称": + attrs.append(str(v0).strip()) + if ":" in v2: + sub = v2.split(":")[0].strip() + if sub and sub not in attrs: + attrs.append(sub) + return attrs if attrs else _DEFAULT_REQ_ATTRS + except Exception as e: + print(f" (解析 xlsx 失败: {e},使用内置属性列表)") + return _DEFAULT_REQ_ATTRS + + +# xlsx 解析失败时的兜底属性列表(来自 1125暂时属性需求) +_DEFAULT_REQ_ATTRS = [ + "f_IC", "f_IA", "f_CS", "f_IT", "f_DP", "f_CPS", "f_CC", + "position", "effective_radius", + "response_time", "cycle_time", "data_age", "time_window", + "core_performance", "survivability", "mtbf", + "protocol_list", "format_list", "interface_list", + "security_level", "org_unit", "nation", "history_success", +] + + +def main(): + if not CONFIG["password"]: + print("请设置环境变量 DM_PASS 或在脚本中填写 LOCAL_PASSWORD") + sys.exit(1) + + try: + conn = dmPython.connect( + user=CONFIG["user"], + password=CONFIG["password"], + server=CONFIG["server"], + port=CONFIG["port"], + schema=CONFIG["schema"], + ) + except Exception as e: + print(f"连接失败: {e}") + sys.exit(1) + + cursor = conn.cursor() + print("=" * 60) + print("达梦表结构(用于编写 config/db.query)") + print("=" * 60) + + for table in TABLES: + try: + cursor.execute(f'SELECT * FROM "{CONFIG["schema"]}"."{table}" WHERE 1=0') + cols = [d[0] for d in cursor.description] + print(f"\n【{table}】 列: {cols}") + except Exception as e: + print(f"\n【{table}】 查询失败: {e}") + + # 专门查询 METRIC_VALUE_INSTANCE 的字段详情(含完整属性) + mvi_table = "METRIC_VALUE_INSTANCE" + print("\n" + "=" * 80) + print(f"【{mvi_table}】 字段详情(完整属性)") + print("=" * 80) + try: + # 查询 DBA_TAB_COLUMNS 全部常用属性(达梦兼容) + cursor.execute( + """ + SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_SCALE, + NULLABLE, DATA_DEFAULT, COLUMN_ID + FROM DBA_TAB_COLUMNS + WHERE OWNER = ? AND TABLE_NAME = ? + ORDER BY COLUMN_ID + """, + (CONFIG["schema"], mvi_table), + ) + mvi_cols = cursor.fetchall() + # 表头 + fmt = " {:<18} {:<16} {:<10} {:<10} {:<8} {:<10} {:<20}" + print(fmt.format("列名", "数据类型", "长度", "精度", "标度", "可空", "默认值")) + print(" " + "-" * 90) + for row in mvi_cols: + col_name, data_type, data_length, data_precision, data_scale, nullable, data_default, col_id = row + # 类型显示:数值型用 类型(精度,标度),字符型用 类型(长度) + if data_precision is not None: + type_str = f"{data_type}({data_precision},{data_scale or 0})" + elif data_length and data_type.upper() in ("VARCHAR", "CHAR", "VARCHAR2"): + type_str = f"{data_type}({data_length})" + elif data_length: + type_str = f"{data_type}({data_length})" + else: + type_str = data_type or "" + len_val = str(data_length) if data_length is not None else "-" + prec_val = str(data_precision) if data_precision is not None else "-" + scale_val = str(data_scale) if data_scale is not None else "-" + null_str = "NULL" if nullable == "Y" else "NOT NULL" + default_str = (str(data_default).strip() if data_default else "-")[:18] + print(fmt.format(col_name, type_str, len_val, prec_val, scale_val, null_str, default_str)) + + # 查询样本数据(若有) + cursor.execute(f'SELECT * FROM "{CONFIG["schema"]}"."{mvi_table}" WHERE ROWNUM <= 3') + sample_rows = cursor.fetchall() + if sample_rows: + col_names = [d[0] for d in cursor.description] + print(f"\n 样本数据 (最多 3 行):") + for i, row in enumerate(sample_rows, 1): + print(f" 行{i}: {dict(zip(col_names, row))}") + else: + print("\n (表无数据)") + except Exception as e: + print(f" 查询失败: {e}") + + # 按 1125暂时属性需求(1).xlsx 查询 METRIC_VALUE_INSTANCE(一条=一个属性) + print("\n" + "=" * 80) + print("【METRIC_VALUE_INSTANCE】按需求属性查询(xlsx 中一条 = 一个 METRIC_ID)") + print("=" * 80) + try: + # 1. 从 xlsx 解析需求属性列表 + req_attrs = _load_required_attrs(XLSX_PATH) + print(f"\n xlsx 需求属性 ({len(req_attrs)} 个): {req_attrs}") + + # 2. 查询库中实际存在的 METRIC_ID(distinct) + cursor.execute( + f'SELECT DISTINCT METRIC_ID FROM "{CONFIG["schema"]}"."METRIC_VALUE_INSTANCE" ORDER BY METRIC_ID' + ) + db_metric_ids = [r[0] for r in cursor.fetchall()] + print(f"\n 库中已有 METRIC_ID ({len(db_metric_ids)} 个): {db_metric_ids or '(无数据)'}") + + # 3. METRIC_PROFILE 对照(METRIC_ID -> 中文名) + cursor.execute( + f'SELECT METRIC_ID, METRIC_NAME FROM "{CONFIG["schema"]}"."METRIC_PROFILE"' + ) + profile_map = dict(cursor.fetchall()) + if profile_map: + print("\n METRIC_PROFILE 对照:") + for mid, mname in sorted(profile_map.items()): + print(f" {mid} -> {mname}") + + # 4. 交集:需求属性中在库里有的 + in_both = [a for a in req_attrs if a in db_metric_ids] + # 需求有但库无 + missing = [a for a in req_attrs if a not in db_metric_ids] + # 库有但需求未列 + extra = [m for m in db_metric_ids if m not in req_attrs] + + print(f"\n 需求与库交集 (可查): {in_both or '无'}") + print(f" 需求有但库无: {missing or '无'}") + print(f" 库有但需求未列: {extra or '无'}") + + # 5. 按属性查询示例 SQL + print("\n --- 按属性查询示例 SQL ---") + for attr in (in_both or req_attrs)[:5]: # 最多展示 5 个 + sql = f'SELECT * FROM "{CONFIG["schema"]}"."METRIC_VALUE_INSTANCE" WHERE METRIC_ID = \'{attr}\'' + print(f" -- {attr}: {sql}") + if len(in_both or req_attrs) > 5: + print(f" ... 其余属性同理,将 METRIC_ID = 'xxx' 替换即可") + except Exception as e: + print(f" 查询失败: {e}") + import traceback + traceback.print_exc() + + cursor.execute( + """ + SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE + FROM DBA_TAB_COLUMNS + WHERE OWNER = ? + ORDER BY TABLE_NAME, COLUMN_ID + """, + (CONFIG["schema"],), + ) + rows = cursor.fetchall() + + print("\n" + "=" * 60) + print("所有列详情 (TABLE_NAME | COLUMN_NAME | DATA_TYPE)") + print("=" * 60) + cur_table = None + for table, col, dtype in rows: + if table != cur_table: + cur_table = table + print(f"\n--- {table} ---") + print(f" {col}: {dtype}") + + cursor.close() + conn.close() + print("\n完成。请根据上述结构在 config 中编写 db.query。") + + +if __name__ == "__main__": + main() diff --git a/final/scripts/run_all.py b/final/scripts/run_all.py new file mode 100644 index 0000000..104fa07 --- /dev/null +++ b/final/scripts/run_all.py @@ -0,0 +1,167 @@ +#!/usr/bin/env python3 +""" +一键运行:实体属性表 + 三元组 的读取、清洗、导出 +用法: python scripts/run_all.py +""" +import json +import os +import sys + +_script_dir = os.path.dirname(os.path.abspath(__file__)) +_project_root = os.path.dirname(_script_dir) +sys.path.insert(0, _project_root) + + +def _json_serializer(obj): + if hasattr(obj, 'isoformat'): + return obj.isoformat() + if hasattr(obj, 'item'): + return obj.item() + if isinstance(obj, float) and (obj != obj or obj == float('inf') or obj == float('-inf')): + return None + raise TypeError(f'Object of type {type(obj).__name__} is not JSON serializable') + + +def load_config(project_root: str) -> dict: + config_dir = os.path.join(project_root, 'config') + json_path = os.path.join(config_dir, 'config.json') + yaml_path = os.path.join(config_dir, 'config.yaml') + if os.path.exists(json_path): + with open(json_path, 'r', encoding='utf-8') as f: + return json.load(f) + if os.path.exists(yaml_path): + try: + import yaml + with open(yaml_path, 'r', encoding='utf-8') as f: + return yaml.safe_load(f) + except ImportError: + pass + return {'source': 'json', 'json': {}, 'triplet': {}, 'db': {}} + + +def _resolve_path(path: str, project_root: str) -> str: + return path if os.path.isabs(path) else os.path.join(project_root, path) + + +def main(): + from src.cleaner import AdvancedDataCleaner + from src.data_loader import load_data, load_triplets_from_dm, load_from_json, run_formalization_pipeline + from src.triplet_cleaner import clean_triplets + + config = load_config(_project_root) + source = config.get('source', 'json') + tc = config.get('triplet', {}) + + # 三元组:db 模式默认处理;json 模式需 triplet.input_file;triplet.enabled=false 可关闭 + triplet_input = tc.get('input_file') + run_triplets = tc.get('enabled', source == 'db' or bool(triplet_input)) + + print("=" * 50) + print("作战体系数据清洗 - 一键运行") + print("=" * 50) + print(f"数据源: {source}") + + # ---------- 1. 实体属性表 ---------- + print("\n【1/2】实体属性表 读取与清洗") + try: + data, paths = load_data(config, _project_root) + except (FileNotFoundError, ValueError) as e: + print(f"错误:{e}") + sys.exit(1) + + os.makedirs(os.path.dirname(paths['report']), exist_ok=True) + cleaner = AdvancedDataCleaner(output_file=paths['output'], report_file=paths['report'], data=data) + cleaner.run() + valid_ids = cleaner.get_valid_target_ids() + print(f" -> 输出: {paths['output']}") + print(f" -> 报告: {paths['report']}") + + # ---------- 2. 三元组 ---------- + if not run_triplets: + print("\n【2/2】三元组 已跳过(triplet.enabled=false 或 json 模式未配置 input_file)") + print("\n完成。") + return + + print("\n【2/2】三元组 读取与清洗") + + if source == 'db': + triplets = load_triplets_from_dm(config, _project_root) + print(f" 从达梦读取 {len(triplets)} 条三元组") + elif triplet_input: + input_path = _resolve_path(triplet_input, _project_root) + if os.path.exists(input_path): + raw = load_from_json(input_path, _project_root) + triplets = raw.get("triples", raw) if isinstance(raw, dict) else raw + triplets = triplets if isinstance(triplets, list) else [] + print(f" 从 {triplet_input} 读取 {len(triplets)} 条三元组") + else: + print(f" 跳过:三元组文件不存在 {input_path}") + triplets = [] + else: + print(" 跳过:json 模式未配置 triplet.input_file") + triplets = [] + + if not triplets: + print(" 无三元组数据,跳过导出") + print("\n完成。") + return + + # 三元组清洗配置 + clean_cfg = tc.get('clean', True) + do_clean = {'deduplicate': True, 'filter_orphans': False, 'remove_null_core': True, 'normalize_relation_type': True} if clean_cfg is True else (clean_cfg if isinstance(clean_cfg, dict) else {}) + deduplicate = do_clean.get('deduplicate', True) if do_clean else False + filter_orphans = do_clean.get('filter_orphans', False) if do_clean else False + remove_null_core = do_clean.get('remove_null_core', True) if do_clean else False + normalize_relation_type = do_clean.get('normalize_relation_type', True) if do_clean else False + + if do_clean and (deduplicate or filter_orphans or remove_null_core or normalize_relation_type): + triplets, report = clean_triplets( + triplets, + valid_ids=valid_ids if filter_orphans else None, + deduplicate=deduplicate, + filter_orphans=filter_orphans, + remove_null_core=remove_null_core, + normalize_relation_type=normalize_relation_type, + ) + report_path = _resolve_path(tc.get('report_file', 'report/triplet_cleaning_report.json'), _project_root) + os.makedirs(os.path.dirname(report_path), exist_ok=True) + with open(report_path, 'w', encoding='utf-8') as f: + json.dump(report, f, ensure_ascii=False, indent=2, default=_json_serializer) + print(f" 清洗: {report['original_count']} -> {report['final_count']}") + print(f" 报告: {report_path}") + + # 转为输出格式:head, head_type, relation, tail, tail_type + from src.triplet_cleaner import transform_triplet_output_format + id_to_role = cleaner.get_id_to_role() + triplets = transform_triplet_output_format(triplets, id_to_role) + + output_path = _resolve_path(tc.get('output_file', 'data/triples.json'), _project_root) + os.makedirs(os.path.dirname(output_path), exist_ok=True) + with open(output_path, 'w', encoding='utf-8') as f: + json.dump(triplets, f, ensure_ascii=False, indent=2, default=_json_serializer) + print(f" 输出: {output_path}") + + # ---------- 3. 模块1.3:形式化入库 ---------- + formal_cfg = config.get("formal", {}) + if source == "db" and formal_cfg.get("enabled", False): + print("\n【3/3】形式化模块 读取-补齐-入库") + try: + result = run_formalization_pipeline(config) + if result.get("ok"): + stats = result.get("stats", {}) + print(f" 批次: {result.get('batch_id')}") + print(f" 推理三元组: {stats.get('total_triples', 0)}") + print(f" 形式化入库: {stats.get('inserted_formal_count', 0)}") + print(f" 属性补齐写回: {stats.get('generated_attrs_count', 0)}") + else: + print(f" 形式化流程跳过: {result.get('reason', 'unknown')}") + except Exception as e: + print(f" 形式化流程失败: {e}") + raise + elif formal_cfg.get("enabled", False): + print("\n【3/3】形式化模块 已跳过(仅 source=db 时启用)") + + print("\n完成。") + +if __name__ == "__main__": + main() diff --git a/final/scripts/utils.py b/final/scripts/utils.py new file mode 100644 index 0000000..6252d16 --- /dev/null +++ b/final/scripts/utils.py @@ -0,0 +1,110 @@ +import numpy as np +from typing import Dict, List, Any +from scipy.spatial.distance import euclidean + +class NetworkUtils: + """无需 aux_data,全部现场从节点属性读取""" + """ 角色匹配矩阵暂时没加 """ + # ----------- 通用兜底 ----------- + _DEFAULT = { + "protocol": 0.80, + "format": 0.85, + "security": 0.90, + "role": 0.70, + "area": 0.50, + "org": 0.70, + "area_1": 1, + "area_2": 0.7, + "history": 0.8 + } + + # ----------- 空间 ----------- + @staticmethod + def calculate_distance(pos1, pos2): + return euclidean(pos1, pos2) + + @staticmethod + def calculate_range_match(R_i: float, R_j: float, d_ij: float) -> float: + r_min = min(R_i, R_j) + if d_ij <= r_min: + return 1.0 + return r_min / d_ij if d_ij > 0 else 0.0 + + @staticmethod + def calculate_time_window_overlap(node_i, node_j): + w_i = node_i["temporal"].get("time_window", 24) + w_j = node_j["temporal"].get("time_window", 24) + overlap = min(w_i, w_j) + return overlap / max(w_i, w_j, 1) + + # ----------- 协议兼容性:Jaccard ----------- + @staticmethod + def get_protocol_compatibility(node_i, node_j, _dummy=None): + """节点属性里放 'protocol_list'""" + p_i = set(node_i.get("protocol_list", [])) + p_j = set(node_j.get("protocol_list", [])) + if not p_i or not p_j: + return NetworkUtils._DEFAULT["protocol"] + intersection = len(p_i & p_j) + union = len(p_i | p_j) + return intersection / union if union else NetworkUtils._DEFAULT["protocol"] + + # ----------- 安全等级:1-5 映射 0-1 ----------- + @staticmethod + def get_security_compatibility(node_i, node_j, _dummy=None): + lv_i = node_i.get("security_level", 3) + lv_j = node_j.get("security_level", 3) + gap = abs(lv_i - lv_j) + return max(0, 1 - gap / 5) + + # ----------- 组织隶属:同单位给高分 ----------- + @staticmethod + def get_organization_relation(node_i, node_j, _dummy=None): + unit_i = node_i.get("org_unit", "") + unit_j = node_j.get("org_unit", "") + return 1.0 if unit_i == unit_j and unit_i else NetworkUtils._DEFAULT["org"] + + # ----------- 历史交互:直接读属性 ----------- + @staticmethod + def get_interaction_history(node_i, node_j, _dummy=None): + his_i = node_i.get("history_success", NetworkUtils._DEFAULT["history"]) + # print("111111111111111111111",node_i.get("history_success")) + his_j = node_j.get("history_success", NetworkUtils._DEFAULT["history"]) + return (his_i + his_j) / 2 + + # ----------- 区域关联:同 code 高分 ----------- + @staticmethod + def get_area_relation(node_i, node_j, _dummy=None): + code_i = node_i.get("nation") + code_j = node_j.get("nation") + if code_i == code_j: + return NetworkUtils._DEFAULT["area_1"] + else: + return NetworkUtils._DEFAULT["area_2"] + + # ----------- 接口/角色/格式:若节点属性扩展了再读,否则给默认 ----------- + @staticmethod + def get_role_match(node_i, node_j, _dummy=None): + return node_i.get("role_match", NetworkUtils._DEFAULT["role"]) + + @staticmethod + def get_interface_standard(node_i, node_j, _dummy=None) -> float: + """接口标准兼容性 = Jaccard(i_list, j_list)""" + i_set = set(node_i.get("interface_list", [])) + j_set = set(node_j.get("interface_list", [])) + if not i_set or not j_set: + return NetworkUtils._DEFAULT["protocol"] # 默认0.8 + inter = len(i_set & j_set) + union = len(i_set | j_set) + return inter / union if union else NetworkUtils._DEFAULT["protocol"] + + @staticmethod + def get_format_compatibility(node_i, node_j, _dummy=None) -> float: + """数据格式兼容性 = Jaccard(i_format, j_format)""" + i_set = set(node_i.get("format_list", [])) + j_set = set(node_j.get("format_list", [])) + if not i_set or not j_set: + return NetworkUtils._DEFAULT["format"] # 默认0.85 + inter = len(i_set & j_set) + union = len(i_set | j_set) + return inter / union if union else NetworkUtils._DEFAULT["format"] \ No newline at end of file diff --git a/final/src/__init__.py b/final/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/final/src/__pycache__/__init__.cpython-313.pyc b/final/src/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc2ca63aca6f557553ebff3e19e0ccc0ce816a77 GIT binary patch literal 144 zcmey&%ge<81Sc96W`gL)AOZ#$p^VQgK*m&tbOudEzm*I{OhDdekkl=G{fzwFRQ-(7 z#Ju#h((G*g-29Z%oK(YjWBs(uyu=*+;-X~z`1s7c%#!$cy@JYH95xUYc15f}{UGy; PL5z>gjEsy$%s>_Z)m0&R literal 0 HcmV?d00001 diff --git a/final/src/__pycache__/attribute_schema.cpython-313.pyc b/final/src/__pycache__/attribute_schema.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..44636fabf1f7966c5709c2c2898c16641aae73b8 GIT binary patch literal 31410 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 BVw(T} literal 0 HcmV?d00001 diff --git a/final/src/__pycache__/cleaner.cpython-313.pyc b/final/src/__pycache__/cleaner.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d71aa71c4252cbea622a74e8f19df4669297ba87 GIT binary patch literal 16421 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 literal 0 HcmV?d00001 diff --git a/final/src/__pycache__/cleaner.cpython-38.pyc b/final/src/__pycache__/cleaner.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..70c758df16d174bd2b648d7a10bd9aaec72d6def GIT binary patch literal 6803 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 literal 0 HcmV?d00001 diff --git a/final/src/__pycache__/data_loader.cpython-313.pyc b/final/src/__pycache__/data_loader.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b2016902de4a2200710d1498b470f445e38c1ed7 GIT binary patch literal 32641 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
qN<=K2*aywv|0 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 literal 0 HcmV?d00001 diff --git a/final/src/__pycache__/data_loader.cpython-38.pyc b/final/src/__pycache__/data_loader.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..98804a72aa5f039723129e766e8a0ea8b498b5c8 GIT binary patch literal 3359 zcmb7H|8o<^72nDWJO5$l4Q}k#x%5 z9bY`B4qy}8sU0_i3n?*)eiRt|1YY|bG!!Kf#gyc55{oZM68K6v zDK95wjOZFefuBm{DTyjn9a54_wAF|RS`*MBGzzq+pvZ=5M6zTfqI^c9u^~CB34Vpf zfznJ{fD)sm2PM|JpTYK8?RU3p<1@i~<@&-x?N%kYaqaQ^_1ffYZR}$8!Tb7~J%_vW z+STFegFCg6tM$dj+VtlQmbokS*$2VI)o`c<^B01N4<3DZr#AD~>cYdN$y`%e!dV)R3}1dB zd*QXaq47|Oc$l?2s2`V!hbq_(`;v!YL`uYwJ$?yM3OcC2FWmMzh zc}?ZG7pY*33R}D=`}>NdlE&xgI#2ru(dWD=jnH+P~z zJPN&X3+xetZ?u9i8b(=6H^7>R7vn3Ap=k(6&`r#ONAd97=(^mhIy~T3&jj9T&k{=@ zg6f}N3}!~_pI+8!{>XXflvU7!iT6UrU}m~Da(C$uv%%aI2*~P#%fZyGMtHqJ`}Eqi zJN4Ux5VArTgBwI$?i94o?8^aSe&WAw_VtBJT7C9zZS-cnGPXl6nnm3#*iJf^d!mmP z+`j|+)}}_E(F$TcM2Gsr-vamJ`4QOS(dF@_g&Do`P-_3-L;E%#>`Wazu%~->_leYz z-ADI7o*(rI?MudB{>bj0o@0l*JKbNbXuL|%`phB-YQWFLhmVFQxX@)LuJ_VsbJfM) z?9h#KMTUPKkYtzNN*pI+B@36!R_vqZ=bGVBih#?gn;4d!(Rq7*Q@tO^`5s5f{_5U zb(j{S`B8&~E5Yb^X#eWHx%$na`q*GFcC}u)1&+bZe&Krk;jk{`=}YrhgLi+gzj^pT zmmVx$1K6&OUJUO41sFoq2ay@>Ez1wbT@Fw^@Y-$AoP>z}WxRwvOwmU40eOd`B^Dkg zpesRq((#%vQ^U>(LfEVYR$tqh10>5>`Qol0b9r2_3J5%)uizHVckIkrnRL$H1)b&P z-_l71R=5{rZ-PeXw6265z@-u7;X%NPP_t!~WNKy{Um7rr3BtYuEWX67vtMApDP!f_ ze8FDPlIbwL2i_;@CD!0TP=pnFYsJGC9jO0Eb;>gCqqI-Yf#+IV0mbh9495GmDN1QX*Ny$((}7 zOT-yJbcouo@SU)cRB2x-lRe2c^0CY}VVn6PZW;CxZ-iUQaNx!Bxgr$IW={-H()j^K4LlEsQR-b6T;EVlwZg4Ywa z4dgwQT=>=TSETQ+paUsFR7^Zkd$_pXfg}#_3Tc6o(}d;3JP|2GawJcJ)sRvkQNTs> zq#`I#NrjZgI7}t5f<~tZq#M~&vK*8N)j;MwNAZNCl;o$R|6j5oJ;Xc$2_t?3(jTOW zW(b8AcRw6Sz;3O4A1bjhq*ntx#AW^AWbo0)`u7@@*T^*p*H`uW-PvGqC}c*-5> zeh_>NQ0#Ktgp&tzlK@jXS5yzN3~DBpfXOg)R0yKXSt{xjzZrJ6t=yTgG!(AHegI1o z>Z&-{4uoWc3*=z{$ODG)6<&Zf+?`icp}R+gyYmG<1Df3q4U)mPNd&xi9cjg_|59b{ zw;IqIBf>ZsBqULy{f~NS86|~Fb9h;)L|Ll`;3>w9YLw$;7ZiUSDMF#V)M7Ed3t6>` zQ2UAQj3Z_ryf%*=B%)2wxG?yO`%S47wKA!c@Rf!!o%2PwKgRX*C4d;HJb5k2i$L~W r-tg!Y2Nbea0rr!P{m9O|MctgSi{}L!{{KO;uu)uUi?;n}(~JKBdY45` literal 0 HcmV?d00001 diff --git a/final/src/__pycache__/formalization_pipeline.cpython-313.pyc b/final/src/__pycache__/formalization_pipeline.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..054ddb914ee224fb7ed476c8a42d2f5bf97ae929 GIT binary patch literal 31577 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 M^1o3-v$Q4u2fC6&F#rGn literal 0 HcmV?d00001 diff --git a/final/src/attribute_schema.py b/final/src/attribute_schema.py new file mode 100644 index 0000000..d32bca1 --- /dev/null +++ b/final/src/attribute_schema.py @@ -0,0 +1,701 @@ +# -*- coding: utf-8 -*- +""" +属性规范定义模块 - 基于 1125暂时属性需求 +实现内容与格式的双重对齐:格式校验(结构类型)+ 内容校验(取值范围、类型) +""" + +import math +from typing import Any, Dict, List, Optional, Tuple + +# ============ 目标 Schema 定义(来自 1125暂时属性需求.xlsx) ============ + +# function_vector: 字典,键为功能维度,值为 [0,1] 浮点数 +FUNCTION_VECTOR_KEYS = [ + "f_IC", # 情报收集能力 + "f_IA", # 信息分析能力 + "f_CS", # 协同作战能力 + "f_IT", # 信息传输能力 + "f_DP", # 数据处理能力 + "f_CPS", # 指挥控制能力 + "f_CC", # 综合保障能力 +] + +# spatial: 字典 +SPATIAL_KEYS = { + "position": lambda v: isinstance(v, (list, tuple)) and len(v) >= 2 + and all(isinstance(x, (int, float)) for x in v[:2]), + "effective_radius": lambda v: isinstance(v, (int, float)) and not isinstance(v, bool), +} + +# temporal: 字典 +TEMPORAL_KEYS = { + "response_time": lambda v: isinstance(v, (int, float)) and not isinstance(v, bool), + "cycle_time": lambda v: isinstance(v, (int, float)) and not isinstance(v, bool), + "data_age": lambda v: isinstance(v, (int, float)) and not isinstance(v, bool), + "time_window": lambda v: isinstance(v, (int, float)) and not isinstance(v, bool), +} + +# performance: 字典 +PERFORMANCE_KEYS = { + "core_performance": lambda v: isinstance(v, (int, float)) and not isinstance(v, bool) + and 0 <= float(v) <= 1, + "survivability": lambda v: isinstance(v, (int, float)) and not isinstance(v, bool) + and 0 <= float(v) <= 1, + "mtbf": lambda v: isinstance(v, (int, float)) and not isinstance(v, bool), +} + +# nodes.json 输出字段(完全对齐 xlsx,仅含规范字段 + 节点标识) +# TARGET_ID 为节点唯一标识(三元组 head/tail 引用所需) +OUTPUT_SCHEMA_FIELDS = [ + "TARGET_ID", + "function_vector", + "spatial", + "temporal", + "performance", + "protocol_list", + "format_list", + "interface_list", + "security_level", + "org_unit", + "nation", + "history_success", +] + +# 原始字段 -> 目标 schema 映射(用于 flat 数据转换为规范格式) +RAW_TO_TARGET_MAPPING = { + # function_vector 从多个能力字段推导 + "function_vector": { + "f_IC": ["DETECTION_ACCURACY", "TARGET_RECOGNITION_CAPABILITY"], # 情报收集 + "f_IA": ["INFORMATION_FUSION_CAPABILITY", "DETECTION_ACCURACY"], # 信息分析 + "f_CS": ["MOBILITY", "ENVIRONMENT_ADAPTABILITY"], # 协同作战 + "f_IT": ["ANTI_JAMMING_CAPABILITY"], # 信息传输(抗干扰) + "f_DP": ["PROCESSING_CAPACITY", "INFORMATION_FUSION_CAPABILITY"], # 数据处理 + "f_CPS": ["DECISION_RESPONSE_TIME"], # 指挥控制(响应时间反推) + "f_CC": ["SUPPORT_CAPACITY", "LOAD_CAPACITY"], # 综合保障 + }, + "spatial": { + "position": ["X", "Y"], + "effective_radius": ["COMMUNICATION_RANGE"], + }, + "temporal": { + "response_time": ["DECISION_RESPONSE_TIME"], + "cycle_time": ["REFRESH_RATE"], + "data_age": ["TRANSMISSION_DELAY"], # 传输延迟可近似数据新鲜度 + "time_window": ["REFRESH_RATE"], # 周期倒数近似时间窗口 + }, + "performance": { + "core_performance": ["STRIKE_ACCURACY", "DETECTION_ACCURACY", "MOBILITY"], + "survivability": ["ENVIRONMENT_ADAPTABILITY", "ANTI_JAMMING_CAPABILITY"], + "mtbf": ["RELIABILITY", "SYSTEM_RELIABILITY"], + }, + "nation": ["COUNTRY_REGION"], + "org_unit": ["LEVEL", "ROLE_ID"], + "history_success": [], # 无直接映射,需默认或缺失 +} + + +def _clamp_0_1(val: Any) -> Optional[float]: + """将值限制在 [0,1] 范围内,无效返回 None""" + if val is None or (isinstance(val, float) and (val != val)): + return None + try: + f = float(val) + if f < 0: + return 0.0 + if f > 1: + return 1.0 + return f + except (TypeError, ValueError): + return None + + +def _safe_float(val: Any) -> Optional[float]: + if val is None or (isinstance(val, float) and (val != val)): + return None + try: + return float(val) + except (TypeError, ValueError): + return None + + +def _safe_int(val: Any, lo: int = None, hi: int = None) -> Optional[int]: + if val is None: + return None + try: + i = int(float(val)) + if lo is not None and i < lo: + return lo + if hi is not None and i > hi: + return hi + return i + except (TypeError, ValueError): + return None + + +def _ensure_list_of_strings(val: Any) -> List[str]: + """确保为字符串列表""" + if val is None: + return [] + if isinstance(val, list): + return [str(x).strip() for x in val if x is not None and str(x).strip()] + if isinstance(val, str) and val.strip(): + return [val.strip()] + return [] + + +# ---------- 固定参考值转换(用于 function_vector 中需特殊归一化的维度)---------- +# 参考时间(秒):响应时间 t 越短,f_CPS 越高 +_CPS_REF_TIME = 30.0 +# 处理能力参考上限 +_FDP_REF_CAP = 10000.0 +# 保障/载荷能力参考 +_FCC_REF_SUPPORT = 10000.0 +_FCC_REF_LOAD = 100.0 + + +def _response_time_to_cps(val: Any) -> Optional[float]: + """响应时间(秒) -> f_CPS [0,1],响应越快能力越高""" + f = _safe_float(val) + if f is None or f < 0: + return None + v = 1.0 / (1.0 + f / _CPS_REF_TIME) + return min(1.0, max(0.0, v)) + + +def _processing_to_fdp(raw: dict) -> Optional[float]: + """PROCESSING_CAPACITY 或 INFORMATION_FUSION_CAPABILITY -> f_DP [0,1]""" + pc = raw.get("PROCESSING_CAPACITY") + if pc is not None and (not isinstance(pc, float) or pc == pc): + try: + v = float(pc) + if v < 0: + return 0.0 + norm = math.log10(1 + v) / math.log10(1 + _FDP_REF_CAP) + return min(1.0, norm) + except (TypeError, ValueError): + pass + ifc = raw.get("INFORMATION_FUSION_CAPABILITY") + if ifc is not None and (not isinstance(ifc, float) or ifc == ifc): + return _clamp_0_1(ifc) + return None + + +def _support_load_to_fcc(raw: dict) -> Optional[float]: + """SUPPORT_CAPACITY 与 LOAD_CAPACITY -> f_CC [0,1],支持组合""" + support = raw.get("SUPPORT_CAPACITY") + load = raw.get("LOAD_CAPACITY") + s_norm = None + l_norm = None + if support is not None and (not isinstance(support, float) or support == support): + try: + v = float(support) + if v >= 0: + s_norm = min(1.0, math.log10(1 + v) / math.log10(1 + _FCC_REF_SUPPORT)) + except (TypeError, ValueError): + pass + if load is not None and (not isinstance(load, float) or load == load): + try: + v = float(load) + if v >= 0: + l_norm = min(1.0, v / _FCC_REF_LOAD) + except (TypeError, ValueError): + pass + if s_norm is not None and l_norm is not None: + return round(0.6 * s_norm + 0.4 * l_norm, 4) + if s_norm is not None: + return s_norm + return l_norm + + +# ============ 格式校验 ============ + +def check_format_function_vector(val: Any) -> Tuple[bool, str]: + """校验 function_vector 格式:必须为字典""" + if val is None: + return True, "optional" + if not isinstance(val, dict): + return False, f"期望 dict,实际 {type(val).__name__}" + for k in val: + if not isinstance(k, str): + return False, f"键必须为 str,发现 {type(k).__name__}" + v = val[k] + if not isinstance(v, (int, float)) or isinstance(v, bool): + return False, f"键 {k} 的值应为 [0,1] 浮点数,实际 {type(v).__name__}" + f = float(v) + if f < 0 or f > 1: + return False, f"键 {k} 的值 {f} 超出 [0,1]" + return True, "ok" + + +def check_format_spatial(val: Any) -> Tuple[bool, str]: + """校验 spatial 格式:必须为字典,含 position 与 effective_radius""" + if val is None: + return True, "optional" + if not isinstance(val, dict): + return False, f"期望 dict,实际 {type(val).__name__}" + pos = val.get("position") + if pos is not None: + if not isinstance(pos, (list, tuple)) or len(pos) < 2: + return False, "position 应为 [x, y] 列表" + if not all(isinstance(x, (int, float)) for x in pos[:2]): + return False, "position 元素应为数字" + rad = val.get("effective_radius") + if rad is not None and not isinstance(rad, (int, float)): + return False, "effective_radius 应为数字" + return True, "ok" + + +def check_format_temporal(val: Any) -> Tuple[bool, str]: + """校验 temporal 格式""" + if val is None: + return True, "optional" + if not isinstance(val, dict): + return False, f"期望 dict,实际 {type(val).__name__}" + for k in ["response_time", "cycle_time", "data_age", "time_window"]: + v = val.get(k) + if v is not None and not isinstance(v, (int, float)): + return False, f"{k} 应为数字" + return True, "ok" + + +def check_format_performance(val: Any) -> Tuple[bool, str]: + """校验 performance 格式""" + if val is None: + return True, "optional" + if not isinstance(val, dict): + return False, f"期望 dict,实际 {type(val).__name__}" + for k in ["core_performance", "survivability"]: + v = val.get(k) + if v is not None: + try: + f = float(v) + if f < 0 or f > 1: + return False, f"{k} 应在 [0,1],实际 {f}" + except (TypeError, ValueError): + return False, f"{k} 应为数字" + return True, "ok" + + +def check_format_protocol_list(val: Any) -> Tuple[bool, str]: + if val is None: + return True, "optional" + if not isinstance(val, list): + return False, f"期望 list,实际 {type(val).__name__}" + for i, x in enumerate(val): + if not isinstance(x, str): + return False, f"元素[{i}] 应为 str,实际 {type(x).__name__}" + return True, "ok" + + +def check_format_format_list(val: Any) -> Tuple[bool, str]: + return check_format_protocol_list(val) + + +def check_format_interface_list(val: Any) -> Tuple[bool, str]: + return check_format_protocol_list(val) + + +def check_format_security_level(val: Any) -> Tuple[bool, str]: + if val is None: + return True, "optional" + if not isinstance(val, int) or isinstance(val, bool): + try: + int(val) + except (TypeError, ValueError): + return False, f"期望 int [1,5],实际 {type(val).__name__}" + v = int(val) + if v < 1 or v > 5: + return False, f"security_level 应在 [1,5],实际 {v}" + return True, "ok" + + +def check_format_org_unit(val: Any) -> Tuple[bool, str]: + if val is None: + return True, "optional" + if not isinstance(val, str): + return False, f"期望 str,实际 {type(val).__name__}" + return True, "ok" + + +def check_format_nation(val: Any) -> Tuple[bool, str]: + return check_format_org_unit(val) + + +def check_format_history_success(val: Any) -> Tuple[bool, str]: + if val is None: + return True, "optional" + if not isinstance(val, (int, float)) or isinstance(val, bool): + return False, f"期望 float [0,1],实际 {type(val).__name__}" + f = float(val) + if f < 0 or f > 1: + return False, f"history_success 应在 [0,1],实际 {f}" + return True, "ok" + + +# ============ 内容校验(取值范围、语义) ============ + +def check_content_function_vector(val: dict) -> List[str]: + """内容校验:键是否在规范内,值是否合法""" + issues = [] + if not isinstance(val, dict): + return ["非字典类型"] + for k, v in val.items(): + if k not in FUNCTION_VECTOR_KEYS: + issues.append(f"未知键: {k}") + else: + try: + f = float(v) + if f < 0 or f > 1: + issues.append(f"{k}={f} 超出 [0,1]") + except (TypeError, ValueError): + issues.append(f"{k} 值非数字: {v}") + return issues + + +def check_content_spatial(val: dict) -> List[str]: + issues = [] + if not isinstance(val, dict): + return ["非字典类型"] + pos = val.get("position") + if pos is not None and len(pos) >= 2: + if not all(isinstance(x, (int, float)) for x in pos[:2]): + issues.append("position 含非数字") + rad = val.get("effective_radius") + if rad is not None: + try: + f = float(rad) + if f < 0: + issues.append("effective_radius 不应为负") + except (TypeError, ValueError): + issues.append("effective_radius 非数字") + return issues + + +def check_content_temporal(val: dict) -> List[str]: + issues = [] + if not isinstance(val, dict): + return ["非字典类型"] + for k in ["response_time", "cycle_time", "data_age", "time_window"]: + v = val.get(k) + if v is not None: + try: + f = float(v) + if f < 0: + issues.append(f"{k} 不应为负: {f}") + except (TypeError, ValueError): + issues.append(f"{k} 非数字: {v}") + return issues + + +def check_content_performance(val: dict) -> List[str]: + issues = [] + if not isinstance(val, dict): + return ["非字典类型"] + for k in ["core_performance", "survivability"]: + v = val.get(k) + if v is not None: + try: + f = float(v) + if f < 0 or f > 1: + issues.append(f"{k} 超出 [0,1]: {f}") + except (TypeError, ValueError): + issues.append(f"{k} 非数字: {v}") + mtbf = val.get("mtbf") + if mtbf is not None: + try: + f = float(mtbf) + if f < 0: + issues.append("mtbf 不应为负") + except (TypeError, ValueError): + issues.append("mtbf 非数字") + return issues + + +# ============ 统一校验入口 ============ + +FORMAT_CHECKERS = { + "function_vector": check_format_function_vector, + "spatial": check_format_spatial, + "temporal": check_format_temporal, + "performance": check_format_performance, + "protocol_list": check_format_protocol_list, + "format_list": check_format_format_list, + "interface_list": check_format_interface_list, + "security_level": check_format_security_level, + "org_unit": check_format_org_unit, + "nation": check_format_nation, + "history_success": check_format_history_success, +} + +CONTENT_CHECKERS = { + "function_vector": check_content_function_vector, + "spatial": check_content_spatial, + "temporal": check_content_temporal, + "performance": check_content_performance, +} + + +def validate_record( + record: dict, + target_schema_fields: Optional[List[str]] = None, +) -> Dict[str, Any]: + """ + 对单条记录进行格式与内容双重校验。 + 若 record 已包含目标 schema 字段,则直接校验; + 否则会先通过 raw_to_target_schema 转换后再校验。 + """ + target_fields = target_schema_fields or list(FORMAT_CHECKERS.keys()) + result = { + "format_errors": {}, + "content_errors": {}, + "aligned": False, + "transformed": False, + } + + # 若缺少目标字段,尝试从原始字段转换 + has_target = any(f in record for f in target_fields) + data = record + if not has_target: + data = raw_to_target_schema(record) + result["transformed"] = True + + # 格式校验 + for field in target_fields: + val = data.get(field) + if val is None and field in ["protocol_list", "format_list", "interface_list"]: + val = [] + checker = FORMAT_CHECKERS.get(field) + if checker: + ok, msg = checker(val) + else: + ok, msg = True, "no_checker" + if not ok: + result["format_errors"][field] = msg + + # 内容校验(仅对复杂类型) + for field in CONTENT_CHECKERS: + val = data.get(field) + if val is None: + continue + issues = CONTENT_CHECKERS[field](val) + if issues: + result["content_errors"][field] = issues + + result["aligned"] = ( + len(result["format_errors"]) == 0 and len(result["content_errors"]) == 0 + ) + return result + + +# ============ 原始数据 -> 目标 Schema 转换 ============ + +def _get_first_valid(row: dict, keys: List[str], cast=_clamp_0_1) -> Optional[Any]: + """从 row 中按 keys 顺序取第一个非空值并转换""" + for k in keys: + v = row.get(k) + if v is not None and (not isinstance(v, float) or v == v): + return cast(v) if cast else v + return None + + +def raw_to_target_schema(raw: dict) -> dict: + """ + 将扁平原始记录转换为符合 1125 属性规范的目标结构。 + 仅输出 xlsx 定义字段,不保留任何原始其他字段。 + """ + # TARGET_ID:节点唯一标识 + tid = raw.get("TARGET_ID") + tid = str(tid).strip() if tid is not None and str(tid).strip() else None + + out: Dict[str, Any] = {f: None for f in OUTPUT_SCHEMA_FIELDS} + out["TARGET_ID"] = tid + + # function_vector(f_CPS/f_DP/f_CC 使用固定参考值转换,其余用 _clamp_0_1) + fv = {} + _fv_mapping = RAW_TO_TARGET_MAPPING["function_vector"] + for fk, raw_keys in _fv_mapping.items(): + if fk == "f_CPS": + t = raw.get("DECISION_RESPONSE_TIME") + val = _response_time_to_cps(t) + elif fk == "f_DP": + val = _processing_to_fdp(raw) + elif fk == "f_CC": + val = _support_load_to_fcc(raw) + else: + val = _get_first_valid(raw, raw_keys, _clamp_0_1) + if val is not None: + fv[fk] = round(val, 4) + # 下游 f_relation1125/f_net1125 要求必为 dict,无推导值时用默认(避免 NoneType) + if not fv: + fv = {fk: 0.5 for fk in FUNCTION_VECTOR_KEYS} + out["function_vector"] = fv + + # spatial(支持 X/x、Y/y、position、POSITION_X/Y、LONGITUDE/LATITUDE;确保元素恒为 float) + def _safe_coord(v: Any) -> float: + if v is None or (isinstance(v, float) and v != v): + return 0.0 + try: + return round(float(v), 2) + except (TypeError, ValueError): + return 0.0 + + pos_raw = raw.get("position") or raw.get("POSITION") + if isinstance(pos_raw, (list, tuple)) and len(pos_raw) >= 2: + x, y = _safe_coord(pos_raw[0]), _safe_coord(pos_raw[1]) + else: + x = raw.get("X") or raw.get("x") or raw.get("POSITION_X") or raw.get("LONGITUDE") + y = raw.get("Y") or raw.get("y") or raw.get("POSITION_Y") or raw.get("LATITUDE") + x, y = _safe_coord(x), _safe_coord(y) + pos = [x, y] + radius = _get_first_valid(raw, RAW_TO_TARGET_MAPPING["spatial"]["effective_radius"], _safe_float) + sp = { + "position": pos, + "effective_radius": round(float(radius), 4) if radius is not None else 1.0, + } + out["spatial"] = sp + + # temporal + _temporal_defaults = {"response_time": 1.0, "cycle_time": 1.0, "data_age": 1.0, "time_window": 24.0} + temporal = {} + for tk, rks in RAW_TO_TARGET_MAPPING["temporal"].items(): + v = _get_first_valid(raw, rks, _safe_float) + if v is not None: + temporal[tk] = round(float(v), 4) + for k, default in _temporal_defaults.items(): + temporal.setdefault(k, default) + out["temporal"] = temporal + + # performance + _perf_defaults = {"core_performance": 0.5, "survivability": 0.5, "mtbf": 1.0} + perf = {} + for pk, rks in RAW_TO_TARGET_MAPPING["performance"].items(): + cast = _clamp_0_1 if pk in ["core_performance", "survivability"] else _safe_float + v = _get_first_valid(raw, rks, cast) + if v is not None: + perf[pk] = round(float(v), 4) + for k, default in _perf_defaults.items(): + perf.setdefault(k, default) + out["performance"] = perf + + # protocol_list, format_list, interface_list + for field in ["protocol_list", "format_list", "interface_list"]: + raw_key = field.upper().replace("_LIST", "") + out[field] = _ensure_list_of_strings(raw.get(raw_key, raw.get(field))) + + # security_level:下游 utils.get_security_compatibility 会做 lv_i - lv_j,不可为 None + sl = raw.get("security_level") or raw.get("SECURITY_LEVEL") + out["security_level"] = _safe_int(sl, 1, 5) if sl is not None else 3 + + # org_unit, nation + nation = _get_first_valid(raw, RAW_TO_TARGET_MAPPING["nation"], lambda v: str(v).strip() if v is not None else None) + out["nation"] = nation + org = _get_first_valid(raw, RAW_TO_TARGET_MAPPING["org_unit"], lambda v: str(v).strip() if v is not None else None) + out["org_unit"] = org + + # history_success:下游 utils.get_interaction_history 会做 (his_i + his_j)/2,不可为 None + hs = raw.get("history_success") or raw.get("HISTORY_SUCCESS") + if hs is not None: + v = _clamp_0_1(hs) + out["history_success"] = round(v, 4) if v is not None else 0.8 + else: + out["history_success"] = 0.8 + + return out + + +def align_and_validate_records( + records: List[dict], + id_key: str = "TARGET_ID", +) -> Tuple[List[dict], dict]: + """ + 对记录列表进行转换、格式与内容校验。 + 返回:(对齐后的记录列表, 统计报告) + """ + aligned = [] + report = { + "total": len(records), + "format_errors_by_field": {}, + "content_errors_by_field": {}, + "records_with_errors": 0, + "aligned_count": 0, + "transformed_count": 0, + "samples": [], + } + + for rec in records: + rid = rec.get(id_key, "?") + val_result = validate_record(rec) + aligned_rec = raw_to_target_schema(rec) + aligned.append(aligned_rec) + + if val_result["transformed"]: + report["transformed_count"] += 1 + if val_result["aligned"]: + report["aligned_count"] += 1 + else: + report["records_with_errors"] += 1 + for f, msg in val_result["format_errors"].items(): + report["format_errors_by_field"].setdefault(f, 0) + report["format_errors_by_field"][f] += 1 + for f, issues in val_result["content_errors"].items(): + report["content_errors_by_field"].setdefault(f, 0) + report["content_errors_by_field"][f] += 1 + if len(report["samples"]) < 5: + report["samples"].append({ + "id": rid, + "format_errors": val_result["format_errors"], + "content_errors": val_result["content_errors"], + }) + + return aligned, report + + +def sanitize_node_for_relation_calc(node: dict) -> dict: + """ + 写入 nodes.json 前对节点做最终净化,确保 f_relation1125/utils 中参与运算的字段无 None。 + 避免 euclidean、get_security_compatibility、get_interaction_history 等出现 NoneType 运算错误。 + """ + import copy + n = copy.deepcopy(node) + + def _safe_float(v: Any, default: float) -> float: + if v is None or (isinstance(v, float) and v != v): + return default + try: + return float(v) + except (TypeError, ValueError): + return default + + # spatial.position 必须为 [float, float] + sp = n.get("spatial") + if not isinstance(sp, dict): + sp = {} + pos = sp.get("position") + if not isinstance(pos, (list, tuple)) or len(pos) < 2: + pos = [0.0, 0.0] + else: + pos = [_safe_float(pos[0], 0.0), _safe_float(pos[1], 0.0)] + sp["position"] = pos + sp["effective_radius"] = _safe_float(sp.get("effective_radius"), 1.0) + n["spatial"] = sp + + # temporal 参与 time_window_overlap + tmp = n.get("temporal") + if not isinstance(tmp, dict): + tmp = {} + for k in ["response_time", "cycle_time", "data_age", "time_window"]: + if tmp.get(k) is None: + tmp[k] = 24.0 if k == "time_window" else 1.0 + n["temporal"] = tmp + + # security_level、history_success 参与 utils 运算 + sl = n.get("security_level") + n["security_level"] = int(_safe_float(sl, 3)) if sl is not None else 3 + if n["security_level"] < 1 or n["security_level"] > 5: + n["security_level"] = 3 + + hs = n.get("history_success") + n["history_success"] = _safe_float(hs, 0.8) + n["history_success"] = max(0.0, min(1.0, n["history_success"])) + + return n diff --git a/src/cleaner.py b/final/src/cleaner.py similarity index 70% rename from src/cleaner.py rename to final/src/cleaner.py index ad0d553..bd7867d 100644 --- a/src/cleaner.py +++ b/final/src/cleaner.py @@ -2,6 +2,10 @@ import json import numpy as np import pandas as pd from datetime import datetime +try: + from .attribute_schema import align_and_validate_records, sanitize_node_for_relation_calc +except ImportError: + from attribute_schema import align_and_validate_records, sanitize_node_for_relation_calc def _json_serializer(obj): @@ -45,7 +49,16 @@ class AdvancedDataCleaner: "fields_processed": ["COMMUNICATION_RANGE"], "total_smoothed": 0 }, - "standardization": [] + "standardization": [], + "attribute_alignment": { # 内容与格式双重对齐(基于 1125 属性需求) + "enabled": True, + "format_errors_by_field": {}, + "content_errors_by_field": {}, + "records_with_errors": 0, + "aligned_count": 0, + "transformed_count": 0, + "samples": [] + } } } @@ -141,6 +154,22 @@ class AdvancedDataCleaner: self.df["COMMUNICATION_RANGE"] = np.round(smoothed, 2) self.report["details"]["noise_reduction"]["total_smoothed"] = len(vals) + def align_attribute_schema(self): + """内容与格式双重对齐:按 1125 属性需求转换并校验""" + if self.df is None or len(self.df) == 0: + return + records = self.df.to_dict('records') + aligned, align_report = align_and_validate_records(records, id_key="TARGET_ID") + self.df = pd.DataFrame(aligned) + self.report["details"]["attribute_alignment"].update({ + "format_errors_by_field": align_report.get("format_errors_by_field", {}), + "content_errors_by_field": align_report.get("content_errors_by_field", {}), + "records_with_errors": align_report.get("records_with_errors", 0), + "aligned_count": align_report.get("aligned_count", 0), + "transformed_count": align_report.get("transformed_count", 0), + "samples": align_report.get("samples", []), + }) + def run(self): print("正在执行高级清洗...") self.load_data() @@ -148,18 +177,39 @@ class AdvancedDataCleaner: self.handle_missing_values() self.correct_outliers() self.apply_kalman_filter() - + self.align_attribute_schema() + # 最终统计 self.report["summary"]["final_records"] = len(self.df) self.report["details"]["standardization"].append("Coordinates normalized to 2 decimal places") self.report["details"]["standardization"].append("Timestamps formatted to ISO-8601") + self.report["details"]["standardization"].append("Attributes aligned to 1125 schema (format + content)") # 保存数据(确保输出目录存在) import os output_dir = os.path.dirname(self.output_file) if output_dir: os.makedirs(output_dir, exist_ok=True) - result_data = self.df.to_dict('records') + records = self.df.to_dict('records') + # 输出格式兼容 main_227 / f_relation1125:{nodes: {TARGET_ID: obj}, global_params: {mtbf_max}} + nodes_dict = {} + mtbf_values = [] + id_col = 'TARGET_ID' + for r in records: + nid = r.get(id_col) + if nid is not None: + nid = str(nid).strip() + if nid: + nodes_dict[nid] = sanitize_node_for_relation_calc(r) + perf = r.get('performance') if isinstance(r.get('performance'), dict) else {} + mtbf = perf.get('mtbf') + if mtbf is not None and (isinstance(mtbf, (int, float)) and not (isinstance(mtbf, float) and mtbf != mtbf)): + mtbf_values.append(float(mtbf)) + mtbf_max = max(mtbf_values, default=1.0) if mtbf_values else 1.0 + result_data = { + "nodes": nodes_dict, + "global_params": {"mtbf_max": round(mtbf_max, 6)}, + } with open(self.output_file, 'w', encoding='utf-8') as f: json.dump(result_data, f, ensure_ascii=False, indent=2, default=_json_serializer) @@ -172,6 +222,25 @@ class AdvancedDataCleaner: print(f"完成!报告已生成至 {self.report_file}") + def get_valid_target_ids(self) -> set: + """返回清洗后的有效 TARGET_ID 集合(用于三元组 filter_orphans)""" + if self.df is None or 'TARGET_ID' not in self.df.columns: + return set() + return set(self.df['TARGET_ID'].dropna().astype(str).str.strip().unique()) + + def get_id_to_role(self) -> dict: + """返回 TARGET_ID -> ROLE_ID 映射(用于三元组 head_type/tail_type)""" + if hasattr(self, '_id_to_role'): + return self._id_to_role + if self.df is None or 'TARGET_ID' not in self.df.columns or 'ROLE_ID' not in self.df.columns: + return {} + return dict( + zip( + self.df['TARGET_ID'].dropna().astype(str).str.strip(), + self.df['ROLE_ID'].fillna('').astype(str).str.strip(), + ) + ) + def load_config(project_root: str) -> dict: """加载 config/config.json 或 config.yaml(json 优先,便于部署时只改 json)""" import os @@ -192,7 +261,7 @@ def load_config(project_root: str) -> dict: 'source': 'json', 'json': { 'input_file': 'data/raw_data_sample.json', - 'output_file': 'data/cleaned_data_final.json', + 'output_file': 'data/nodes.json', 'report_file': 'report/detailed_cleaning_report.json', }, } diff --git a/final/src/data_loader.py b/final/src/data_loader.py new file mode 100644 index 0000000..13cff42 --- /dev/null +++ b/final/src/data_loader.py @@ -0,0 +1,614 @@ +""" +数据加载模块:支持从 JSON 文件或达梦数据库读取数据 +开发阶段使用 JSON,生产环境切换到达梦时只需修改 config 中的 source +""" +import json +import os +import uuid +from typing import Any, Dict, List, Optional, Tuple + +try: + from attribute_schema import FUNCTION_VECTOR_KEYS, raw_to_target_schema +except ImportError: + from src.attribute_schema import FUNCTION_VECTOR_KEYS, raw_to_target_schema + + +def load_from_json(file_path: str, project_root: str = None) -> list: + """从 JSON 文件加载数据""" + path = file_path + if project_root and not os.path.isabs(file_path): + path = os.path.join(project_root, file_path) + with open(path, 'r', encoding='utf-8') as f: + return json.load(f) + + +def _dm_connect(config: dict): + """创建达梦连接,返回 (conn, db_cfg)。需环境变量 DM_PASS。""" + try: + import dmPython + except ImportError as e: + raise RuntimeError( + "达梦数据库模式需要安装 dmPython。\n" + "请执行: pip install dmPython\n" + "并在有达梦客户端的环境运行(需配置 DM_HOME/LD_LIBRARY_PATH)" + ) from e + + db_cfg = config.get('db', {}) + host = os.getenv('DM_HOST', db_cfg.get('host', '127.0.0.1')) + port = int(os.getenv('DM_PORT', str(db_cfg.get('port', 9080)))) + user = os.getenv('DM_USER', db_cfg.get('user', 'SYSDBA')) + password = os.getenv('DM_PASS') + if not password: + raise ValueError( + "达梦模式需要设置环境变量 DM_PASS。\n" + "示例: export DM_PASS=你的密码" + ) + + conn = dmPython.connect( + user=user, + password=password, + server=host, + port=port, + schema=db_cfg.get('schema', 'SYSDBA'), + ) + return conn, db_cfg + + +def load_from_dm(config: dict, project_root: str = None) -> list: + """ + 从达梦数据库加载数据 + 需要安装 dmPython 及达梦客户端库,仅在 source=db 时调用 + """ + conn, db_cfg = _dm_connect(config) + + try: + cursor = conn.cursor() + query = (db_cfg.get('query') or '').strip() + table = db_cfg.get('table') + if query: + cursor.execute(query) + elif table: + schema = db_cfg.get('schema', 'SYSDBA') + cursor.execute(f'SELECT * FROM "{schema}"."{table}"') + else: + raise ValueError( + "达梦模式需配置 db.query(自定义 SQL)或 db.table。\n" + "当前达梦为规范化表,需通过 query 编写 JOIN 得到扁平化数据。" + ) + columns = [desc[0] for desc in cursor.description] + rows = cursor.fetchall() + cursor.close() + return [dict(zip(columns, row)) for row in rows] + finally: + conn.close() + + +def load_data(config: dict, project_root: str) -> Tuple[list, dict]: + """ + 根据配置加载数据,返回 (数据列表, 路径配置) + """ + source = config.get('source', 'json') + project_root = project_root or os.getcwd() + + if source == 'json': + json_cfg = config.get('json', {}) + data = load_from_json(json_cfg.get('input_file', 'data/raw_data_sample.json'), project_root) + paths = { + 'output': _resolve_path(json_cfg.get('output_file', 'data/nodes.json'), project_root), + 'report': _resolve_path(json_cfg.get('report_file', 'report/detailed_cleaning_report.json'), project_root), + } + return data, paths + elif source == 'db': + data = load_from_dm(config, project_root) + json_cfg = config.get('json', {}) + paths = { + 'output': _resolve_path(json_cfg.get('output_file', 'data/nodes.json'), project_root), + 'report': _resolve_path(json_cfg.get('report_file', 'report/detailed_cleaning_report.json'), project_root), + } + return data, paths + else: + raise ValueError(f"不支持的 source 类型: {source},应为 json 或 db") + + +def load_triplets_from_dm(config: dict, project_root: str = None) -> list: + """ + 从达梦数据库读取三元组数据(RELATION_INSTANCE 表) + 返回格式: [{"HEAD_ID": x, "RELATION_TYPE": y, "TAIL_ID": z, ...}, ...] + """ + conn, db_cfg = _dm_connect(config) + + try: + cursor = conn.cursor() + schema = db_cfg.get('schema', 'SYSDBA') + triplet_table = db_cfg.get('triplet_table', 'RELATION_INSTANCE') + query = db_cfg.get('triplet_query') + if query and query.strip(): + cursor.execute(query.strip()) + else: + cursor.execute(f'SELECT * FROM "{schema}"."{triplet_table}"') + columns = [desc[0] for desc in cursor.description] + rows = cursor.fetchall() + cursor.close() + return [dict(zip(columns, row)) for row in rows] + finally: + conn.close() + + +def _ci_key_map(d: dict) -> Dict[str, str]: + return {str(k).upper(): k for k in d.keys()} + + +def _get_ci(d: dict, key: str) -> Any: + k = _ci_key_map(d).get(str(key).upper()) + return d.get(k) if k else None + + +def _set_ci(d: dict, key: str, value: Any) -> None: + um = _ci_key_map(d) + k = um.get(str(key).upper()) + if k is None: + d[key] = value + else: + d[k] = value + + +def _table_columns(cursor, schema: str, table: str) -> List[str]: + cursor.execute(f'SELECT * FROM "{schema}"."{table}" WHERE 1=0') + return [desc[0] for desc in cursor.description] + + +def _serialize_metric_value(val: Any) -> str: + if val is None: + return "" + if isinstance(val, (dict, list)): + return json.dumps(val, ensure_ascii=False) + return str(val) + + +def _value_from_aligned_node(node: dict, attr: str) -> Any: + """从 raw_to_target_schema 输出中取 required_attrs 对应值。""" + if attr in FUNCTION_VECTOR_KEYS: + return (node.get("function_vector") or {}).get(attr) + if attr in ("position", "effective_radius"): + return (node.get("spatial") or {}).get(attr) + if attr in ("response_time", "cycle_time", "data_age", "time_window"): + return (node.get("temporal") or {}).get(attr) + if attr in ("core_performance", "survivability", "mtbf"): + return (node.get("performance") or {}).get(attr) + if attr in ("protocol_list", "format_list", "interface_list"): + return node.get(attr) + if attr in ("security_level", "org_unit", "nation", "history_success"): + return node.get(attr) + return None + + +def _fetch_reasoned_triples(cursor, config: dict, formal: dict) -> List[dict]: + db_cfg = config.get("db", {}) + schema = db_cfg.get("schema", "SYSDBA") + user_id = formal.get("user_id", "ADMIN") + task_id = formal.get("task_id", "TASK_FULL_KB") + source_sys_type = formal.get("source_sys_type", "关系推理后的体系") + raw_query = (formal.get("source_query") or "").strip() + if raw_query: + cursor.execute(raw_query) + else: + table = formal.get("triplet_table") or db_cfg.get("triplet_table", "RELATION_INSTANCE") + uc = formal.get("user_column", "USER_ID") + tc = formal.get("task_column", "TASK_ID") + sc = formal.get("sys_type_column", "SYS_TYPE") + sql = ( + f'SELECT * FROM "{schema}"."{table}" ' + f'WHERE "{uc}" = ? AND "{tc}" = ? AND "{sc}" = ?' + ) + cursor.execute(sql, [user_id, task_id, source_sys_type]) + columns = [desc[0] for desc in cursor.description] + rows = cursor.fetchall() + return [dict(zip(columns, row)) for row in rows] + + +def _validate_source_sys_type(rows: List[dict], formal: dict) -> Optional[str]: + """若存在与 source_sys_type 不一致的 SYS_TYPE,返回错误信息(硬失败)。""" + if formal.get("skip_sys_type_validation"): + return None + sc = formal.get("sys_type_column", "SYS_TYPE") + expected = formal.get("source_sys_type", "关系推理后的体系") + if not rows: + return None + vals = [_get_ci(r, sc) for r in rows] + if all(v is None for v in vals): + # 结果集中无 SYS_TYPE 列(例如仅用 source_query 投影),由 SQL 保证类型 + return None + bad_indices = [] + for i, v in enumerate(vals): + if v is None or str(v).strip() != str(expected).strip(): + bad_indices.append(i) + if bad_indices: + return f"sys_type_mismatch: expected={expected!r}, bad_row_indices={bad_indices[:20]}" + return None + + +def _entity_ids_from_triples(triples: List[dict]) -> List[str]: + ids = set() + for t in triples: + h = _get_ci(t, "HEAD_ID") or t.get("head") + tail = _get_ci(t, "TAIL_ID") or t.get("tail") + if h is not None and str(h).strip(): + ids.add(str(h).strip()) + if tail is not None and str(tail).strip(): + ids.add(str(tail).strip()) + return sorted(ids) + + +def _load_objectives_by_target( + cursor, schema: str, table: str, entity_col: str, target_ids: List[str], +) -> Dict[str, dict]: + if not target_ids: + return {} + cols = _table_columns(cursor, schema, table) + ec = None + for c in cols: + if c.upper() == entity_col.upper(): + ec = c + break + if not ec: + return {} + placeholders = ",".join(["?"] * len(target_ids)) + sql = f'SELECT * FROM "{schema}"."{table}" WHERE "{ec}" IN ({placeholders})' + cursor.execute(sql, target_ids) + out = {} + row_cols = [desc[0] for desc in cursor.description] + for row in cursor.fetchall(): + d = dict(zip(row_cols, row)) + tid = _get_ci(d, entity_col) + if tid is not None: + out[str(tid).strip()] = d + return out + + +def _load_existing_metric_keys( + cursor, schema: str, attr_table: str, entity_col: str, + metric_col: str, target_ids: List[str], +) -> Dict[str, set]: + """target_id -> set(METRIC_ID) 已有记录。""" + if not target_ids: + return {} + tcols = _table_columns(cursor, schema, attr_table) + ec = next((c for c in tcols if c.upper() == entity_col.upper()), None) + mc = next((c for c in tcols if c.upper() == metric_col.upper()), None) + if not ec or not mc: + return {} + placeholders = ",".join(["?"] * len(target_ids)) + sql = ( + f'SELECT "{ec}", "{mc}" FROM "{schema}"."{attr_table}" ' + f'WHERE "{ec}" IN ({placeholders})' + ) + cursor.execute(sql, target_ids) + out: Dict[str, set] = {} + for row in cursor.fetchall(): + tid, mid = row[0], row[1] + if tid is None or mid is None: + continue + tid_s = str(tid).strip() + out.setdefault(tid_s, set()).add(str(mid).strip()) + return out + + +def _insert_generated_metrics( + cursor, + schema: str, + attr_table: str, + table_cols: List[str], + entity_col: str, + metric_col: str, + value_col: str, + target_id: str, + metric_id: str, + value_str: str, + static_extra: Optional[dict], +) -> bool: + """插入一条指标行;仅写入表中存在的列。未写入任何列时返回 False。""" + um = {c.upper(): c for c in table_cols} + row: Dict[str, Any] = {} + if entity_col.upper() in um: + row[um[entity_col.upper()]] = target_id + if metric_col.upper() in um: + row[um[metric_col.upper()]] = metric_id + if value_col.upper() in um: + row[um[value_col.upper()]] = value_str + if static_extra: + for k, v in static_extra.items(): + ku = str(k).upper() + if ku in um: + row[um[ku]] = v + cols = list(row.keys()) + if entity_col.upper() not in um or metric_col.upper() not in um: + return False + if not cols: + return False + quoted = ",".join(f'"{c}"' for c in cols) + ph = ",".join(["?"] * len(cols)) + sql = f'INSERT INTO "{schema}"."{attr_table}" ({quoted}) VALUES ({ph})' + cursor.execute(sql, [row[c] for c in cols]) + return True + + +def _build_formal_triple_rows( + source_rows: List[dict], + formal: dict, + batch_id: str, + result_table_cols: List[str], +) -> Tuple[List[dict], int]: + """复制源行,写入 target_sys_type 与 batch_id;丢弃无效核字段。""" + sys_col = formal.get("sys_type_column", "SYS_TYPE") + target_sys = formal.get("target_sys_type", "形式化后的体系") + pk = formal.get("triplet_primary_key") or formal.get("triplet_pk") + omit_pk = formal.get("triplet_omit_primary_key_on_insert", True) + batch_col = formal.get("triple_batch_column", "BATCH_ID") + colset_upper = {c.upper() for c in result_table_cols} + out_rows = [] + skipped = 0 + for r in source_rows: + h = _get_ci(r, "HEAD_ID") or r.get("head") + tail = _get_ci(r, "TAIL_ID") or r.get("tail") + rel = _get_ci(r, "RELATION_TYPE") or r.get("relation") + if not h or not tail or not rel: + skipped += 1 + continue + new_r = dict(r) + _set_ci(new_r, sys_col, target_sys) + if batch_col.upper() in colset_upper: + _set_ci(new_r, batch_col, batch_id) + if omit_pk and pk: + kmap = _ci_key_map(new_r) + pk_actual = kmap.get(str(pk).upper()) + if pk_actual and pk_actual in new_r: + del new_r[pk_actual] + filtered = {} + for k, v in new_r.items(): + if k in result_table_cols: + filtered[k] = v + out_rows.append(filtered) + return out_rows, skipped + + +def _insert_rows_executemany( + cursor, schema: str, table: str, rows: List[dict], +) -> int: + if not rows: + return 0 + all_keys = [] + for r in rows: + for k in r: + if k not in all_keys: + all_keys.append(k) + quoted = ",".join(f'"{k}"' for k in all_keys) + ph = ",".join(["?"] * len(all_keys)) + sql = f'INSERT INTO "{schema}"."{table}" ({quoted}) VALUES ({ph})' + params = [tuple(r.get(k) for k in all_keys) for r in rows] + cursor.executemany(sql, params) + return len(rows) + + +def _insert_res_formal_analysis( + cursor, + schema: str, + analysis_table: str, + batch_id: str, + formal: dict, + stats: dict, + detail_obj: dict, +) -> bool: + cols = _table_columns(cursor, schema, analysis_table) + cu = {c.upper(): c for c in cols} + row: Dict[str, Any] = {} + mapping = [ + ("BATCH_ID", batch_id), + ("USER_ID", formal.get("user_id", "ADMIN")), + ("TASK_ID", formal.get("task_id", "TASK_FULL_KB")), + ("SOURCE_SYS_TYPE", formal.get("source_sys_type", "")), + ("TARGET_SYS_TYPE", formal.get("target_sys_type", "")), + ] + for key, val in mapping: + if key in cu: + row[cu[key]] = val + detail_json = json.dumps(detail_obj, ensure_ascii=False) + detail_candidates = ( + "DETAIL_JSON", + "DETAIL", + "ANALYSIS_JSON", + "CONTENT", + "RULE_DETAIL", + "STATS_JSON", + "RES_FORMAL_ANALYSIS", + ) + detail_key_col = None + for cand in detail_candidates: + if cand in cu: + detail_key_col = cu[cand] + break + if not detail_key_col: + for c in cols: + u = c.upper() + if any( + token in u + for token in ( + "DETAIL", + "JSON", + "CONTENT", + "RULE", + "TEXT", + "MEMO", + "DESC", + "REMARK", + "INFO", + "ANALYSIS", + ) + ): + detail_key_col = c + break + if detail_key_col: + row[detail_key_col] = detail_json + static = formal.get("analysis_static_columns") or formal.get("analysis_static") or {} + for k, v in static.items(): + if str(k).upper() in cu: + row[cu[str(k).upper()]] = v + insert_cols = formal.get("analysis_insert_columns") + if insert_cols: + use_cols = [c for c in insert_cols if c in cols] + if not use_cols: + return False + vals = [row.get(c) for c in use_cols] + ph = ",".join(["?"] * len(use_cols)) + qc = ",".join(f'"{c}"' for c in use_cols) + sql = f'INSERT INTO "{schema}"."{analysis_table}" ({qc}) VALUES ({ph})' + cursor.execute(sql, vals) + return True + if not row: + return False + quoted = ",".join(f'"{c}"' for c in row.keys()) + ph = ",".join(["?"] * len(row)) + sql = f'INSERT INTO "{schema}"."{analysis_table}" ({quoted}) VALUES ({ph})' + cursor.execute(sql, list(row.values())) + return True + + +def run_formalization_pipeline(config: dict) -> dict: + """ + 模块 1.3:读取「关系推理后的体系」三元组,补齐实体属性并写回, + 将形式化结果作为新记录写入 formal_result_table,并写入 RES_FORMAL_ANALYSIS。 + 需在 config 中 formal.enabled=true 且 source=db;达梦密码 DM_PASS。 + """ + formal = config.get("formal") or {} + if not formal.get("enabled", False): + return {"ok": False, "reason": "formal.disabled", "batch_id": None, "stats": {}} + if config.get("source", "json") != "db": + return {"ok": False, "reason": "source_not_db", "batch_id": None, "stats": {}} + + batch_id = str(uuid.uuid4()) + stats: Dict[str, Any] = { + "total_triples": 0, + "inserted_formal_count": 0, + "generated_attrs_count": 0, + "skipped_triples": 0, + "analysis_written": False, + } + + conn = None + try: + conn, db_cfg = _dm_connect(config) + except (RuntimeError, ValueError) as e: + return {"ok": False, "reason": str(e), "batch_id": None, "stats": stats} + + schema = db_cfg.get("schema", "SYSDBA") + user_id = formal.get("user_id", "ADMIN") + task_id = formal.get("task_id", "TASK_FULL_KB") + source_sys_type = formal.get("source_sys_type", "关系推理后的体系") + target_sys_type = formal.get("target_sys_type", "形式化后的体系") + attr_table = formal.get("attribute_table", "METRIC_VALUE_INSTANCE") + result_table = formal.get("formal_result_table", "RELATION_INSTANCE") + analysis_table = formal.get("analysis_table", "RES_FORMAL_ANALYSIS") + entity_col = formal.get("entity_id_column", "TARGET_ID") + metric_col = formal.get("metric_id_column", "METRIC_ID") + value_col = formal.get("metric_value_column", "METRIC_VALUE") + objective_table = formal.get("objective_table") or db_cfg.get("table", "OBJECTIVE_INSTANCE") + required_attrs: List[str] = list(formal.get("required_attrs") or []) + + try: + if hasattr(conn, "autocommit"): + conn.autocommit = False + cursor = conn.cursor() + + triples = _fetch_reasoned_triples(cursor, config, formal) + stats["total_triples"] = len(triples) + err = _validate_source_sys_type(triples, formal) + if err: + conn.rollback() + return {"ok": False, "reason": err, "batch_id": batch_id, "stats": stats} + + eids = _entity_ids_from_triples(triples) + objectives = _load_objectives_by_target( + cursor, schema, objective_table, entity_col, eids, + ) + existing_metrics = _load_existing_metric_keys( + cursor, schema, attr_table, entity_col, metric_col, eids, + ) + mvi_cols = _table_columns(cursor, schema, attr_table) + static_metric = formal.get("metric_insert_static") or {} + + for tid in eids: + raw = dict(objectives.get(tid, {})) + raw["TARGET_ID"] = tid + aligned = raw_to_target_schema(raw) + have = existing_metrics.get(tid, set()) + for attr in required_attrs: + if attr in have: + continue + val = _value_from_aligned_node(aligned, attr) + vstr = _serialize_metric_value(val) + if _insert_generated_metrics( + cursor, + schema, + attr_table, + mvi_cols, + entity_col, + metric_col, + value_col, + tid, + attr, + vstr, + static_metric, + ): + stats["generated_attrs_count"] += 1 + have.add(attr) + + result_cols = _table_columns(cursor, schema, result_table) + formal_rows, skipped = _build_formal_triple_rows( + triples, formal, batch_id, result_cols, + ) + stats["skipped_triples"] = skipped + if formal_rows: + _insert_rows_executemany(cursor, schema, result_table, formal_rows) + stats["inserted_formal_count"] = len(formal_rows) + + detail = { + "batch_id": batch_id, + "user_id": user_id, + "task_id": task_id, + "source_sys_type": source_sys_type, + "target_sys_type": target_sys_type, + "stats": stats, + "rules": formal.get("rules_summary") + or "结构校验+属性对齐(raw_to_target_schema)+sys_type切换为形式化后的体系", + } + stats["analysis_written"] = _insert_res_formal_analysis( + cursor, schema, analysis_table, batch_id, formal, stats, detail, + ) + if not stats["analysis_written"]: + raise RuntimeError( + "RES_FORMAL_ANALYSIS 未写入:表无可匹配列。请配置 formal.analysis_insert_columns " + "或在表中提供 BATCH_ID/USER_ID/TASK_ID 及 DETAIL/JSON 类文本列。" + ) + + conn.commit() + cursor.close() + return {"ok": True, "reason": None, "batch_id": batch_id, "stats": stats} + except Exception as e: + if conn is not None: + try: + conn.rollback() + except Exception: + pass + stats.setdefault("error", str(e)) + return {"ok": False, "reason": str(e), "batch_id": batch_id, "stats": stats} + finally: + if conn is not None: + try: + conn.close() + except Exception: + pass + + +def _resolve_path(path: str, project_root: str) -> str: + if os.path.isabs(path): + return path + return os.path.join(project_root, path) diff --git a/final/src/main_227.py b/final/src/main_227.py new file mode 100644 index 0000000..13644fc --- /dev/null +++ b/final/src/main_227.py @@ -0,0 +1,666 @@ +# main.py +import numpy as np +import json, copy +import pandas as pd +from typing import Dict, List +import sys +from pathlib import Path +sys.path.append(str(Path(__file__).parent.parent)) +from scripts.f_relation1125 import RelationCalculator +from scripts.f_net1125 import TaskNetworkEvaluator + +# ========== 新增:导入 cleaner ========== +sys.path.append(str(Path(__file__).parent)) # 添加 src 目录到路径 +from cleaner import load_config, AdvancedDataCleaner +from data_loader import load_data as load_data_source, run_formalization_pipeline + +# -------------- 默认配置(与原来硬编码保持一致) -------------- +DEFAULT_CFG = { + "W_REL": { # 5 类关系权重 + "IS": {"w_f": 0.35, "w_s": 0.25, "w_t": 0.15, "w_p": 0.15, "w_i": 0.10}, + "CC": {"w_f": 0.30, "w_s": 0.20, "w_t": 0.20, "w_p": 0.20, "w_i": 0.10}, + "SF": {"w_f": 0.30, "w_s": 0.20, "w_t": 0.25, "w_p": 0.15, "w_i": 0.10}, + "PD": {"w_f": 0.25, "w_s": 0.35, "w_t": 0.15, "w_p": 0.15, "w_i": 0.10}, + "CO": {"w_f": 0.30, "w_s": 0.20, "w_t": 0.20, "w_p": 0.20, "w_i": 0.10}, + }, + "W_NET": { # 5 类任务网络权重 + "defense": {"w1": 0.30, "w2": 0.25, "w3": 0.20, "w4": 0.15, "w5": 0.10}, + "fire": {"w1": 0.35, "w2": 0.25, "w3": 0.20, "w4": 0.10, "w5": 0.10}, + "logistics":{"w1": 0.30, "w2": 0.25, "w3": 0.20, "w4": 0.15, "w5": 0.10}, + "medical": {"w1": 0.35, "w2": 0.25, "w3": 0.20, "w4": 0.10, "w5": 0.10}, + "evacuation":{"w1":0.30, "w2": 0.25, "w3": 0.20, "w4": 0.15, "w5": 0.10}, + }, + "LAMBDA": {"IS": 100, "CC": 50, "SF": 80, "PD": 30, "CO": 60}, + "TIME": {"alpha": 0.5, "beta": 0.6, "gamma": 0.4}, + "PD_SGM": 20, + "THRESHOLD": 0.15 # 关系过滤阈值 +} + + +def var_desc(): + return { + # 共用 + "dij": "节点 i 与 j 之间的欧氏距离", + "Ri": "节点 i 的有效作用半径", + "Rmatch(i,j)": "两节点作用范围重叠度", + "s_area": "作战区域关联度(同区 1.0 / 邻区 0.7 / 异区 0.3)", + "stdij": "接口标准兼容性(0-1)", + "rij": "任务角色匹配度(0-1)", + "t_resp": "节点响应时间得分 exp(-α·T_resp)", + "t_cycle": "节点处理周期得分 exp(-β·T_cycle)", + "fresh_i": "数据新鲜度 exp(-γ·数据年龄)", + "wij": "时间窗口重叠比例", + "p_core": "节点核心性能", + "p_rel": "节点可靠性 MTBF/MTBF_max", + "p_surv": "节点生存性", + "protij": "协议兼容性", + "fmtij": "数据格式兼容性", + "secij": "安全等级兼容性", + "orgij": "组织隶属关联度", + "histij": "历史交互成功率", + # 关系专用 + "M_F^IS": "情报保障功能匹配项", + "M_S^IS": "情报保障空间匹配项", + "M_T^IS": "情报保障时间匹配项", + "M_P^IS": "情报保障性能匹配项", + "M_I^IS": "情报保障交互匹配项", + "λ_IS": "情报特征距离(λ_IS=100 km)", + # 网络专用 + "N_IC": "信息对抗节点数量", + "∑f_IC/N_IC": "信息对抗节点平均能力", + "∑L_IS/N_IS": "情报保障关系平均强度", + "∑t_resp/N": "系统平均响应速度", + "∑L_CC/N_CC": "指挥控制关系平均强度", + "∑f_CS/N_CS": "协同打击节点平均能力", + "∑f_IA/N_IA": "信息获取节点平均能力", + "∑L_CO/N_CO": "协同作战关系平均强度", + "∑p_core·f_CS/N_CS": "打击节点性能加权能力", + "∑f_CPS/N_CPS": "综合保障节点平均能力", + "∑f_DP/N_DP": "部署平台节点平均能力", + "∑L_PD/N_PD": "平台部署关系平均强度", + "∑p_rel/N": "系统平均可靠性", + "∑f_IT/N_IT": "信息传输节点平均能力", + "∑L_SF/N_SF": "状态反馈关系平均强度", + "∑fresh_i/N": "系统平均数据新鲜度", + "α1...α5": "综合防御权重 [0.30,0.25,0.20,0.15,0.10]", + "β1...β5": "火力打击权重 [0.35,0.25,0.20,0.10,0.10]", + "γ1...γ5": "后勤保障权重 [0.30,0.25,0.20,0.15,0.10]", + "δ1...δ5": "医疗救援权重 [0.35,0.25,0.20,0.10,0.10]", + "ε1...ε5": "紧急疏散权重 [0.30,0.25,0.20,0.15,0.10]", + } + + +def load_data(project_root=None): + """加载节点和三联数据,路径从配置读取(兼容 run_all 输出)""" + if project_root is None: + project_root = Path(__file__).resolve().parent.parent + project_root = Path(project_root) + cfg = load_config(str(project_root)) + eval_cfg = cfg.get("eval", {}) + json_cfg = cfg.get("json", {}) + triplet_cfg = cfg.get("triplet", {}) + + # 节点文件:优先 eval.nodes_file,否则 json.output_file + nodes_file = eval_cfg.get("nodes_file") or json_cfg.get("output_file", "data/nodes.json") + nodes_path = project_root / nodes_file if not Path(nodes_file).is_absolute() else Path(nodes_file) + with open(nodes_path, 'r', encoding='utf-8') as f: + nodes_data = json.load(f) + + # 三元组文件:eval.triples_file,不存在则用 triplet.output_file + triples_file = eval_cfg.get("triples_file", "data/triples.json") + triples_path = project_root / triples_file if not Path(triples_file).is_absolute() else Path(triples_file) + if not triples_path.exists(): + triples_path = project_root / triplet_cfg.get("output_file", "data/triples.json") + with open(triples_path, 'r', encoding='utf-8') as f: + triples_raw = json.load(f) + # 兼容 list 格式(run_all 输出的 triples.json) + triples_data = triples_raw if isinstance(triples_raw, dict) and "triples" in triples_raw else {"triples": triples_raw if isinstance(triples_raw, list) else []} + + return nodes_data, triples_data + + +def calculate_and_filter_relations(nodes_data: Dict, triples_data: Dict, threshold, cfg): + """ + 计算所有三联关系的关系强度,并过滤强度大于阈值的边 + + 返回: + - filtered_relations: 过滤后的关系字典 + - filtered_triples: 过滤后的三元组列表(保持原始结构) + - relation_stats: 关系统计信息 + """ + print("开始计算关系强度并过滤...") + + # 初始化关系计算器 + + calculator = RelationCalculator(nodes_data, cfg) # 改造见下 + # 关系类型映射(中文 -> 英文缩写) + relation_mapping = { + "情报保障": "IS", + "指挥控制": "CC", + "状态反馈": "SF", + "平台部署": "PD", + "协同作战": "CO" + } + + all_relations = {} + filtered_relations = {} + filtered_triples = [] + + valid_triples = 0 + skipped_triples = 0 + passed_triples = 0 + + for triple in triples_data["triples"]: + head = triple["head"] + tail = triple["tail"] + relation_ch = triple["relation"] + + # 检查节点是否存在 + if head not in nodes_data["nodes"] or tail not in nodes_data["nodes"]: + print(f"警告: 节点不存在 - 头: {head}, 尾: {tail},跳过此三元组") + skipped_triples += 1 + continue + + # 映射关系类型 + relation_en = relation_mapping.get(relation_ch) + if not relation_en: + print(f"警告: 未知关系类型 '{relation_ch}',跳过此三元组") + skipped_triples += 1 + continue + + try: + # 根据关系类型调用对应的计算方法 + if relation_en == "IS": + strength = calculator.calculate_IS_relation(head, tail) + elif relation_en == "CC": + strength = calculator.calculate_CC_relation(head, tail) + elif relation_en == "SF": + strength = calculator.calculate_SF_relation(head, tail) + elif relation_en == "PD": + strength = calculator.calculate_PD_relation(head, tail) + elif relation_en == "CO": + strength = calculator.calculate_CO_relation(head, tail) + else: + print(f"警告: 未实现的关系类型 '{relation_en}',跳过此三元组") + skipped_triples += 1 + continue + + # 存储所有关系强度(用于统计) + all_relations[(relation_en, head, tail)] = strength + valid_triples += 1 + + # 过滤:只保留强度大于阈值的关系 + if strength > threshold: + filtered_relations[(relation_en, head, tail)] = strength + # 创建过滤后的三元组(保持原始结构,添加强度字段) + filtered_triple = triple.copy() + filtered_triple["strength"] = float(strength) # 转换为Python float类型 + filtered_triples.append(filtered_triple) + passed_triples += 1 + + if valid_triples % 10 == 0: # 每10个关系打印一次进度 + print(f"已计算 {valid_triples} 个关系,通过 {passed_triples} 个...") + + except Exception as e: + print(f"错误: 计算关系失败 - 头: {head}, 尾: {tail}, 关系: {relation_en}, 错误: {e}") + skipped_triples += 1 + # 1. 先按类型细分 + type_detail = {} + for (rel, _, _), val in all_relations.items(): + type_detail.setdefault(rel, {"all": 0, "pass": 0}) + type_detail[rel]["all"] += 1 + # if val > threshold: + # type_detail[rel]["pass"] += 1 + # 新增:按类型收集被过滤的关系 + filtered_out = {} # rel -> [(head, tail, strength), ...] + for (rel, head, tail), val in all_relations.items(): + if val <= threshold: + filtered_out.setdefault(rel, []).append((head, tail, val)) + + # 2. 再打包大字典 + relation_stats = { + "total_triples": len(triples_data["triples"]), + "valid_triples": valid_triples, + "skipped_triples": skipped_triples, + "passed_triples": passed_triples, + "pass_rate": passed_triples / valid_triples if valid_triples else 0, + "threshold": threshold, + "filtered_out":filtered_out, + "type_detail": { + # rel: {"all": d["all"], "pass": d["pass"], "rate": d["pass"] / d["all"] if d["all"] else 0.} + rel: {"all": d["all"]} + for rel, d in type_detail.items() + } + } + + print(f"关系强度计算和过滤完成!") + print(f"总三元组: {relation_stats['total_triples']}, 有效计算: {valid_triples}, 跳过: {skipped_triples}") + print(f"通过过滤(> {threshold}): {passed_triples}, 通过率: {relation_stats['pass_rate']:.1%}") + + return filtered_relations, filtered_triples, relation_stats, all_relations + + +def evaluate_task_networks(nodes_data, relations, cfg): + """ + 评估所有任务网络效能 + """ + print("\n开始评估任务网络效能...") + + # 初始化网络评估器 + evaluator = TaskNetworkEvaluator(nodes_data["nodes"], relations, weights=cfg["W_NET"]) + + # 评估所有任务网络 + results = evaluator.eval_all() + + print("任务网络效能评估完成!") + return results + + +def generate_evaluation_report(relation_stats: Dict, network_results: Dict, + filtered_relations: Dict, all_relations: Dict, + threshold: float, cfg) -> str: + """ + 生成详细的评价报告 + """ + report = [] + report.append("=" * 60) + report.append("网络关系与效能评价报告") + report.append("=" * 60) + report.append("") + + # 1. 基本信息 + report.append("1. 基本信息") + report.append("-" * 40) + report.append(f"过滤阈值: {threshold} 【关系强度阈值】") + report.append(f"总三元组数量: {relation_stats['total_triples']}") + line = " ".join(f"{rel}={d['all']}" for rel, d in relation_stats["type_detail"].items()) + report.append(f"分别有:{line}") + report.append(f"有效计算三元组: {relation_stats['valid_triples']}") + report.append(f"跳过三元组: {relation_stats['skipped_triples']}") + report.append(f"通过过滤三元组: {relation_stats['passed_triples']}") + report.append(f"通过率: {relation_stats['pass_rate']:.1%}") + report.append("") + + # 添加边关系计算公式和说明 + report.append("2. 计算公式") + report.append("边关系计算公式") + report.append("-" * 50) + rel_cn = {"IS": "情报保障", "CC": "指挥控制", "SF": "状态反馈", "PD": "平台部署", "CO": "协同作战"} + desc = var_desc() + for rel in ["IS", "CC", "SF", "PD", "CO"]: + report.append( + f"{rel_cn[rel]}关系 L_{rel}(i,j) = w_f·M_F^{rel} + w_s·M_S^{rel} + w_t·M_T^{rel} + w_p·M_P^{rel} + w_i·M_I^{rel}") + report.append("【符号说明】") + for sym, exp in desc.items(): + if sym.startswith(("M_F^", "M_S^", "M_T^", "M_P^", "M_I^")): + report.append(f" {sym:<12} {exp}") + report.append("") + + + + report.append("任务网络效能计算公式") + report.append("-" * 50) + task_desc = { + "defense": "综合防御 P_defense = α1·(∑f_IC/N_IC) + α2·(∑f_IA/N_IA) + α3·(∑L_IS/N_IS) + α4·(∑t_resp/N) + α5·(∑L_CC/N_CC)", + "fire": "火力打击 P_fire = β1·(∑f_CS/N_CS) + β2·(∑f_IA/N_IA) + β3·(∑L_CO/N_CO) + β4·(∑p_core·f_CS/N_CS) + β5·(∑L_IS/N_IS)", + "logistics": "后勤保障 P_logistics = γ1·(∑f_CPS/N_CPS) + γ2·(∑f_DP/N_DP) + γ3·(∑L_PD/N_PD) + γ4·(∑p_rel/N) + γ5·(∑f_IT/N_IT)", + "medical": "医疗救援 P_medical = δ1·(∑f_CPS/N_CPS) + δ2·(∑t_resp/N) + δ3·(∑f_IT/N_IT) + δ4·(∑L_SF/N_SF) + δ5·(∑fresh_i/N)", + "evacuation": "紧急疏散 P_evacuation = ε1·(∑f_CC/N_CC) + ε2·(∑f_IT/N_IT) + ε3·(∑L_CC/N_CC) + ε4·(∑f_CPS/N_CPS) + ε5·(∑t_resp/N)" + } + for task, form in task_desc.items(): + report.append(form) + report.append("【符号说明】") + for sym, exp in desc.items(): + if any(sym.startswith(x) for x in ["N_", "∑", "α", "β", "γ", "δ", "ε"]): + report.append(f" {sym:<18} {exp}") + report.append("") + + # 2. 按关系类型统计 + report.append("3. 关系类型统计") + report.append("-" * 40) + + relation_type_stats = {} + for (rel_type, head, tail), strength in all_relations.items(): + if rel_type not in relation_type_stats: + relation_type_stats[rel_type] = {"all": [], "filtered": []} + relation_type_stats[rel_type]["all"].append(strength) + + if strength > threshold: + relation_type_stats[rel_type]["filtered"].append(strength) + + for rel_type in sorted(relation_type_stats.keys()): + stats = relation_type_stats[rel_type] + all_count = len(stats["all"]) + filtered_count = len(stats["filtered"]) + pass_rate = filtered_count / all_count if all_count > 0 else 0 + + report.append(f"{rel_type}关系:") + report.append(f" 总数: {all_count}, 通过: {filtered_count}, 通过率: {pass_rate:.1%}") + if stats["all"]: + report.append(f" 平均强度: {np.mean(stats['all']):.3f}") + if stats["filtered"]: + report.append(f" 过滤后平均强度: {np.mean(stats['filtered']):.3f}") + report.append("【被过滤掉的关系明细】") + report.append("-" * 40) + for rel, lst in relation_stats["filtered_out"].items(): + if not lst: + continue + report.append(f"{rel} 关系(强度 ≤ {threshold}):") + for h, t, v in lst: + report.append(f" {h} → {t} 强度={v:.3f}") + report.append("") # 空行隔开 + + # 1. 取任务得分(排除 dimensions) + task_scores = {task: score for task, score in network_results.items() if isinstance(score, float)} + total = sum(task_scores.values()) or 1.0 # 防 0 + + # 2. 归一化 → 百分比 + task_pct = {task: (sc / total) * 100 for task, sc in task_scores.items()} + + # 3. 输出 + report.append("4. 所属任务网络评估") + report.append("-" * 40) + task_name = { + "defense": "综合防御", + "fire": "火力打击", + "logistics": "后勤保障", + "medical": "医疗救援", + "evacuation": "紧急疏散" + } + # 一行输出所有任务网络百分比 + line = " ".join(f"{task_name[task]} {pct:.1f}%" for task, pct in task_pct.items()) + report.append("任务网络概率:" + line) + # 4. 最可能任务 + max_task = max(task_pct, key=task_pct.get) + report.append(f"最有可能的任务网络:{task_name[max_task]} 可能性为:{task_pct[max_task]:.1f} %") + + # 添加最终网络的五个维度评价 + report.append(f"5. 最终{task_name[max_task]}任务网络的五个维度评价") + dimensions = network_results.get("dimensions", {}) + reference_value = 0.6 # 参考值 + + # 功能维度 + report.append("功能维度 (Function):") + report.append(f"功能维度反映了网络中节点的功能匹配程度。得分: {dimensions.get('function', 0):.3f}") + if dimensions.get('function', 0) > reference_value: + report.append("高于参考值,表示节点在功能上高度互补,能够有效协同工作。") + else: + report.append("低于参考值,表示节点在功能上匹配程度较低,协同工作能力有待提升。") + + # 边关系维度 + report.append("空间系维度 (Relationship):") + report.append(f"空间维度反映了节点之间的连接强度。得分: {dimensions.get('relationship', 0):.3f}") + if dimensions.get('relationship', 0) > reference_value: + report.append("高于参考值,表示节点之间的连接紧密,信息传递高效。") + else: + report.append("低于参考值,表示节点之间的连接较弱,信息传递效率较低。") + + # 性能维度 + report.append("性能维度 (Performance):") + report.append(f"性能维度反映了节点的性能指标,如响应时间和可靠性。得分: {dimensions.get('performance', 0):.3f}") + if dimensions.get('performance', 0) > reference_value: + report.append("高于参考值,表示节点在性能上表现出色,能够稳定运行。") + else: + report.append("低于参考值,表示节点在性能上存在不足,稳定性有待提高。") + + # 时间维度 + report.append("时间维度 (Temporal):") + report.append(f"时间维度反映了节点的时间同步性和响应能力。得分: {dimensions.get('temporal', 0):.3f}") + if dimensions.get('temporal', 0) > reference_value: + report.append("高于参考值,表示节点在时间上高度同步,能够快速响应。") + else: + report.append("低于参考值,表示节点在时间同步性上存在偏差,响应速度较慢。") + + # 交互维度 + report.append("交互维度 (Interaction):") + report.append(f"交互维度反映了节点之间的协议、格式和安全兼容性。得分: {dimensions.get('interaction', 0):.3f}") + if dimensions.get('interaction', 0) > reference_value: + report.append("高于参考值,表示节点在交互上高度兼容,能够安全通信。") + else: + report.append("低于参考值,表示节点在交互上存在兼容性问题,通信安全性较低。") + + return "\n".join(report) + + +def save_filtered_triples(filtered_triples: List[Dict], filename: str = "filtered_triples.json"): + """ + 保存过滤后的三元组到JSON文件 + """ + project_root = Path(__file__).parent.parent # src -> 227 + output_path = project_root / "results" / filename + + output_data = {"triples": filtered_triples} + + with open(output_path, 'w', encoding='utf-8') as f: + json.dump(output_data, f, indent=2, ensure_ascii=False) + + print(f"过滤后的三元组已保存到 {filename}") + + +def save_triples_and_task_probs(filtered_triples: list, + network_results: dict, + excel_name: str = "triples.xlsx", + csv_name: str = "triples.csv") -> None: + """ + 保存过滤后的三元组(csv + Excel 表1)+ + 归一化任务网络概率(Excel 表2) + """ + # 1. 三元组 DataFrame(含 head_type / tail_type) + triple_df = pd.DataFrame([ + { + "head": t["head"], + "head_type": t.get("head_type", ""), + "relation": t["relation"], + "tail": t["tail"], + "tail_type": t.get("tail_type", ""), + "strength": t["strength"] + } + for t in filtered_triples + ]) + + # 2. 任务网络概率 DataFrame + task_scores = {task: score for task, score in network_results.items() if isinstance(score, float)} + total = sum(task_scores.values()) or 1.0 + task_pct = {task: (sc / total) * 100 for task, sc in task_scores.items()} + + task_map = { + "defense": "1-综合防御任务网络", + "fire": "2-火力打击任务网络", + "logistics": "3-后勤保障任务网络", + "medical": "4-医疗救援任务网络", + "evacuation": "5-紧急疏散任务网络" + } + prob_df = pd.DataFrame([ + {"id": int(task_map[task].split('-')[0]), + "任务": task_map[task].split('-')[1], + "概率%": f"{pct:.1f}"} + for task, pct in task_pct.items() + ]) + + # 3. 写文件 + project_root = Path(__file__).parent.parent # src -> 227 + output_path_csv = project_root / "results" / csv_name + triple_df.to_csv(output_path_csv, index=False, encoding='utf-8-sig') + + output_path = project_root / "results" / excel_name + + with pd.ExcelWriter(output_path, engine='openpyxl') as writer: + triple_df.to_excel(writer, sheet_name='triples', index=False) + prob_df.to_excel(writer, sheet_name='TaskProbs', index=False) + + print(f"已生成:{csv_name} | {excel_name}(含 TaskProbs 页)") + + +def save_evaluation_report(report_content: str, filename: str = "evaluation_report.txt"): + """ + 保存评价报告到TXT文件 + """ + project_root = Path(__file__).parent.parent # src -> 227 + output_path = project_root / "results" / filename + + with open(output_path, 'w', encoding='utf-8') as f: + f.write(report_content) + + print(f"评价报告已保存到 {filename}") + + +def main(): + """ + 主函数:整合所有计算流程 + """ + """运行时交互版主函数""" + import os + from data_loader import load_data as load_data_source + + script_dir = os.path.dirname(os.path.abspath(__file__)) + project_root = os.path.dirname(script_dir) + + config = load_config(project_root) + source = config.get('source', 'json') + print(f"数据源模式: {source}") + + try: + data, paths = load_data_source(config, project_root) + except (FileNotFoundError, ValueError) as e: + print(f"错误:{e}") + exit(1) + + os.makedirs(os.path.dirname(paths['report']), exist_ok=True) + + cleaner = AdvancedDataCleaner( + output_file=paths['output'], + report_file=paths['report'], + data=data, + ) + cleaner.run() + + formal_cfg = config.get("formal", {}) + if source == "db" and formal_cfg.get("enabled", False): + print("\n=== 模块1.3:形式化入库流程 ===") + try: + formal_result = run_formalization_pipeline(config) + if formal_result.get("ok"): + print(f"形式化批次: {formal_result.get('batch_id')}") + print(f"形式化统计: {formal_result.get('stats', {})}") + else: + print(f"形式化流程跳过: {formal_result.get('reason', 'unknown')}") + except Exception as e: + print(f"形式化流程执行失败: {e}") + raise + + + print("=== 网络关系与效能评估(交互填参版) ===") + + # 1. 加载默认配置 + cfg = copy.deepcopy(DEFAULT_CFG) + + # 交互式逐项覆盖 + def ask_one_weight(prompt: str, default: float): + """只问一个权重,回车=default""" + while True: + try: + v = input(f"{prompt} (默认={default}):").strip() + return default if v == "" else float(v) + except ValueError: + print("请输入 0-1 之间的数字!") + + def ask_one_int(prompt: str, default: int): + """问整数距离""" + while True: + try: + v = input(f"{prompt} (默认={default} km):").strip() + return default if v == "" else int(v) + except ValueError: + print("请输入整数!") + + def ask_one_float(prompt: str, default: float): + """问时间衰减系数""" + while True: + try: + v = input(f"{prompt} (默认={default}):").strip() + return default if v == "" else float(v) + except ValueError: + print("请输入数字!") + + # print("\n========== ① 关系权重 (0-1) ==========") + # rels = ["IS", "CC", "SF", "PD", "CO"] + # rel_keys = ["w_f", "w_s", "w_t", "w_p", "w_i"] + # rel_names = ["功能(w_f)", "空间(w_s)", "时间(w_t)", "性能(w_p)", "交互(w_i)"] + # for rel in ["IS", "CC", "SF", "PD", "CO"]: + # print(f"\n-- {rel} 关系 --w_f/w_s/w_t/w_p/w_i") + # for k, name in zip(rel_keys, rel_names): + # old = cfg["W_REL"][rel][k] + # cfg["W_REL"][rel][k] = ask_one_weight(name, old) + # + # print("\n========== ② 网络权重 (0-1) ==========") + # tasks = ["defense", "fire", "logistics", "medical", "evacuation"] + # tfactor = ["w1", "w2", "w3", "w4", "w5"] + # for task in tasks: + # print(f"\n-- {task} -- w1/w2/w3/w4/w5") + # for i, tf in enumerate(tfactor): + # old = cfg["W_NET"][task][tf] + # cfg["W_NET"][task][tf] = ask_one_weight(tf, old) + # + # print("\n========== ③ 特征距离 LAMBDA (km) ==========") + # for rel in rels: + # old = cfg["LAMBDA"][rel] + # cfg["LAMBDA"][rel] = ask_one_float(f"{rel} 距离", old) + # + # print("\n========== ④ 时间衰减系数 ==========") + # cfg["TIME"]["alpha"] = ask_one_float("alpha", cfg["TIME"]["alpha"]) + # cfg["TIME"]["beta"] = ask_one_float("beta", cfg["TIME"]["beta"]) + # cfg["TIME"]["gamma"] = ask_one_float("gamma", cfg["TIME"]["gamma"]) + # + # print("\n========== ⑤ 其他 ==========") + # cfg["PD_SGM"] = ask_one_float("平台共位阈值 PD_SGM", cfg["PD_SGM"]) + # cfg["THRESHOLD"] = ask_one_weight("关系过滤阈值", cfg["THRESHOLD"]) + # + + print("开始网络关系计算") + print("=" * 50) + + + try: + # 1. 加载数据 + print("步骤1: 加载数据...") + nodes_data, triples_data = load_data(project_root) + print(f"加载节点数: {len(nodes_data['nodes'])}") + print(f"加载三元组数: {len(triples_data['triples'])}") + + # 2. 计算并过滤关系强度 + print(f"\n步骤2: 计算关系强度并过滤(阈值={cfg['THRESHOLD']})") + filtered_relations, filtered_triples, relation_stats, all_relations = calculate_and_filter_relations( + nodes_data, triples_data, cfg["THRESHOLD"], cfg + ) + + # 3. 评估任务网络效能(使用过滤后的关系) + print("\n步骤3: 使用过滤后的关系评估任务网络效能...") + network_results = evaluate_task_networks(nodes_data, filtered_relations, cfg) + + # 4. 生成评价报告 + print("\n步骤4: 生成评价报告...") + report_content = generate_evaluation_report( + relation_stats, network_results, filtered_relations, all_relations, cfg["THRESHOLD"],cfg + ) + + # 5. 保存结果 + print("\n步骤5: 保存结果文件...") + save_triples_and_task_probs(filtered_triples, network_results) + save_filtered_triples(filtered_triples) + save_evaluation_report(report_content) + + # 6. 在控制台显示关键信息 + print("\n" + "=" * 50) + print("关键结果摘要:") + print(f"- 过滤后保留的三元组: {len(filtered_triples)} 个") + print("所有计算完成!") + print("=" * 50) + + except Exception as e: + print(f"程序执行出错: {e}") + import traceback + traceback.print_exc() + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/final/src/triplet_cleaner.py b/final/src/triplet_cleaner.py new file mode 100644 index 0000000..73c3071 --- /dev/null +++ b/final/src/triplet_cleaner.py @@ -0,0 +1,113 @@ +""" +三元组清洗模块 +""" +from datetime import datetime +from typing import List, Dict, Any, Set, Tuple + + +def clean_triplets( + triplets: List[Dict[str, Any]], + valid_ids: Set[str] = None, + deduplicate: bool = True, + filter_orphans: bool = False, + remove_null_core: bool = True, + normalize_relation_type: bool = True, +) -> Tuple[List[Dict[str, Any]], Dict[str, Any]]: + """ + 清洗三元组数据 + + :param triplets: 原始三元组列表 + :param valid_ids: 有效实体 ID 集合(用于 filter_orphans),None 表示不校验 + :param deduplicate: 是否按 (HEAD_ID, RELATION_TYPE, TAIL_ID) 去重 + :param filter_orphans: 是否过滤悬空引用(HEAD_ID/TAIL_ID 不在 valid_ids 中) + :param remove_null_core: 是否移除 HEAD_ID/TAIL_ID/RELATION_TYPE 为空的记录 + :param normalize_relation_type: 是否规范化 RELATION_TYPE(去空格) + :return: (清洗后列表, 清洗报告) + """ + report = { + "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), + "original_count": len(triplets), + "deduplicate": {"enabled": deduplicate, "removed": 0}, + "filter_orphans": {"enabled": filter_orphans, "removed": 0}, + "remove_null_core": {"enabled": remove_null_core, "removed": 0}, + "normalize_relation_type": {"enabled": normalize_relation_type}, + "final_count": 0, + } + + result = list(triplets) + + def _head(t): return _str(t.get("HEAD_ID") or t.get("head")) + def _tail(t): return _str(t.get("TAIL_ID") or t.get("tail")) + def _rel(t): return _str(t.get("RELATION_TYPE") or t.get("relation")) + + if remove_null_core: + before = len(result) + result = [t for t in result if _not_empty(_head(t)) and _not_empty(_tail(t)) and _not_empty(_rel(t))] + report["remove_null_core"]["removed"] = before - len(result) + + if normalize_relation_type: + for t in result: + k = "RELATION_TYPE" if "RELATION_TYPE" in t else "relation" + if isinstance(t.get(k), str): + t[k] = t[k].strip() + + if filter_orphans and valid_ids is not None: + before = len(result) + result = [t for t in result if _head(t) in valid_ids and _tail(t) in valid_ids] + report["filter_orphans"]["removed"] = before - len(result) + + if deduplicate: + before = len(result) + seen = set() + unique = [] + for t in result: + key = (_head(t), _rel(t), _tail(t)) + if key not in seen: + seen.add(key) + unique.append(t) + result = unique + report["deduplicate"]["removed"] = before - len(result) + + report["final_count"] = len(result) + return result, report + + +def _not_empty(v: Any) -> bool: + if v is None: + return False + if isinstance(v, str) and not v.strip(): + return False + return True + + +def _str(v: Any) -> str: + if v is None: + return "" + return str(v).strip() + + +def transform_triplet_output_format( + triplets: List[Dict[str, Any]], + id_to_role: dict = None, +) -> List[Dict[str, Any]]: + """ + 将三元组转为输出格式: + - HEAD_ID/head -> head, TAIL_ID/tail -> tail, RELATION_TYPE/relation -> relation + - 新增 head_type、tail_type(从 id_to_role 查 ROLE_ID,已有则保留) + """ + id_to_role = id_to_role or {} + result = [] + for t in triplets: + head = _str(t.get("HEAD_ID") or t.get("head")) + tail = _str(t.get("TAIL_ID") or t.get("tail")) + rel = _str(t.get("RELATION_TYPE") or t.get("relation")) + head_type = _str(t.get("head_type")) or id_to_role.get(head, "") + tail_type = _str(t.get("tail_type")) or id_to_role.get(tail, "") + result.append({ + "head": head, + "head_type": head_type, + "relation": rel, + "tail": tail, + "tail_type": tail_type, + }) + return result diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index b937909..0000000 --- a/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -numpy>=1.20.0 -pandas>=1.3.0 -PyYAML>=5.4 -# 达梦数据库(仅 source=db 时需要,开发阶段可不安) -# pip install dmPython diff --git a/scripts/inspect_dm_tables.py b/scripts/inspect_dm_tables.py deleted file mode 100644 index 2c9d381..0000000 --- a/scripts/inspect_dm_tables.py +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env python3 -""" -在达梦数据库机器上运行,查看各表结构,用于编写 config 中的 db.query -用法: python scripts/inspect_dm_tables.py - -密码获取顺序:环境变量 DM_PASSWORD > 下方 LOCAL_PASSWORD -若使用 LOCAL_PASSWORD,切勿提交到 git!可执行:git update-index --assume-unchanged scripts/inspect_dm_tables.py -""" -import os -import sys - -# 可选:在此直接填写密码(仅限本机调试,切勿提交到版本库!) -LOCAL_PASSWORD = None # 例如: "你的密码" - -# 支持从项目根或 scripts 目录运行 -_script_dir = os.path.dirname(os.path.abspath(__file__)) -_project_root = os.path.dirname(_script_dir) -if _project_root not in sys.path: - sys.path.insert(0, _project_root) - -try: - import dmPython -except ImportError: - print("请先安装: pip install dmPython") - sys.exit(1) - -CONFIG = { - "user": "SYSDBA", - "password": os.environ.get("DM_PASSWORD") or LOCAL_PASSWORD, - "server": "127.0.0.1", - "port": 5080, - "schema": "SYSDBA", -} - -TABLES = [ - "OBJECTIVE_INSTANCE", - "METRIC_VALUE_INSTANCE", - "METRIC_PROFILE", - "ROLE_PROFILE", - "TASK_PROFILE", - "RELATION_INSTANCE", -] - - -def main(): - if not CONFIG["password"]: - print("请设置环境变量 DM_PASSWORD 或在脚本中填写 LOCAL_PASSWORD") - sys.exit(1) - - try: - conn = dmPython.connect( - user=CONFIG["user"], - password=CONFIG["password"], - server=CONFIG["server"], - port=CONFIG["port"], - schema=CONFIG["schema"], - ) - except Exception as e: - print(f"连接失败: {e}") - sys.exit(1) - - cursor = conn.cursor() - print("=" * 60) - print("达梦表结构(用于编写 config/db.query)") - print("=" * 60) - - for table in TABLES: - try: - cursor.execute(f'SELECT * FROM "{CONFIG["schema"]}"."{table}" WHERE 1=0') - cols = [d[0] for d in cursor.description] - print(f"\n【{table}】 列: {cols}") - except Exception as e: - print(f"\n【{table}】 查询失败: {e}") - - cursor.execute( - """ - SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE - FROM DBA_TAB_COLUMNS - WHERE OWNER = ? - ORDER BY TABLE_NAME, COLUMN_ID - """, - (CONFIG["schema"],), - ) - rows = cursor.fetchall() - - print("\n" + "=" * 60) - print("所有列详情 (TABLE_NAME | COLUMN_NAME | DATA_TYPE)") - print("=" * 60) - cur_table = None - for table, col, dtype in rows: - if table != cur_table: - cur_table = table - print(f"\n--- {table} ---") - print(f" {col}: {dtype}") - - cursor.close() - conn.close() - print("\n完成。请根据上述结构在 config 中编写 db.query。") - - -if __name__ == "__main__": - main() diff --git a/src/data_loader.py b/src/data_loader.py deleted file mode 100644 index 6437a05..0000000 --- a/src/data_loader.py +++ /dev/null @@ -1,101 +0,0 @@ -""" -数据加载模块:支持从 JSON 文件或达梦数据库读取数据 -开发阶段使用 JSON,生产环境切换到达梦时只需修改 config 中的 source -""" -import json -import os -from typing import Tuple - - -def load_from_json(file_path: str, project_root: str = None) -> list: - """从 JSON 文件加载数据""" - path = file_path - if project_root and not os.path.isabs(file_path): - path = os.path.join(project_root, file_path) - with open(path, 'r', encoding='utf-8') as f: - return json.load(f) - - -def load_from_dm(config: dict, project_root: str = None) -> list: - """ - 从达梦数据库加载数据 - 需要安装 dmPython 及达梦客户端库,仅在 source=db 时调用 - """ - try: - import dmPython - except ImportError as e: - raise RuntimeError( - "达梦数据库模式需要安装 dmPython。\n" - "请执行: pip install dmPython\n" - "并在有达梦客户端的环境运行(需配置 DM_HOME/LD_LIBRARY_PATH)" - ) from e - - db_cfg = config.get('db', {}) - password = os.environ.get('DM_PASSWORD') - if not password: - raise ValueError( - "达梦模式需要设置环境变量 DM_PASSWORD。\n" - "示例: export DM_PASSWORD=你的密码" - ) - - conn = dmPython.connect( - user=db_cfg.get('user', 'SYSDBA'), - password=password, - server=db_cfg.get('host', '127.0.0.1'), - port=int(db_cfg.get('port', 5080)), - schema=db_cfg.get('schema', 'SYSDBA'), - ) - - try: - cursor = conn.cursor() - query = (db_cfg.get('query') or '').strip() - table = db_cfg.get('table') - if query: - cursor.execute(query) - elif table: - schema = db_cfg.get('schema', 'SYSDBA') - cursor.execute(f'SELECT * FROM "{schema}"."{table}"') - else: - raise ValueError( - "达梦模式需配置 db.query(自定义 SQL)或 db.table。\n" - "当前达梦为规范化表,需通过 query 编写 JOIN 得到扁平化数据。" - ) - columns = [desc[0] for desc in cursor.description] - rows = cursor.fetchall() - cursor.close() - return [dict(zip(columns, row)) for row in rows] - finally: - conn.close() - - -def load_data(config: dict, project_root: str) -> Tuple[list, dict]: - """ - 根据配置加载数据,返回 (数据列表, 路径配置) - """ - source = config.get('source', 'json') - project_root = project_root or os.getcwd() - - if source == 'json': - json_cfg = config.get('json', {}) - data = load_from_json(json_cfg.get('input_file', 'data/raw_data_sample.json'), project_root) - paths = { - 'output': _resolve_path(json_cfg.get('output_file', 'data/cleaned_data_final.json'), project_root), - 'report': _resolve_path(json_cfg.get('report_file', 'report/detailed_cleaning_report.json'), project_root), - } - return data, paths - elif source == 'db': - data = load_from_dm(config, project_root) - json_cfg = config.get('json', {}) - paths = { - 'output': _resolve_path(json_cfg.get('output_file', 'data/cleaned_data_final.json'), project_root), - 'report': _resolve_path(json_cfg.get('report_file', 'report/detailed_cleaning_report.json'), project_root), - } - return data, paths - else: - raise ValueError(f"不支持的 source 类型: {source},应为 json 或 db") - - -def _resolve_path(path: str, project_root: str) -> str: - if os.path.isabs(path): - return path - return os.path.join(project_root, path)