선형 제약 조건
선형 제약 조건이란?
여러 최적화 솔버가 선형 제약 조건을 허용합니다. 선형 제약 조건은 선형 등식 또는 선형 부등식을 충족하도록 해 x에 적용되는 제한 사항입니다. 선형 제약 조건을 허용하는 솔버에는 fmincon, intlinprog, linprog, lsqlin, quadprog, 다목적 솔버 및 몇몇 Global Optimization Toolbox 솔버가 포함됩니다.
선형 부등식 제약 조건
선형 부등식 제약 조건은 A·x ≤ b 형식입니다. A가 m×n이면 n개의 성분을 갖는 변수 x에 m개의 제약 조건이 있습니다. 사용자는 m×n 행렬 A와 m개의 성분으로 구성된 벡터 b를 제공합니다.
선형 부등식 제약 조건을 A 인수 및 b 인수로 전달합니다.
예를 들어, 다음과 같은 선형 부등식을 제약 조건으로 갖는다고 가정하겠습니다.
x1 + x3 ≤ 4,
2x2 – x3 ≥ –2,
x1 – x2 + x3 – x4 ≥ 9.
여기에서 m = 3이고 n = 4입니다.
제약 조건을 아래와 같은 행렬 A와 벡터 b를 사용하여 작성합니다.
"보다 큼" 부등식을 "보다 작음" 부등식 형식으로 변환하기 위해 먼저 "보다 큼" 부등식에 –1을 곱했습니다. MATLAB® 구문에서는 다음과 같습니다.
A = [1 0 1 0;
0 -2 1 0;
-1 1 -1 1];
b = [4;2;-9];선형 제약 조건에 대해 기울기를 지정할 필요가 없습니다. 솔버가 기울기를 자동으로 계산합니다. 선형 제약 조건은 헤세 행렬에는 영향을 주지 않습니다.
사용자가 초기점 x0을 행렬로 전달하더라도 솔버는 현재 점 x를 열 벡터로서 선형 제약 조건에 전달합니다. 행렬 인수 항목을 참조하십시오.
선형 제약 조건의 더 복잡한 예를 보려면 선형 계획 설정하기, 솔버 기반 항목을 참조하십시오.
중간 반복이 선형 제약 조건을 위반할 수 있습니다. 반복이 제약 조건을 위반할 수 있음 항목을 참조하십시오.
선형 범위 제약 조건
R2026a부터, linprog 및 intlinprog 솔버에 대해 요소를 2개 가진 셀형 배열을 사용하여 하한 및 상한 선형 부등식을 지정할 수 있습니다. A 및 {bl,b}를 선형 제약 조건으로 전달하면 솔버가 다음 조건을 적용합니다.
예를 들어, 다음 부등식이 있다고 가정하겠습니다.
| –2 ≤ x1 + 2x3 ≤ 4, x2 – 3x3 ≥ –2, x1 – x2 + x3 – x4 ≤ 8. | (1) |
다음 배열을 입력하여 부등식을 지정합니다.
A = [1 0 2 0;
0 1 -3 0;
1 -1 1 -1];
bl = [-2 -2 -inf];
b = [4 inf 8]; % Pass the range constraints as {bl,b}지정되지 않은 각 하한 범위(예: 부등식의 세 번째 라인)에 대해, bl 값으로 -inf를 지정합니다. 마찬가지로, 지정되지 않은 각 상한 범위(예: 부등식의 두 번째 라인)에 대해 b 값으로 inf를 지정합니다.
셀형 배열 구문을 사용하는 대신, 각 부등식에 대해 ≤ 형식을 사용할 수 있습니다. 예를 들어, 아래의 두 부등식은 서로 같습니다.
| –2 ≤ x1 + 2x3 | (2) |
| –x1 – 2x3 ≤ 2. | (3) |
범위 제약 조건의 구문은 부등식의 첫 번째 라인에서와 같이 각 선형 표현식에서 하한과 상한이 모두 있는 경우 특히 편리합니다.
| –2 ≤ x1 + 2x3 ≤ 4. | (4) |
bl 또는 b가 문제에 적용되지 않음을 나타내려면 빈 배열(예: {bl []})을 전달하십시오.
선형 등식 제약 조건
선형 등식은 Aeq·x = beq 형식입니다. 이는 n개의 성분으로 구성된 벡터 x에 대한 m개의 방정식을 나타냅니다. 사용자는 m×n 행렬 Aeq와 m개의 성분으로 구성된 벡터 beq를 제공합니다.
선형 부등식 제약 조건에서 A 및 b 인수에 대해 설명된 것과 같은 방식으로, 선형 등식 제약 조건을 Aeq 인수 및 beq 인수로 전달합니다.