このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
packfcn
説明
は、目的関数 objconstr
= packfcn(obj
,nlconst
)obj
と非線形制約関数 nlconst
を関数 objconstr
に結合します。関数 objconstr(x)
は、結合された surrogateopt
目的関数と制約関数に適した構造を返します。surrogateopt
構造構文と他のソルバー間の変換については、surrogateopt 形式と他のソルバー形式の間で非線形制約を変換する を参照してください。
例
目的と制約を組み合わせる
例 [最適化] ライブ エディター タスクまたはソルバーを使用した制約付き非線形問題 の目的と制約を surrogateopt
に適した形式に結合します。
目的関数を匿名関数 ros(x)
として作成します。
ros = @(x)100*(x(2) - x(1)^2)^2 + (1 - x(1))^2;
この例の最後に表示される非線形制約ヘルパー関数 unitdisk
を作成します。ヘルパー関数を unitdisk.m
という名前で現在のフォルダーに保存します。
目的関数と非線形制約関数を surrogateopt
に適した 1 つの関数に結合します。
objconstr = packfcn(ros,@unitdisk);
境界を指定し、surrogateopt
を使用して問題を解きます。
lb = [-2 -2]; ub = -lb; [x,fval] = surrogateopt(objconstr,lb,ub)
surrogateopt stopped because it exceeded the function evaluation limit set by 'options.MaxFunctionEvaluations'.
x = 1×2
0.7865 0.6183
fval = 0.0456
次のコードは、補助関数 unitdisk
を作成します。
function [c,ceq] = unitdisk(x) c = x(1)^2 + x(2)^2 - 1; ceq = [ ]; end
入力引数
obj
— 目的関数
関数ハンドル | 関数名
関数ハンドルまたは関数名として指定される目的関数。
結果の関数 objconstr
にはフィールド Fval
が含まれます。
objconstr.Fval = obj
データ型: char
| string
| function_handle
nlconst
— 非線形制約関数
関数ハンドル | 関数名
関数ハンドルまたは関数名として指定される非線形制約関数。一般に、非線形制約関数は 2 つの出力を返します。
[c,ceq] = nlconst(x)
出力 c
は、エントリが不等式制約 c(x) ≤ 0 を表すベクトルまたは配列です。出力 ceq
は、エントリが不等式制約 c(x) = 0 を表すベクトルまたは配列です。packfcn
は ceq
出力を破棄します。
結果の関数 objconstr
にはフィールド Ineq
が含まれます。
objconstr.Ineq = c
データ型: char
| string
| function_handle
出力引数
objconstr
— 目的関数と制約関数の組み合わせ
関数ハンドル
目的関数と制約関数を組み合わせたもので、関数ハンドルとして返されます。関数 objconstr(x)
は、フィールド Fval
と Ineq
を持つ構造体を返します。
objconstr.Fval(x)
は目的関数obj(x)
です。objconstr.Ineq(x)
は非線形不等式制約関数c(x)
であり、nlconst(x)
の最初の出力です。
バージョン履歴
R2020a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)