Main Content

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

OptimizationInequality

説明

OptimizationInequalityオブジェクトには,OptimizationVariableオブジェクトまたはOptimizationExpressionオブジェクトに関する不等式制約が含まれます。不等式制約では比較演算子<=または>=を使用します。

1 つのステートメントによって 1 つの不等式配列を表すことができます。たとえば、行列変数xの各行の和を 1 以下とする不等式を、この 1 つのステートメントで表すことができます。

constrsum = sum(x,2) <= 1

OptimizationInequalityオブジェクトは、制約としてOptimizationProblemで使用します。

ヒント

完全なワークフローについては、問題ベースの最適化ワークフローを参照してください。

作成

比較演算子<=または>=のある最適化式を使用して、不等式を作成します。

ドット表記を使用して、最適化問題のConstraintsプロパティに不等式を含めます。

prob = optimproblem; x = optimvar('x',4,6); SumLessThanOne = sum(x,2) <= 1; prob.Constraints.SumLessThanOne = SumLessThanOne;

optimineqまたはoptimconstrを使用して、空の最適化不等式を作成することもできます。通常は、その後、ループで不等式を設定します。例については、ループでの不等式の作成を参照してください。ただし、問題の定式化の効率を重視する場合は、ループで不等式を設定しないでください。詳細は、効率的な最適化問題の作成を参照してください。

プロパティ

すべて展開する

インデックスの名前。string の cell 配列または文字ベクトルを指定します。インデックス名の使用法の詳細は、最適化変数の名前付きインデックスを参照してください。

データ型:cell

このプロパティは読み取り専用です。

オブジェクトの最適化変数。OptimizationVariableオブジェクトの構造体として指定します。

データ型:struct

オブジェクト関数

infeasibility 点における制約違反
show 最適化オブジェクトの情報表示
write 最適化オブジェクトの説明の保存

すべて折りたたむ

x という名前の 4 行 6 列の最適化変数行列を作成します。

x = optimvar('x',4,6);

xの各行の和を1以下とする不等式を作成します。

constrsum = sum(x,2) <= 1
constrsum = 4x1 Linear OptimizationInequality array with properties: IndexNames: {{} {}} Variables: [1x1 struct] containing 1 OptimizationVariable See inequality formulation with show.

不等式を表示します。

show(constrsum)
(1, 1) x(1, 1) + x(1, 2) + x(1, 3) + x(1, 4) + x(1, 5) + x(1, 6) <= 1 (2, 1) x(2, 1) + x(2, 2) + x(2, 3) + x(2, 4) + x(2, 5) + x(2, 6) <= 1 (3, 1) x(3, 1) + x(3, 2) + x(3, 3) + x(3, 4) + x(3, 5) + x(3, 6) <= 1 (4, 1) x(4, 1) + x(4, 2) + x(4, 3) + x(4, 4) + x(4, 5) + x(4, 6) <= 1

最適化問題に不等式を含めるには、ドット表記を使用して、Constraintsプロパティをconstrsumに設定します。

prob = optimproblem; prob.Constraints.constrsum = constrsum
prob = OptimizationProblem with properties: Description: '' ObjectiveSense: 'minimize' Variables: [1x1 struct] containing 1 OptimizationVariable Objective: [0x0 OptimizationExpression] Constraints: [1x1 struct] containing 1 OptimizationConstraint See problem formulation with show.

2 要素変数xが多数の円板の交差部分になければならないという制約を作成します。円板の中心と半径は、配列centersおよびradiiに格納されています。

x = optimvar('x',1,2); centers = [1 -2;3 -4;-2 3]; radii = [6 7 8]; constr = optimineq(length(radii));fori = 1:length(constr) constr(i) = sum((x - centers(i,:)).^2) <= radii(i)^2;end

不等式を表示します。

show(constr)
arg_LHS <= arg_RHS where: arg1 = zeros([3, 1]); arg1(1) = sum((x - extraParams{1}).^2); arg1(2) = sum((x - extraParams{2}).^2); arg1(3) = sum((x - extraParams{3}).^2); arg_LHS = arg1(:); arg1 = zeros([3, 1]); arg1(1) = 36; arg1(2) = 49; arg1(3) = 64; arg_RHS = arg1(:); extraParams{1}: 1 -2 extraParams{2}: 3 -4 extraParams{3}: -2 3

ループを使用する代わりに、変数に対する行列演算を使用して、同じ制約を作成できます。

constr2 = sum(([x;x;x] - centers).^2,2) <= radii'.^2;

ループでの不等式の作成は、行列演算による不等式の作成より多くの時間を要することがあります。

バージョン履歴

R2019b で導入