主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

問題ベースのアプローチでの追加パラメーターの受け渡し

最適化問題では,目的関数または制約関数は独立変数のほかにパラメーターをもつことがあります。追加パラメーターではデータを使用したり,最適化中に変化しない変数を表したりできます。

問題ベースのアプローチでこれらのパラメーターを含めるには,単に目的関数または制約関数のワークスペース変数を参照します。

渡されたデータを使用した最小二乗問題

たとえば,particle.matファイルに行列Cおよびdがあり,これらの行列が問題のデータを表しているとします。データをワークスペースに読み込みます。

负载粒子

行列のサイズを表示します。

disp(大小(C))
2000 400
disp(大小(d))
2000年1

ベクトルC * xの形成に適切なサイズの最適化変数xを作成します。

x = optimvar (“x”、大小(C, 2));

xが非負であるという制約の下でC * x - dの各項の二乗和を最小化する最適化問題を作成します。

x.LowerBound = 0;概率= optimproblem;expr = sum((C*x - d).^2);概率。目标= expr;

目的関数の式でデータCおよびdを参照するだけで,これらのデータを問題に含めることができます。問題を解きます。

[溶胶,fval exitflag、输出]=解决(问题)
使用lsqlin解决问题。找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
索尔=结构体字段:x (x1 400双):
fval = 22.5795
exitflag = OptimalSolution
输出=结构体字段:消息:“……' algorithm: 'interior-point' firstderopt: 9.9673e-07 construct: 0 iterations: 9 linearsolver: 'sparse' cgiterations: [] solver: 'lsqlin'

追加パラメーターを使用した非線形問題

非線形問題に同じアプローチを使用します。たとえば,複数の変数の目的関数があり、これらの変数の一部が最適化の固定データであるとします。

类型parameterfun
函数y = parameterfun (x, a, b, c) y = x (a - b * (1) ^ 2 + x (1) ^ 4/3) * x (1) ^ 2 + x (1) * (2) + (- c + c * x (2) ^ 2) * x (2) ^ 2;

この目的関数では,xは2要素ベクトル,一个b,およびcはスカラーパラメーターです。最適化変数を作成し,ワークスペースでパラメーター値を割り当てます。

= 4;b = 2.1;c = 4;x = optimvar (“x”,2);

最適化問題を作成します。この目的関数はxの有理関数であるため,目的を最適化変数として指定できます。点x0。x= [1/2;1/2]から始めて問題を解きます。

概率= optimproblem;概率。目标= parameterfun (x, a, b, c);x0。x= [1/2;1/2]; [sol,fval] = solve(prob,x0)
使用fminunc解决问题。局部最小值。由于梯度的大小小于最优性公差的值,优化完成。
索尔=结构体字段:x (2 x1双):
fval = -1.0316

parameterfunがサポート対象関数で構成されていない場合は,parameterfunを最適化式に変換して,その式を目的として設定します。詳細は,最適化変数および式でサポートされる演算非線形関数から最適化式への変換を参照してください。

expr = fcn2optimexpr (@parameterfun x, a, b, c);概率。目标= expr;[溶胶,fval] =解决(x0概率)
使用fminunc解决问题。局部最小值。由于梯度的大小小于最优性公差的值,优化完成。
索尔=结构体字段:x (2 x1双):
fval = -1.0316

The MathWorks, Inc.版权所有

参考

関連するトピック