このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
particleswarm
を使用した関数の最適化、問題ベース
この例では、目的が関数ファイルであり、その内容が不明である可能性がある場合 (「ブラック ボックス」関数) に、問題ベースのアプローチで粒子群を使用して関数を最小化する方法を示します。この例を実行すると、最小化する関数 dejong5fcn(x)
が含まれます。
dejong5fcn
2 次元最適化変数 x
を作成します。dejong5fcn
関数は変数が行ベクトルであると想定しているため、x
を 2 要素の行ベクトルとして指定します。
x = optimvar("x",1,2);
dejong5fcn
を目的関数として使用するには、 fcn2optimexpr
を使用して関数を最適化式に変換します。
fun = fcn2optimexpr(@dejong5fcn,x);
目的関数 fun
を使用して最適化問題を作成します。
prob = optimproblem("Objective",fun);
すべてのコンポーネントの変数境界を -50 から 50 に設定します。スカラー境界を指定すると、ソフトウェアは境界をすべての変数に拡張します。
x.LowerBound = -50; x.UpperBound = 50;
particleswarm
ソルバーを指定して問題を解きます。
rng default % For reproducibility [sol,fval] = solve(prob,"Solver","particleswarm")
Solving problem using particleswarm. Optimization ended: relative change in the objective value over the last OPTIONS.MaxStallIterations iterations is less than OPTIONS.FunctionTolerance.
sol = struct with fields:
x: [-31.9751 -31.9719]
fval = 0.9980
参考
particleswarm
| fcn2optimexpr
| solve