Main Content

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

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

参考

| |

関連するトピック