Main Content

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

複数開始点ソルバーを使用した非線形関数の最小化 (問題ベース)

[–1,2] から開始して、範囲 -5x,y5 で関数 peaks の局所的最小値を求めます。

x = optimvar("x",LowerBound=-5,UpperBound=5);
y = optimvar("y",LowerBound=-5,UpperBound=5);
x0.x = -1;
x0.y = 2;
prob = optimproblem(Objective=peaks(x,y));
opts = optimoptions("fmincon",Display="none");
[sol,fval] = solve(prob,x0,Options=opts)
sol = struct with fields:
    x: -3.3867
    y: 3.6341

fval = 1.1224e-07

GlobalSearch ソルバーを使用して、より良い解を求めようとします。このソルバーは fmincon を複数回実行しますが、それによってより良い解が得られる可能性があります。

ms = GlobalSearch;
[sol2,fval2] = solve(prob,x0,ms)
Solving problem using GlobalSearch.

GlobalSearch stopped because it analyzed all the trial points.

All 15 local solver runs converged with a positive local solver exit flag.
sol2 = struct with fields:
    x: 0.2283
    y: -1.6255

fval2 = -6.5511

GlobalSearch は、より良い (小さい) 目的関数値をもつ解を求めます。終了メッセージは、ローカル ソルバーの fmincon が 15 回実行されていることを示しています。返された解は、約 –6.5511 の目的関数値をもちます。この値は、最初の解における値である 1.1224e–07 より小さくなります。

参考

| | |

関連するトピック