これまでのところ、メソッド「Trust-ncg」の最小化関数を理解していますが、「メソッド固有」パラメータ「max_trust_radius」は新しいステップ最適化の最大値です。 しかし、私は奇妙な動作を経験します。 私は博士号のデータで作業し、私は(信頼NCG方法で)機能を最小限に呼び出すコードを持って 通過パラメータtrust-ncgメソッドによる最小化関数は、max_trust_radiusより大きい値を提案しています
{
'initial_trust_radius':0.1,
'max_trust_radius':1,
'eta':0.15,
'gtol':1e-5,
'disp': True
}
私はとしての機能を最小限に呼び出す:
res = minimize(bbox, x0, method='trust-ncg',jac=bbox_der, hess=bbox_hess,options=opt_par)
bbox
は目的関数を評価する関数ですx0
は、初期推定bbox_der
がopt_par
パラメータと上記辞書であるbbox_hess
ヘッセ関数の勾配関数です。
Bboxはシミュレーションコードを呼び出してデータを取得します。それは動作します:前後に行くことを最小限に抑え、新しい値を提案し、bboxはシミュレーションを呼び出します。
私は奇妙な問題が発生するまで、すべてうまく動作します。 "x"ベクトルには8つの値が含まれています。私は反復のうちの1つが最後の値が1より大きいことを認識しています。 max_trust_radiusによると、1より小さいはずですが、1.0621612802208713e + 00です bboxは値シミュレーションプログラムを呼び出すときに1より大きい、1より大きい値を受け取ることができないという制約があります。
私はscipyコードを見つけて、バグや何かを見つけることができるかどうかを試しました間違っているが、私はそうではない。
私の主な懸念事項は以下のとおりです。
私の理解では、scipyのダウンロードのバグは、新しい値がmax_trust_radiusより大きいようなコードを最小限に抑えるがあるということです。
値が1より大きくなるのを避けるために値を操作または制御するにはどうすればよいですか?
問題を調査する方法がありますか?