删除候选评价中的参数专属硬编码阈值。

feature/MultiWellAutoFit-20260805
lvjunjie 6 days ago
parent 83a29152c9
commit 924f6f4ee8

@ -6327,9 +6327,8 @@ int nmCalculationAutoFitPSO::getEnabledParameterCount() const
bool nmCalculationAutoFitPSO::validateParameters(const QVector<double>& parameters) const bool nmCalculationAutoFitPSO::validateParameters(const QVector<double>& parameters) const
{ {
// 参数合法性检查分两层: // 参数物理范围已由拟合窗口统一校验;候选评价只检查维度、有限数和
// 1. 与用户界面设置一致:维度、有限数、上下界; // 用户设置的上下界,避免另一套硬编码阈值与实际搜索范围冲突。
// 2. 求解器保护:拦截会导致数值崩溃或明显无物理意义的极端值。
if(parameters.size() != getEnabledParameterCount()) { if(parameters.size() != getEnabledParameterCount()) {
return false; return false;
} }
@ -6352,54 +6351,6 @@ bool nmCalculationAutoFitPSO::validateParameters(const QVector<double>& paramete
} }
} }
// 直接拦截会导致求解器数值崩溃的参数值
for(int i = 0; i < parameters.size() && i < m_enabledParamIndices.size(); ++i) {
int paramIndex = m_enabledParamIndices[i];
double value = parameters[i];
switch(paramIndex) {
case 0: // 渗透率:必须大于零
if(value <= 1e-8) {
DEBUG_OUT(QString("Rejecting near-zero permeability: %1").arg(value));
return false;
}
break;
case 2: // 井筒储集系数:必须大于零
if(value <= 1e-10) {
DEBUG_OUT(QString("Rejecting near-zero wellbore storage: %1").arg(value));
return false;
}
break;
case 3: // 孔隙度:必须在合理范围
if(value <= 1e-6 || value >= 0.99) {
DEBUG_OUT(QString("Rejecting unrealistic porosity: %1").arg(value));
return false;
}
break;
case 5: // 综合压缩系数:必须大于零
if(value <= 1e-8) {
DEBUG_OUT(QString("Rejecting near-zero total compressibility: %1").arg(value));
return false;
}
break;
case 8: // 裂缝导流能力0 表示无限导流,不能作为连续拟合搜索点
if(value <= 1e-10) {
DEBUG_OUT(QString("Rejecting non-positive fracture conductivity: %1").arg(value));
return false;
}
break;
}
}
return true; return true;
} }

Loading…
Cancel
Save