주요 콘텐츠

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

evaluate

문제의 최적화 표현식이나 목적 함수 및 제약 조건의 평가

설명

evaluate를 사용하여 한 점에서 최적화 표현식의 숫자형 값을 구하거나, 하나의 점 집합에서 최적화 문제, 방정식 문제 또는 최적화 제약 조건의 목적 함수 표현식과 제약 조건 표현식의 값을 구합니다.

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

val = evaluate(expr,pt)는 값 pt에서 최적화 표현식 expr의 값을 반환합니다.

예제

val = evaluate(cons,pt)는 값 pt에서 제약 조건 표현식 cons의 값을 반환합니다.

예제

val = evaluate(prob,pts)pts의 점에서 prob의 목적 함수와 제약 조건 함수의 값을 반환합니다.

예제

예제

모두 축소

두 변수의 최적화 표현식을 만듭니다.

x = optimvar("x",3,2);
y = optimvar("y",1,2);
expr = sum(x,1) - 2*y;

점에서 표현식을 평가합니다.

xmat = [3,-1;
    0,1;
    2,6];
sol.x = xmat;
sol.y = [4,-3];
val = evaluate(expr,sol)
val = 1×2

    -3    12

두 최적화 변수 xy를 만들고 이러한 변수로 3×2 제약 조건 표현식을 생성합니다.

x = optimvar("x");
y = optimvar("y");
cons = optimconstr(3,2);
cons(1,1) = x^2 + y^2/4 <= 2;
cons(1,2) = x^4 - y^4 <= -x^2 - y^2;
cons(2,1) = x^2*3 + y^2 <= 2;
cons(2,2) = x + y <= 3;
cons(3,1) = x*y + x^2 + y^2 <= 5;
cons(3,2) = x^3 + y^3 <= 8;

x=1, y=-1에서 제약 조건 표현식을 평가합니다. 표현식 L <= R의 값은 L - R입니다.

x0.x = 1;
x0.y = -1;
val = evaluate(cons,x0)
val = 3×2

   -0.7500    2.0000
    2.0000   -3.0000
   -4.0000   -8.0000

선형 계획법 문제 풀기

x = optimvar('x');
y = optimvar('y');
prob = optimproblem;
prob.Objective = -x -y/3;
prob.Constraints.cons1 = x + y <= 2;
prob.Constraints.cons2 = x + y/4 <= 1;
prob.Constraints.cons3 = x - y <= 2;
prob.Constraints.cons4 = x/4 + y >= -1;
prob.Constraints.cons5 = x + y >= 1;
prob.Constraints.cons6 = -x + y <= 2;

sol = solve(prob)
Solving problem using linprog.

Optimal solution found.
sol = struct with fields:
    x: 0.6667
    y: 1.3333

해에서 목적 함수의 값을 구합니다.

val = evaluate(prob.Objective,sol)
val = 
-1.1111

여러 선형 제약 조건과 비선형 제약 조건을 사용하여 최적화 문제를 만듭니다.

x = optimvar("x");
y = optimvar("y");
obj = (10*(y - x^2))^2 + (1 - x)^2;
cons1 = x^2 + y^2 <= 1;
cons2 = x + y >= 0;
cons3 = y <= sin(x);
cons4 = 2*x + 3*y <= 2.5;
prob = optimproblem(Objective=obj);
prob.Constraints.cons1 = cons1;
prob.Constraints.cons2 = cons2;
prob.Constraints.cons3 = cons3;
prob.Constraints.cons4 = cons4;

100개의 테스트 지점을 무작위로 만듭니다.

rng default % For reproducibility
xvals = randn(1,100);
yvals = randn(1,100);

점을 문제에 대한 OptimizationValues 객체로 변환합니다.

pts = optimvalues(prob,x=xvals,y=yvals);

pts에서 목적 함수와 제약 조건 함수의 값을 구합니다.

val = evaluate(prob,pts);

목적 함수 값은 val.Objective에 저장되며, 제약 조건 함수 값은 val.cons4를 통해 val.cons1에 저장됩니다. 목적 함수 값에 1을 더한 로그를 플로팅합니다.

figure
plot3(xvals,yvals,log(1 + val.Objective),"bo")

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

제약 조건 cons1cons4의 값을 플로팅합니다. 제약 조건은 양수가 아닌 값으로 계산될 때 충족된다는 사실을 기억하십시오. 양수가 아닌 값은 원으로 플로팅하고 양수 값은 x 표시로 플로팅합니다.

neg1 = val.cons1 <= 0;
pos1 = val.cons1 > 0;
neg4 = val.cons4 <= 0;
pos4 = val.cons4 > 0;
figure
plot3(xvals(neg1),yvals(neg1),val.cons1(neg1),"bo")
hold on
plot3(xvals(pos1),yvals(pos1),val.cons1(pos1),"rx")
plot3(xvals(neg4),yvals(neg4),val.cons4(neg4),"ko")
plot3(xvals(pos4),yvals(pos4),val.cons4(pos4),"gx")
hold off

Figure contains an axes object. The axes object contains 4 objects of type line. One or more of the lines displays its values using only markers

마지막 Figure에서 알 수 있듯이 evaluate를 사용하여 점의 값과 실현가능성을 모두 계산할 수 있습니다. 반대로 issatisfied는 실현가능성만 계산합니다.

두 개의 최적화 변수로 일련의 방정식을 만듭니다.

x = optimvar("x");
y = optimvar("y");
prob = eqnproblem;
prob.Equations.eq1 = x^2 + y^2/4 == 2;
prob.Equations.eq2 = x^2/4 + 2*y^2 == 2;

