最小化函数错误:“收敛失败:无法减小目标函数”我正在 JMP 16 中处理一个项目,其中使用“最小化”功能。 运行该函数时,我经常遇到错误“Convergence FAILURE:CANNOT DECREASE OBJECTIVE”。 从脚本的最终结果来看,符合预期。 由此可见,该误差对最终结果影响不大。 但是,为了确保脚本的有效性,我仍然想知道错误背后的原因。我很难找到有关此特定错误的任何文档,因此希望 JMP 社区中的某人可以帮助确定原因。
使用最小化函数的“<<详细信息(两者)”选项,获得以下日志图像:

此致,
路易斯
内容组织分享和交流结果回复:最小化函数错误:“收敛失败:无法减小目标函数”你可以制作一个图表,如下所示:
expression=expr(Log10( (ChiSquare Quantile( alpha, df ) / df - Vratio) ^ 2 ));
alpha = 0.025;
Vratio = 0.39135;
df=2;
Minimize( expression, { df( 2, 1000 ) }, << Use Numeric Deriv( "true" ) );
show(df);
New Window( "Example",
Graph Box(xscale(-1,26),yscale(-10,0),
Pen Color( "red" );
Y Function( expression, df );
)
);
there is a sharp drop at the df found by the minimize function.there is a sharp drop at the df found by the minimize function.最小化函数发现 df 急剧下降。
你可以放大急剧下降的情况,发现计算上很难得到完美的答案:
9 significant digits, and more to go.9 significant digits, and more to go.9 位有效数字,还有更多。
最小化找到的 df = 13.3517718809044 ;
ID猜测最小化算法命中曲线上的一个点,该点找到真实最小值远侧的下一个点,甚至可能处于跨越最小值的循环中。 使用不同的起始值,它可能足够接近以决定停止。 足够接近也是您可以传递以最小化(容差)的参数。
回复:最小化函数错误:“收敛失败:无法减小目标函数”查看该函数的探查器(见下文和附加的数据表),看起来 Minimize() 确实给出了一个很好的答案。
也许@chris_gotwalt1可以解释您从调用 Minimize() 时收到的错误消息。

回复:最小化函数错误:“收敛失败:无法减少目标函数”我根据你的回答使用了这个脚本。
Names Default to Here( 1 );
alpha = 0.025;
variance ratio = 0.94917 ;
df = 2;
expression = Expr( Log10( (Chi Square Quantile( alpha, df ) / df - variance ratio) ^ 2 ) );
Minimize( expression, { df( 2, 1000 ) }, << Use Numeric Deriv( "true" ) );
使用您提供给我的两个方差比,我得到以下结果:
//:*/
Names Default to Here( 1 );
alpha = 0.025;
variance ratio = 0.39135;
df = 2;
expression = Expr( Log10( (Chi Square Quantile( alpha, df ) / df - variance ratio) ^ 2 ) );
Minimize( expression, { df( 2, 1000 ) }, << Use Numeric Deriv( "true" ) );
/*:
Optimization failed: Failed: Cannot Decrease Objective Function
-19.6490758040614
//:*/
Names Default to Here( 1 );
alpha = 0.025;
variance ratio = 0.94917 ;
df = 2;
expression = Expr( Log10( (Chi Square Quantile( alpha, df ) / df - variance ratio) ^ 2 ) );
Minimize( expression, { df( 2, 1000 ) }, << Use Numeric Deriv( "true" ) );
/*:
-2.91402948948765回复:最小化函数错误:“收敛失败:无法减小目标函数”嗨马克,
感谢您的答复。
回答您的问题:
- 最小化函数调用如下:
minfun = Minimize (mfun, {df},<<USENUMERICDERIV></USENUMERICDERIV> - 待求值的表达式如下:
mfun = Expr( Log10( (ChiSquare Quantile( alpha, df ) / df - Vratio) ^ 2 ) );
- 该函数的参数初始化如下:
- df:在运行 Minimize() 函数之前设置为 2
- alpha 和 Vratio 均已在脚本中预先计算。 在失败的特定情况下,参数具有以下值:
- 阿尔法 = 0.025
- 电压比 = 0.39135
- 这里可以补充一点,使用 Vratio = 0.94917 我不会遇到警告。
此致,
路易斯
回复:最小化函数错误:“收敛失败:无法减少目标函数”您使用的 Minimize() 函数调用是什么? 要评估的表达式是什么? 表达式中的参数是什么?它们是如何初始化的? 当您调用此函数时,JMP 日志中是否有更多可用信息?