最小化函數錯誤:“收斂失敗:無法減少目標函數”我正在 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 日誌中是否有更多可用資訊?