Main Content

OptimizationEquality

등식 및 등식 제약 조건

R2019b 이후

설명

OptimizationEquality 객체는 OptimizationVariable 객체 또는 OptimizationExpression 객체에 대한 등식과 등식 제약 조건을 포함합니다. 각 등식에는 비교 연산자 ==가 사용됩니다.

단일 명령문은 등식으로 구성된 하나의 배열을 나타낼 수 있습니다. 예를 들어 다음과 같은 단일 명령문으로 행렬 변수 x의 각 행의 합이 1인 등식을 표현할 수 있습니다.

constrsum = sum(x,2) == 1

OptimizationEquality 객체는 OptimizationProblem의 제약 조건 또는 EquationProblem의 방정식으로 사용할 수 있습니다.

전체 워크플로는 문제 기반 최적화 워크플로 또는 방정식 풀이를 위한 문제 기반 워크플로 항목을 참조하십시오.

생성

최적화 표현식에 비교 연산자 ==를 사용하여 등식을 만듭니다.

점 표기법을 사용하여 최적화 문제의 Constraints 속성 또는 방정식 문제의 Equations 속성에 등식을 포함시킵니다.

prob = optimproblem;
x = optimvar('x',4,6);
SumToOne = sum(x,2) == 1;
prob.Constraints.SumToOne = SumToOne;
% Or for an equation problem:
eqprob = eqnproblem;
eqprob.Equations.SumToOne = SumToOne;

optimeq 또는 optimconstr을 사용하여 빈 최적화 등식을 만들 수도 있습니다. 일반적으로 그 다음에는 루프에서 등식을 설정합니다. 예제는 루프에서 등식 만들기 항목을 참조하십시오. 하지만 문제를 최대한 효율적으로 정식화하려면 루프에서 등식을 설정하지 마십시오. Create Efficient Optimization Problems 항목을 참조하십시오.

속성

모두 확장

인덱스 이름으로, string형 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 인덱스 이름 사용에 관한 자세한 내용은 Named Index for Optimization Variables 항목을 참조하십시오.

데이터형: cell

읽기 전용 속성입니다.

객체의 최적화 변수로, OptimizationVariable 객체의 구조체로 지정됩니다.

데이터형: struct

객체 함수

infeasibilityConstraint violation at a point
showoptimization 객체에 대한 정보 표시
writeSave optimization object description

예제

모두 축소

이름이 x인 4×6 최적화 변수 행렬을 만듭니다.

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

x의 각 행의 합이 1인 등식을 만듭니다.

constrsum = sum(x,2) == 1
constrsum = 
  4x1 Linear OptimizationEquality array with properties:

    IndexNames: {{}  {}}
     Variables: [1x1 struct] containing 1 OptimizationVariable

  See equality 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.

마찬가지로, 방정식 문제에 등식을 포함하기 위해 점 표기법을 사용하여 Constraints 속성을 constrsum으로 설정합니다.

eqnprob = eqnproblem;
eqnprob.Equations.constrsum = constrsum
eqnprob = 
  EquationProblem with properties:

    Description: ''
      Variables: [1x1 struct] containing 1 OptimizationVariable
      Equations: [1x1 struct] containing 1 OptimizationEquality

  See problem formulation with show.

OptimizationEquality 객체를 만듭니다.

eq1 = optimeq;

x라는 이름의 5×5 최적화 변수 배열을 만듭니다.

x = optimvar('x',5,5);

x의 행 i의 합이 i2인 등식을 만듭니다.

for i = 1:size(x,1)
    eq1(i) = sum(x(i,:)) == i^2;
end

결과로 생성된 등식을 표시합니다.

show(eq1)
(1, 1)

  x(1, 1) + x(1, 2) + x(1, 3) + x(1, 4) + x(1, 5) == 1

(1, 2)

  x(2, 1) + x(2, 2) + x(2, 3) + x(2, 4) + x(2, 5) == 4

(1, 3)

  x(3, 1) + x(3, 2) + x(3, 3) + x(3, 4) + x(3, 5) == 9

(1, 4)

  x(4, 1) + x(4, 2) + x(4, 3) + x(4, 4) + x(4, 5) == 16

(1, 5)

  x(5, 1) + x(5, 2) + x(5, 3) + x(5, 4) + x(5, 5) == 25

최적화 문제에서 제약 조건으로 eq1을 사용하기 위해 점 표기법을 사용하여 eq1Constraints 속성으로 설정합니다.

prob = optimproblem;
prob.Constraints.eq1 = eq1;

마찬가지로, 방정식 문제에서 일련의 방정식으로 eq1을 사용하기 위해 점 표기법을 사용하여 eq1Equations 속성으로 설정합니다.

eqprob = eqnproblem;
eqprob.Equations.eq1 = eq1;

버전 내역

R2019b에 개발됨