주요 콘텐츠

선형 제약 조건

선형 제약 조건이란?

여러 최적화 솔버가 선형 제약 조건을 허용합니다. 선형 제약 조건은 선형 등식 또는 선형 부등식을 충족하도록 해 x에 적용되는 제한 사항입니다. 선형 제약 조건을 허용하는 솔버에는 fmincon, intlinprog, linprog, lsqlin, quadprog, 다목적 솔버 및 몇몇 Global Optimization Toolbox 솔버가 포함됩니다.

선형 부등식 제약 조건

선형 부등식 제약 조건은 A·x ≤ b 형식입니다. Am×n이면 n개의 성분을 갖는 변수 xm개의 제약 조건이 있습니다. 사용자는 m×n 행렬 Am개의 성분으로 구성된 벡터 b를 제공합니다.

선형 부등식 제약 조건을 A 인수 및 b 인수로 전달합니다.

예를 들어, 다음과 같은 선형 부등식을 제약 조건으로 갖는다고 가정하겠습니다.

x1 + x3 ≤ 4,
2x2x3 ≥ –2,
x1x2 + x3x4 ≥ 9.

여기에서 m = 3이고 n = 4입니다.

제약 조건을 아래와 같은 행렬 A와 벡터 b를 사용하여 작성합니다.

A=[101002101111],b=[429].

"보다 큼" 부등식을 "보다 작음" 부등식 형식으로 변환하기 위해 먼저 "보다 큼" 부등식에 –1을 곱했습니다. MATLAB® 구문에서는 다음과 같습니다.

A = [1 0 1 0;
    0 -2 1 0;
    -1 1 -1 1];
b = [4;2;-9];

선형 제약 조건에 대해 기울기를 지정할 필요가 없습니다. 솔버가 기울기를 자동으로 계산합니다. 선형 제약 조건은 헤세 행렬에는 영향을 주지 않습니다.

사용자가 초기점 x0을 행렬로 전달하더라도 솔버는 현재 점 x를 열 벡터로서 선형 제약 조건에 전달합니다. 행렬 인수 항목을 참조하십시오.

선형 제약 조건의 더 복잡한 예를 보려면 선형 계획 설정하기, 솔버 기반 항목을 참조하십시오.

중간 반복이 선형 제약 조건을 위반할 수 있습니다. 반복이 제약 조건을 위반할 수 있음 항목을 참조하십시오.

선형 범위 제약 조건

R2026a부터, linprogintlinprog 솔버에 대해 요소를 2개 가진 셀형 배열을 사용하여 하한 및 상한 선형 부등식을 지정할 수 있습니다. A{bl,b}를 선형 제약 조건으로 전달하면 솔버가 다음 조건을 적용합니다.

blAxb.

예를 들어, 다음 부등식이 있다고 가정하겠습니다.

–2 ≤ x1 + 2x3 ≤ 4,
x2 – 3x3 ≥ –2,
x1x2 + x3x4 ≤ 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 행렬 Aeqm개의 성분으로 구성된 벡터 beq를 제공합니다.

선형 부등식 제약 조건에서 Ab 인수에 대해 설명된 것과 같은 방식으로, 선형 등식 제약 조건을 Aeq 인수 및 beq 인수로 전달합니다.

참고 항목

도움말 항목