diff --git a/Bin/Config/Lang/cn/nmNum_cn.qm b/Bin/Config/Lang/cn/nmNum_cn.qm index 2bab4b7..837aac1 100644 Binary files a/Bin/Config/Lang/cn/nmNum_cn.qm and b/Bin/Config/Lang/cn/nmNum_cn.qm differ diff --git a/Bin/Config/Lang/cn/nmNum_cn.ts b/Bin/Config/Lang/cn/nmNum_cn.ts index 75552d4..1c8383d 100644 --- a/Bin/Config/Lang/cn/nmNum_cn.ts +++ b/Bin/Config/Lang/cn/nmNum_cn.ts @@ -638,6 +638,389 @@ Reason: %1 代理评分服务器标准错误输出(stderr):%1 + + nmCalculationAutoFitLM + + === User Stop Request Received === + === 用户停止请求已接收 === + + + Gracefully stopping LM automatic fitting... + 正在平稳停止 LM 自动拟合... + + + Waiting for current solver evaluation to stop... + 正在等待当前求解器评估停止... + + + LM automatic fitting stop request processed + LM 自动拟合停止请求已处理 + + + Stop request received but optimization is not running + 收到停止请求,但优化未运行 + + + LM fitting trace: %1 + LM 拟合跟踪:%1 + + + LM fitting trace metadata: %1 + LM 拟合跟踪元数据:%1 + + + === LM Run Summary === + === LM 运行摘要 === + + + Stop reason: %1 + 停止原因:%1 + + + Result: %1, final error=%2, iterations=%3, evaluations=%4 (successful=%5, failed=%6) + 结果:%1,最终误差=%2,迭代次数=%3,评估次数=%4(成功=%5,失败=%6) + + + SUCCESS + 成功 + + + FAILED + 失败 + + + Artifacts: trace=%1 + 产物:跟踪=%1 + + + Artifacts: trace_meta=%1 + 产物:跟踪元数据=%1 + + + ERROR: Failed to load configuration from data manager + 错误:从数据管理器加载配置失败 + + + Algorithm: LM + 算法:LM + + + Enabled parameters count: %1 + 启用参数数量:%1 + + + ERROR: No parameters enabled for optimization + 错误:没有启用优化参数 + + + ERROR: Target LogLog data is empty or insufficient + 错误:目标双对数数据为空或不足 + + + ERROR: Target LogLog data arrays have inconsistent sizes + 错误:目标双对数数据数组大小不一致 + + + ERROR: Target well name is empty + 错误:目标井名称为空 + + + Target data validation passed (%1 data points) + 目标数据验证通过(%1 个数据点) + + + === Evaluating Initial Solution (Elite Protection) === + === 评估初始解 === + + + Initial parameters: + 初始参数: + + + Starting initial solution evaluation... + 开始初始解评估... + + + Initial solution evaluation successful + 初始解评估成功 + + + Initial Error: %1 + 初始误差:%1 + + + Initial solution evaluation failed + 初始解评估失败 + + + Exception during initial solution evaluation + 初始解评估期间出现异常 + + + Critical exception in automatic fitting: %1 + 自动拟合发生严重异常:%1 + + + CRITICAL ERROR: %1 + 严重错误:%1 + + + Unknown critical exception in automatic fitting + 自动拟合发生未知严重异常 + + + CRITICAL ERROR: Unknown exception in automatic fitting + 严重错误:自动拟合发生未知异常 + + + Applying optimized parameters to model... + 正在将优化参数应用到模型... + + + Final full-field calculation skipped after user stop + 用户停止后已跳过最终全场计算 + + + Running final full-field calculation with optimized parameters... + 正在使用优化参数运行最终全场计算... + + + Final full-field calculation completed successfully + 最终全场计算成功完成 + + + Final full-field calculation stopped by user + 最终全场计算已被用户停止 + + + Optimized parameters were found, but the final full-field calculation failed + 已找到优化参数,但最终全场计算失败 + + + ERROR: Final full-field calculation failed + 错误:最终全场计算失败 + + + === Optimization Results === + === 优化结果 === + + + Final error: %1 + 最终误差:%1 + + + Total iterations: %1 + 总迭代次数:%1 + + + Total evaluations: %1 (successful: %2) + 总评估次数:%1(成功:%2) + + + Optimized parameters: + 优化参数: + + + Parameters and full-field results applied successfully to data manager + 参数和全场计算结果已成功应用到数据管理器 + + + Optimized parameters applied to data manager + 优化参数已应用到数据管理器 + + + ERROR: Failed to apply final parameters: %1 + 错误:应用最终参数失败:%1 + + + ERROR: Unknown error applying final parameters + 错误:应用最终参数时出现未知错误 + + + Target achieved. Best error: %1, Iterations: %2 + 达到目标。最佳误差:%1,迭代次数:%2 + + + === LM AUTOMATIC FITTING SUCCESSFUL === + === LM 自动拟合成功 === + + + Automatic fitting converged to a stable solution. Best error: %1, Iterations: %2 + 自动拟合已收敛到稳定解。最佳误差:%1,迭代次数:%2 + + + === LM AUTOMATIC FITTING CONVERGED === + === LM 自动拟合已收敛 === + + + Automatic fitting reached a local optimum. Best error: %1, Iterations: %2 + 自动拟合达到局部最优。最佳误差:%1,迭代次数:%2 + + + === LM AUTOMATIC FITTING - LOCAL OPTIMUM === + === LM 自动拟合 - 局部最优 === + + + Max iterations reached. Best error: %1, Iterations: %2 + 达到最大迭代次数。最佳误差:%1,迭代次数:%2 + + + === LM AUTOMATIC FITTING - MAX ITERATIONS === + === LM 自动拟合 - 达到最大迭代次数 === + + + Best error: %1, Iterations: %2 + 最佳误差:%1,迭代次数:%2 + + + === LM AUTOMATIC FITTING STOPPED BY USER === + === LM 自动拟合已被用户停止 === + + + Automatic fitting failed due to consecutive failures. Best error: %1, Iterations: %2 + 自动拟合因连续失败而终止。最佳误差:%1,迭代次数:%2 + + + === LM AUTOMATIC FITTING FAILED === + === LM 自动拟合失败 === + + + Automatic fitting ended unexpectedly. Best error: %1, Iterations: %2 + 自动拟合意外结束。最佳误差:%1,迭代次数:%2 + + + === LM AUTOMATIC FITTING - UNKNOWN END === + === LM 自动拟合 - 未知结束 === + + + No valid parameters are available for trust-region fitting + 没有可用于 LM 拟合的有效参数 + + + The initial solution and parameter-range midpoint are both invalid + 初始解和参数范围中点均无效 + + + === Starting LM Main Loop === + === 开始 LM 主循环 === + + + LM starting point error: %1; evaluation budget: %2 + LM 起点误差:%1;最大评估次数:%2 + + + No effective improvement for %1 consecutive steps; rebuilding sensitivity model for confirmation + 连续 %1 次无有效改善,正在重建灵敏度模型进行确认 + + + Effective improvement threshold: max(%1, %2% of baseline error); %3 consecutive ineffective steps trigger convergence confirmation + 有效改善阈值:取 %1 与基准误差的 %2% 中较大值;连续 %3 次无有效改善后进行收敛确认 + + + Sensitivity probe accepted: error reduced to %1 + 已接受灵敏度试算点,误差降至 %1 + + + Sensitivity model rebuilt: %1/%2 parameter columns valid + 灵敏度模型重建完成:%1/%2 个参数列有效 + + + Sensitivity rebuild produced no effective improvement; local convergence detected + 灵敏度重建后仍无有效改善,判定为局部收敛 + + + vertical deviation + 上下偏差 + + + horizontal deviation + 左右偏差 + + + shape deviation + 形状偏差 + + + total error + 总误差 + + + Iteration %1: focus=%2, parameters=%3, error=%4, result=%5 + 迭代 %1:关注=%2,参数个数=%3,误差=%4,结果=%5 + + + accepted + 接受 + + + rejected + 拒绝 + + + No initial solution for elite protection + 没有可用于精英保护的初始解 + + + === Final Result Validation (Elite Protection) === + === 最终结果验证 === + + + Comparing results: Initial=%1, Final=%2 + 比较结果:初始=%1,最终=%2 + + + Improvement: %1 (%2%) + 改善:%1(%2%) + + + Elite protection triggered: final result is invalid or worse than initial + 触发精英保护:最终结果无效或差于初始解 + + + Restoring initial solution as final result + 正在恢复初始解作为最终结果 + + + Initial solution restored successfully + 初始解恢复成功 + + + Final result validated - solution is not worse than initial + 最终结果验证通过,拟合结果不差于初始解 + + + Target error achieved + 达到目标误差 + + + Algorithm converged to stable solution + 算法已收敛到稳定解 + + + Local optimum detected + 检测到局部最优 + + + Maximum iterations reached + 达到最大迭代次数 + + + Stopped by user request + 根据用户请求停止 + + + Too many consecutive failures + 连续失败次数过多 + + + Optimization failed + 优化失败 + + + Unknown reason + 未知原因 + + nmCalculationSolver @@ -3446,6 +3829,12 @@ Supported types: Vertical, Vertical Fractured, and Horizontal Multi-Fractured We PSO求解完成: + + %1 Optimization completed: + + %1 拟合完成: + + Best Error: %1 @@ -3476,6 +3865,12 @@ Supported types: Vertical, Vertical Fractured, and Horizontal Multi-Fractured We PSO拟合被用户强行终止: + + %1 Optimization stopped by user: + + %1 拟合已被用户停止: + + Current parameters have been applied to the model. 当前参数已应用到模型。 @@ -3678,6 +4073,10 @@ Supported types: Vertical, Vertical Fractured, and Horizontal Multi-Fractured We GA auto fitting started 遗传法自动拟合开始 + + %1 auto fitting started + %1 自动拟合开始 + %1 fitting parameters set: MaxIterations=%2, TargetAccuracy=%3, TargetWell=%4 %1 拟合参数设置:最大迭代次数=%2,目标精度=%3,目标井=%4 diff --git a/Src/nmNum/nmCalculation/nmCalculationAutoFitLM.cpp b/Src/nmNum/nmCalculation/nmCalculationAutoFitLM.cpp index cccb04c..efff34d 100644 --- a/Src/nmNum/nmCalculation/nmCalculationAutoFitLM.cpp +++ b/Src/nmNum/nmCalculation/nmCalculationAutoFitLM.cpp @@ -803,7 +803,11 @@ void nmCalculationAutoFitLM::initializeTraceFile() writeTraceHeader(); writeTraceMetaFile(); - emit logMessageGenerated(tr("LM automatic fitting trace: %1").arg(m_traceFilePath)); + emit logMessageGenerated(tr("LM fitting trace: %1").arg(m_traceFilePath)); + if(!m_traceMetaFilePath.isEmpty()) { + emit logMessageGenerated( + tr("LM fitting trace metadata: %1").arg(m_traceMetaFilePath)); + } } void nmCalculationAutoFitLM::closeTraceFile() @@ -990,7 +994,7 @@ void nmCalculationAutoFitLM::emitRunSummary(bool success, StopReasonLM finalReas emit logMessageGenerated(tr("Stop reason: %1").arg(getStopReasonDescription(finalReason))); emit logMessageGenerated( tr("Result: %1, final error=%2, iterations=%3, evaluations=%4 (successful=%5, failed=%6)") - .arg(success ? "SUCCESS" : "FAILED") + .arg(success ? tr("SUCCESS") : tr("FAILED")) .arg(m_globalBestFitness, 0, 'e', 4) .arg(m_currentIteration + 1) .arg(m_totalEvaluations) @@ -1179,7 +1183,7 @@ bool nmCalculationAutoFitLM::startAutoFitting() return false; } - emit logMessageGenerated(tr("Algorithm: Finite Difference + LM")); + emit logMessageGenerated(tr("Algorithm: LM")); const int enabledParams = getEnabledParameterCount(); emit logMessageGenerated(tr("Enabled parameters count: %1").arg(enabledParams)); @@ -1209,8 +1213,8 @@ bool nmCalculationAutoFitLM::startAutoFitting() } emit logMessageGenerated( - tr("Candidate evaluation mode: solve all wells, retain target well '%1' only") - .arg(m_targetWellName)); + tr("Target data validation passed (%1 data points)") + .arg(m_targetLogLogData[0].size())); // resetOptimizer() 会清空运行状态,因此先保存从 DataManager 提取的初始值。 QVector savedInitialValues = m_initialValues; @@ -1235,6 +1239,8 @@ bool nmCalculationAutoFitLM::startAutoFitting() emit logMessageGenerated(paramStr); try { + emit logMessageGenerated( + tr("Starting initial solution evaluation...")); QTime initialEvalTimer; initialEvalTimer.start(); m_totalEvaluations++; @@ -1747,8 +1753,9 @@ StopReasonLM nmCalculationAutoFitLM::runTrustRegionFitting() } restoreEvaluationState(current); + emit logMessageGenerated(tr("=== Starting LM Main Loop ===")); emit logMessageGenerated( - tr("Trust-region initial error: %1; evaluation budget: %2") + tr("LM starting point error: %1; evaluation budget: %2") .arg(current.fitness, 0, 'e', 4) .arg(maximumEvaluations)); @@ -2459,10 +2466,21 @@ StopReasonLM nmCalculationAutoFitLM::runTrustRegionFitting() : QString("rejected_%1").arg(componentName), &candidate.breakdown); + QString componentDisplayName = componentName; + if(componentName == "vertical") { + componentDisplayName = tr("vertical deviation"); + } else if(componentName == "horizontal") { + componentDisplayName = tr("horizontal deviation"); + } else if(componentName == "shape") { + componentDisplayName = tr("shape deviation"); + } else if(componentName == "total") { + componentDisplayName = tr("total error"); + } + emit logMessageGenerated( tr("Iteration %1: focus=%2, parameters=%3, error=%4, result=%5") .arg(iteration + 1) - .arg(componentName) + .arg(componentDisplayName) .arg(selectedColumns.size()) .arg(candidate.fitness, 0, 'e', 4) .arg(accepted ? tr("accepted") : tr("rejected")));