x=1,y=1/2에서 시작하여 연립방정식을 풉니다.

x0.x = 1;
x0.y = 1/2;
sol = solve(prob,x0)
Solving problem using fsolve.

Equation solved.

fsolve completed because the vector of function values is near zero
as measured by the value of the function tolerance, and
the problem appears regular as measured by the gradient.

<stopping criteria details>
sol = struct with fields:
    x: 1.3440
    y: 0.8799

x0sol에서 방정식의 값을 계산합니다.

vars = optimvalues(prob,x=[x0.x sol.x],y=[x0.y sol.y]);
vals = evaluate(prob,vars)
vals = 
  1×2 OptimizationValues vector with properties:

   Variables properties:
      x: [1 1.3440]
      y: [0.5000 0.8799]

   Equation properties:
    eq1: [0.9375 8.4322e-10]
    eq2: [1.2500 6.7431e-09]

첫 번째 점 x0은 방정식 eq1eq2 모두에 대해 0이 아닌 값을 가집니다. 두 번째 점 sol은 이 방정식들에 대입했을 때 0에 가까운 값을 가집니다. 이는 해에 대해 예상할 수 있는 결과입니다.

issatisfied를 사용하여 방정식 충족 정도를 구합니다.

[satisfied details] = issatisfied(prob,vars)
satisfied = 1×2 logical array

   0   1

details = 
  1×2 OptimizationValues vector with properties:

   Variables properties:
      x: [1 1.3440]
      y: [0.5000 0.8799]

   Equation properties:
    eq1: [0 1]
    eq2: [0 1]

첫 번째 점 x0은 해가 아니며 이 점에 대해 satisfied0입니다. 두 번째 점 sol은 해이며 이 점에 대해 satisfied1입니다. Equation properties를 통해 두 방정식 모두 첫 번째 점에서는 충족되지 않고 두 번째 점에서는 모두 충족됨을 확인할 수 있습니다.

입력 인수

모두 축소

최적화 표현식으로, OptimizationExpression 객체로 지정됩니다.

예: expr = 5*x+3. 여기서 xOptimizationVariable입니다.

표현식의 변수 값으로, 구조체로 지정됩니다. 구조체 pt는 다음과 같은 요구 사항을 갖습니다.

  • expr의 모든 변수는 pt의 필드 이름과 일치해야 합니다.

  • 일치하는 필드 이름의 값은 숫자형이어야 합니다.

  • pt의 필드의 크기는 expr의 대응하는 변수의 크기와 일치해야 합니다.

예를 들어, ptsolve에서 반환했으므로 최적화 문제에 대한 해가 될 수 있습니다.

예: pt.x = 3, pt.y = -5

데이터형: struct

제약 조건으로, OptimizationConstraint 객체, OptimizationEquality 객체, OptimizationInequality 객체로 지정됩니다. evaluateOptimizationValues 객체가 아니라 구조체로 지정된 점에만 이러한 제약 조건 객체를 적용합니다.

예: cons = expr1 <= expr2. 여기서 expr1expr2는 최적화 표현식입니다.

평가할 객체로, OptimizationProblem 객체 또는 EquationProblem 객체로 지정됩니다. evaluate 함수는 pts의 점에서 prob의 속성에 있는 목적 함수와 제약 조건의 값을 계산합니다.

예: prob = optimproblem(Objective=obj,Constraints=constr)

prob에 대해 계산할 점으로, 구조체 또는 OptimizationValues 객체로 지정됩니다.

  • pts의 필드 이름은 prob의 목적 함수 표현식과 제약 조건 표현식의 대응하는 변수 이름과 일치해야 합니다.

  • pts의 값은 prob의 대응하는 변수와 크기가 동일한 숫자형 배열이어야 합니다.

참고

현재, ptsprobEquationProblem 객체 또는 OptimizationProblem 객체인 경우에만 OptimizationValues 객체일 수 있습니다.

pts에 대해 구조체를 사용하는 경우 pts는 하나의 점만 포함할 수 있습니다. 즉, 여러 점을 동시에 계산하려면 ptsOptimizationValues 객체여야 합니다.

예: pts = optimvalues(prob,x=xval,y=yval)

출력 인수

모두 축소

평가 결과로, double형 또는 OptimizationValues 객체로 반환됩니다.

  • 첫 번째 입력 인수가 표현식이거나 제약 조건인 경우 val은 표현식 또는 제약 조건과 동일한 크기의 double형 배열로 반환되며 pt에서의 숫자형 값을 포함합니다.

  • 첫 번째 입력 인수가 OptimizationProblem 객체 또는 EquationProblem 객체인 경우 valOptimizationValues 객체입니다. val에는 pts의 점에서 평가된 prob의 목적 함수와 제약 조건 또는 방정식의 값이 포함되어 있습니다. ptsN개 점이 포함된 경우 val의 크기는 1×N입니다. 예를 들어, prob에 2×3 크기의 제약 조건 con이 포함되어 있고 ptsOptimizationValues 객체(N = 점 5개)인 경우 val의 크기는 1×5이고 val.Constraints.con의 크기는 2×3×5입니다.

경고

문제 기반 접근법은 목적 함수, 비선형 등식, 비선형 부등식에서 복소수 값을 지원하지 않습니다. 함수 계산에 중간값으로라도 복소수 값이 포함될 경우, 최종 결과가 올바르지 않을 수 있습니다.

세부 정보

모두 축소

버전 내역

R2017b에 개발됨

모두 확장