最適化ツールボックス (optimization toolbox) の改訂後のライブ エディター ツールの使用方法

最適化ツールボックス (optimization toolbox) 改訂後のライブ エディター ツールの使用方法は? 最初はあまり話したくなかったのですが、よく聞かれるので使い方を簡単に説明します。

多くの人が新しいバージョンの MATLAB をダウンロードして、いつものように最適化ツールボックスをクリックしましたが、使い慣れた最適化 APP インターフェイスはポップアップせず、代わりにこのような警告が出ましたね。ライブ エディター タスクとは何ですか? ?

ライブ エディターの作成を最適化する

最初にライブ スクリプトを作成します。

次に、[ライブ エディター] -> [タスク] -> [オプティマイザー] をクリックします。

次に、次のようなものが表示されます。

最初に問題ベースについて話しましょう。左側の問題ベースの方法をクリックしてください。


問題に基づく単純な最適化 (最大値を求める)

最も多くの値を必要とする関数は次のとおりであるとします。

5.*sin(x)+6.*cos(y).^2

制約あり:

x^2+y^2<=4

最適化の出発点は次のとおりです。

x=1;y=0;

まず最初に、x と y の 2 つの変数があるため、前に 2 つの変数を定義する必要があります。変数を追加するには、右端の + 記号をクリックします。

[追加] をクリックして制約を追加します。

デフォルトの目標と制約の灰色の言葉は、書式設定のプロンプトを埋めているだけであり、実際には使用できないことに注意してください。

目標を最大値に設定し、目標と制約を変更します。

すべての設定が完了したら、下の <Solve Problem> をクリックして解決を開始します。

ソリューションの結果が右側に表示されます。

同時に、ワークスペースにはソリューションの結果も表示されます。

変数の値は、ソリューションを通じて取得できます。(変数名):

solution.x

% ans =
%     1.5708

下矢印をクリックして、プロセス全体で自動的に生成されたコードを取得します。

コードとコメントが適切に記述されていることがわかります。

% 创建优化变量
x3 = optimvar("x");
y3 = optimvar("y");

% 设置求解器的初始起点
initialPoint.x = ones(size(x3));
initialPoint.y = zeros(size(y3));

% 创建问题
problem = optimproblem("ObjectiveSense","Maximize");

% 定义问题目标
problem.Objective = 5.*sin(x3)+6.*cos(y3).^2;

% 定义问题约束
problem.Constraints = x3^2+y3^2 <= 4;

% 显示问题信息
show(problem);

% 求解问题
[solution,objectiveValue,reasonSolverStopped] = solve(problem,initialPoint);

% 显示结果
solution
reasonSolverStopped
objectiveValue

% 清除变量
clearvars x3 y3 initialPoint reasonSolverStopped objectiveValue

特殊機能最適化あり

ゴールと制約の両方に対してローカル関数または関数ファイルを選択できます. 関数ファイルを選択した場合, 編集したm-ファイルを直接選択できます. ローカル関数を選択した場合, 実装の最後にローカル関数をカスタマイズできます.編集者:


ソルバーベース

メソッド選択の最初にソルバーベースを選択すると、次のようになります。

この選択は非常に面倒です. 公式の例で直接話しましょう. 最初に, 初期値とパラメータ値を定義するために任意の場所でコードを実行します:

x0 = [2;1];
a = 100;

今回は、ターゲット関数と制約は関数ファイル、ローカル関数、または関数ハンドルのみであるため、ここでは便宜上、リアルタイム エディターのテキストの最後にローカル関数を作成します。

その後、さまざまな設定があります。

ソルバーを選択して <Run Section> をクリックして実行するか、ソルバーの右上隅にある 3 つのドットをクリックしてから <Run Section> をクリックして実行します。

自動生成コード:

% 将固定参数传递给 objfun
objfun = @(x)objectiveFcn(x,a);

% 设置非默认求解器选项
options = optimoptions("fmincon","PlotFcn","optimplotfvalconstr");

% 求解
[solution,objectiveValue] = fmincon(objfun,x0,[],[],[],[],[],[],...
    @constraintFcn,options);

% 清除变量
clearvars objfun options

プロセス描画を実行します。


解決結果:

solution
% solution =
%    1.1413
%    1.3029

objectiveValue
% objectiveValue =
%    0.0200

[ccons,ceqcons] = constraintFcn(solution)
% ccons =
%   -2.0000   -0.0000
% ceqcons =
%     []

それに比べて、問題ベースの方法は使いやすいです。


公式例公開

警告インターフェイスの左側または右側にあるメソッドをクリックして、公式の例から飛び出します。

次のようになります。

おすすめ

転載: blog.csdn.net/slandarer/article/details/130164106