From 4b539c9bafe72b8b981d2a2f4d57794c5f854e6c Mon Sep 17 00:00:00 2001 From: lvjunjie Date: Mon, 13 Jul 2026 17:20:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B1=82=E8=A7=A3=E5=99=A8?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AD=97=E6=AE=B5=E7=9A=84=E8=AF=BB=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ML/Training/Training/DatasetIO.cpp | 38 +++++++++++++++++++++++++++- ML/Training/Training/DatasetIO.h | 2 +- ML/Training/Training/GridCacheIO.cpp | 38 +++++++++++++++++++++++++++- ML/Training/Training/GridCacheIO.h | 2 +- ML/Training/Training/Training.cpp | 6 +++++ 5 files changed, 82 insertions(+), 4 deletions(-) diff --git a/ML/Training/Training/DatasetIO.cpp b/ML/Training/Training/DatasetIO.cpp index 7e18aeb..adda424 100644 --- a/ML/Training/Training/DatasetIO.cpp +++ b/ML/Training/Training/DatasetIO.cpp @@ -610,6 +610,7 @@ bool DatasetIO::writeGridOutput2(std::ofstream& fs, const HX_NWTM_GRID_OUTPUT2& if (!writeVec2D(fs, g.ZhiJingNeiBianJie.dw)) return false; if (!writeVec1D(fs, g.ZhiJingNeiBianJie.rw)) return false; if (!writeIVec2D(fs, g.ZhiJingNeiBianJie.inwell)) return false; + if (!writeVec1D(fs, g.ZhiJingNeiBianJie.dwell)) return false; // LieFengJingNeiBianJie if (!writeInt(fs, g.LieFengJingNeiBianJie.n)) return false; @@ -618,6 +619,13 @@ bool DatasetIO::writeGridOutput2(std::ofstream& fs, const HX_NWTM_GRID_OUTPUT2& if (!writeVec2D(fs, g.LieFengJingNeiBianJie.df)) return false; if (!writeVec1D(fs, g.LieFengJingNeiBianJie.xf)) return false; if (!writeIVec2D(fs, g.LieFengJingNeiBianJie.infra)) return false; + if (!writeIVec1D(fs, g.LieFengJingNeiBianJie.nf)) return false; + if (!writeIVec1D(fs, g.LieFengJingNeiBianJie.jjf)) return false; + if (!writeIVec1D(fs, g.LieFengJingNeiBianJie.jjfl)) return false; + if (!writeVec1D(fs, g.LieFengJingNeiBianJie.lfcd)) return false; + if (!writeIVec2D(fs, g.LieFengJingNeiBianJie.infra1)) return false; + if (!writeVec2D(fs, g.LieFengJingNeiBianJie.lf1)) return false; + if (!writeVec2D(fs, g.LieFengJingNeiBianJie.df1)) return false; // DuoJiYaLieShuiPingJingNeiBianJie if (!writeInt(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.n)) return false; @@ -627,6 +635,16 @@ bool DatasetIO::writeGridOutput2(std::ofstream& fs, const HX_NWTM_GRID_OUTPUT2& if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dsxf)) return false; if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor)) return false; if (!writeIVec1D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nhor)) return false; + if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.areah)) return false; + if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor1)) return false; + if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nh)) return false; + if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh)) return false; + if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.hfcd)) return false; + if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjhl)) return false; + if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh2)) return false; + if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor2)) return false; + if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.lh1)) return false; + if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dh1)) return false; // WaiBianJie if (!writeInt(fs, g.WaiBianJie.n)) return false; @@ -662,6 +680,7 @@ bool DatasetIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g) if (!readVec2D(fs, g.ZhiJingNeiBianJie.dw)) return false; if (!readVec1D(fs, g.ZhiJingNeiBianJie.rw)) return false; if (!readIVec2D(fs, g.ZhiJingNeiBianJie.inwell)) return false; + if (!readVec1D(fs, g.ZhiJingNeiBianJie.dwell)) return false; if (!readInt(fs, g.LieFengJingNeiBianJie.n)) return false; if (!readVec2D(fs, g.LieFengJingNeiBianJie.XiLinf)) return false; @@ -669,6 +688,13 @@ bool DatasetIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g) if (!readVec2D(fs, g.LieFengJingNeiBianJie.df)) return false; if (!readVec1D(fs, g.LieFengJingNeiBianJie.xf)) return false; if (!readIVec2D(fs, g.LieFengJingNeiBianJie.infra)) return false; + if (!readIVec1D(fs, g.LieFengJingNeiBianJie.nf)) return false; + if (!readIVec1D(fs, g.LieFengJingNeiBianJie.jjf)) return false; + if (!readIVec1D(fs, g.LieFengJingNeiBianJie.jjfl)) return false; + if (!readVec1D(fs, g.LieFengJingNeiBianJie.lfcd)) return false; + if (!readIVec2D(fs, g.LieFengJingNeiBianJie.infra1)) return false; + if (!readVec2D(fs, g.LieFengJingNeiBianJie.lf1)) return false; + if (!readVec2D(fs, g.LieFengJingNeiBianJie.df1)) return false; if (!readInt(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.n)) return false; if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.XiLinh)) return false; @@ -677,6 +703,16 @@ bool DatasetIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g) if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dsxf)) return false; if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor)) return false; if (!readIVec1D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nhor)) return false; + if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.areah)) return false; + if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor1)) return false; + if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nh)) return false; + if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh)) return false; + if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.hfcd)) return false; + if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjhl)) return false; + if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh2)) return false; + if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor2)) return false; + if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.lh1)) return false; + if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dh1)) return false; if (!readInt(fs, g.WaiBianJie.n)) return false; if (!readVec2D(fs, g.WaiBianJie.WaiBianh)) return false; @@ -777,4 +813,4 @@ unsigned long long DatasetIO::computeSceneKey64(const HX_NWTM_GRID_INPUT& in) hashVec2D(h, in.InclinedWell); hashVec2D(h, in.Fault); return h; -} \ No newline at end of file +} diff --git a/ML/Training/Training/DatasetIO.h b/ML/Training/Training/DatasetIO.h index 55f6eca..197e14f 100644 --- a/ML/Training/Training/DatasetIO.h +++ b/ML/Training/Training/DatasetIO.h @@ -53,7 +53,7 @@ private: }; enum { MAGIC = 0x58485444 }; // 'DTHX' little-endian - enum { VERSION = 1 }; + enum { VERSION = 2 }; // 从 scene 生成 gridInput(用于 strictVerify 重新算 sceneKey) static HX_NWTM_GRID_INPUT buildGridInputFromScene(const PebiScene& scene); diff --git a/ML/Training/Training/GridCacheIO.cpp b/ML/Training/Training/GridCacheIO.cpp index 84f473e..a4be857 100644 --- a/ML/Training/Training/GridCacheIO.cpp +++ b/ML/Training/Training/GridCacheIO.cpp @@ -428,6 +428,7 @@ bool GridCacheIO::writeGridOutput2(std::ofstream& fs, const HX_NWTM_GRID_OUTPUT2 if (!writeVec2D(fs, g.ZhiJingNeiBianJie.dw)) return false; if (!writeVec1D(fs, g.ZhiJingNeiBianJie.rw)) return false; if (!writeIVec2D(fs, g.ZhiJingNeiBianJie.inwell)) return false; + if (!writeVec1D(fs, g.ZhiJingNeiBianJie.dwell)) return false; // LieFengJingNeiBianJie if (!writeInt(fs, g.LieFengJingNeiBianJie.n)) return false; @@ -436,6 +437,13 @@ bool GridCacheIO::writeGridOutput2(std::ofstream& fs, const HX_NWTM_GRID_OUTPUT2 if (!writeVec2D(fs, g.LieFengJingNeiBianJie.df)) return false; if (!writeVec1D(fs, g.LieFengJingNeiBianJie.xf)) return false; if (!writeIVec2D(fs, g.LieFengJingNeiBianJie.infra)) return false; + if (!writeIVec1D(fs, g.LieFengJingNeiBianJie.nf)) return false; + if (!writeIVec1D(fs, g.LieFengJingNeiBianJie.jjf)) return false; + if (!writeIVec1D(fs, g.LieFengJingNeiBianJie.jjfl)) return false; + if (!writeVec1D(fs, g.LieFengJingNeiBianJie.lfcd)) return false; + if (!writeIVec2D(fs, g.LieFengJingNeiBianJie.infra1)) return false; + if (!writeVec2D(fs, g.LieFengJingNeiBianJie.lf1)) return false; + if (!writeVec2D(fs, g.LieFengJingNeiBianJie.df1)) return false; // DuoJiYaLieShuiPingJingNeiBianJie if (!writeInt(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.n)) return false; @@ -445,6 +453,16 @@ bool GridCacheIO::writeGridOutput2(std::ofstream& fs, const HX_NWTM_GRID_OUTPUT2 if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dsxf)) return false; if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor)) return false; if (!writeIVec1D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nhor)) return false; + if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.areah)) return false; + if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor1)) return false; + if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nh)) return false; + if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh)) return false; + if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.hfcd)) return false; + if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjhl)) return false; + if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh2)) return false; + if (!writeIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor2)) return false; + if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.lh1)) return false; + if (!writeVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dh1)) return false; // WaiBianJie if (!writeInt(fs, g.WaiBianJie.n)) return false; @@ -480,6 +498,7 @@ bool GridCacheIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g) if (!readVec2D(fs, g.ZhiJingNeiBianJie.dw)) return false; if (!readVec1D(fs, g.ZhiJingNeiBianJie.rw)) return false; if (!readIVec2D(fs, g.ZhiJingNeiBianJie.inwell)) return false; + if (!readVec1D(fs, g.ZhiJingNeiBianJie.dwell)) return false; if (!readInt(fs, g.LieFengJingNeiBianJie.n)) return false; if (!readVec2D(fs, g.LieFengJingNeiBianJie.XiLinf)) return false; @@ -487,6 +506,13 @@ bool GridCacheIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g) if (!readVec2D(fs, g.LieFengJingNeiBianJie.df)) return false; if (!readVec1D(fs, g.LieFengJingNeiBianJie.xf)) return false; if (!readIVec2D(fs, g.LieFengJingNeiBianJie.infra)) return false; + if (!readIVec1D(fs, g.LieFengJingNeiBianJie.nf)) return false; + if (!readIVec1D(fs, g.LieFengJingNeiBianJie.jjf)) return false; + if (!readIVec1D(fs, g.LieFengJingNeiBianJie.jjfl)) return false; + if (!readVec1D(fs, g.LieFengJingNeiBianJie.lfcd)) return false; + if (!readIVec2D(fs, g.LieFengJingNeiBianJie.infra1)) return false; + if (!readVec2D(fs, g.LieFengJingNeiBianJie.lf1)) return false; + if (!readVec2D(fs, g.LieFengJingNeiBianJie.df1)) return false; if (!readInt(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.n)) return false; if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.XiLinh)) return false; @@ -495,6 +521,16 @@ bool GridCacheIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g) if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dsxf)) return false; if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor)) return false; if (!readIVec1D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nhor)) return false; + if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.areah)) return false; + if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor1)) return false; + if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.nh)) return false; + if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh)) return false; + if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.hfcd)) return false; + if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjhl)) return false; + if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.jjh2)) return false; + if (!readIVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.inhor2)) return false; + if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.lh1)) return false; + if (!readVec2D(fs, g.DuoJiYaLieShuiPingJingNeiBianJie.dh1)) return false; if (!readInt(fs, g.WaiBianJie.n)) return false; if (!readVec2D(fs, g.WaiBianJie.WaiBianh)) return false; @@ -513,4 +549,4 @@ bool GridCacheIO::readGridOutput2(std::ifstream& fs, HX_NWTM_GRID_OUTPUT2& g) if (!readInt(fs, g.YuChuLiJuZhen.numk)) return false; return true; -} \ No newline at end of file +} diff --git a/ML/Training/Training/GridCacheIO.h b/ML/Training/Training/GridCacheIO.h index e67f530..c855c8e 100644 --- a/ML/Training/Training/GridCacheIO.h +++ b/ML/Training/Training/GridCacheIO.h @@ -41,7 +41,7 @@ private: }; enum { MAGIC = 0x58484347 }; // 'GCHX' little-endian - enum { VERSION = 1 }; + enum { VERSION = 2 }; private: // 计算串场景 key diff --git a/ML/Training/Training/Training.cpp b/ML/Training/Training/Training.cpp index 59ee8b8..945b845 100644 --- a/ML/Training/Training/Training.cpp +++ b/ML/Training/Training/Training.cpp @@ -272,6 +272,12 @@ int main() return 5; } + if (gridOutput2.Trinodexy.empty()) { + std::cerr << "HX_NWTM_GRID 返回空网格,停止写入缓存和 dataset" << std::endl; + FreeLibrary(hx); + return 5; + } + std::cout << "保存网格缓存: " << gridCachePath << std::endl; if (!GridCacheIO::saveGrid(gridCachePath, gridOutput2, gridInput)) { std::cout << "警告:保存网格缓存失败(继续执行)" << std::endl;