[OK]を、のはoptimoptions
機能は、内部的に何をするかを見てみましょう:
open optimoptions
機能のコア部分は、以下の行で表されるように思え:
options = optim.options.createSolverOptions(solverName, varargin{:});
はのは、見てみましょうcreateSolverOptions
の機能もご覧ください:
open optim.options.createSolverOptions
ビンゴ!私たちはここにグローバル最適化ツールボックスのインストールがあるかどうかを確認
:コード内のコメントは、なぜoptimoptions
理由を明らかにし、ループ内で複数回呼び出された場合、全体的なパフォーマンスに大きな影響を与える可能性があります。さらに、これらのツールボックスファイルはこの関数の呼び出しの間に削除されないものとします。
ここでライセンスチェックを実行して、ユーザーがグローバル最適化ツールボックスオプションのセットを作成できるかどうかを確認することはありません。ライセンスチェックが正しいことを確認するには、この関数が呼び出されるたびにライセンスをチェックする必要があります。 optimoptionsがタイトなループで複数回呼び出されると、これは非常に高価です。
このように、ユーザーがグローバル最適化ツールボックスをインストールしてもライセンスは使用できない場合は、ライセンスマネージャーがエラーを投げます。
オプションオブジェクトの作成プロセスは、コードに含まれているライセンスチェックによって大幅に遅くなります。その上に、optimoptions
関数とそのサブ関数は、多くのtry-catch
ブロック、regex
の抽出と変換、for loops
の中に含まれています。