evaluate
문제의 최적화 표현식이나 목적 함수 및 제약 조건의 평가
설명
evaluate를 사용하여 한 점에서 최적화 표현식의 숫자형 값을 구하거나, 하나의 점 집합에서 최적화 문제, 방정식 문제 또는 최적화 제약 조건의 목적 함수 표현식과 제약 조건 표현식의 값을 구합니다.
팁
전체 워크플로는 문제 기반 최적화 워크플로 또는 방정식 풀이를 위한 문제 기반 워크플로 항목을 참조하십시오.
예제
두 변수의 최적화 표현식을 만듭니다.
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
두 최적화 변수 x 및 y를 만들고 이러한 변수로 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;
점 , 에서 제약 조건 표현식을 평가합니다. 표현식 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")
제약 조건 cons1과 cons4의 값을 플로팅합니다. 제약 조건은 양수가 아닌 값으로 계산될 때 충족된다는 사실을 기억하십시오. 양수가 아닌 값은 원으로 플로팅하고 양수 값은 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에서 알 수 있듯이 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;
에서 시작하여 연립방정식을 풉니다.
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
점 x0 및 sol에서 방정식의 값을 계산합니다.
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은 방정식 eq1 및 eq2 모두에 대해 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은 해가 아니며 이 점에 대해 satisfied는 0입니다. 두 번째 점 sol은 해이며 이 점에 대해 satisfied는 1입니다. Equation properties를 통해 두 방정식 모두 첫 번째 점에서는 충족되지 않고 두 번째 점에서는 모두 충족됨을 확인할 수 있습니다.
입력 인수
최적화 표현식으로, OptimizationExpression 객체로 지정됩니다.
예: expr = 5*x+3. 여기서 x는 OptimizationVariable입니다.
표현식의 변수 값으로, 구조체로 지정됩니다. 구조체 pt는 다음과 같은 요구 사항을 갖습니다.
expr의 모든 변수는pt의 필드 이름과 일치해야 합니다.일치하는 필드 이름의 값은 숫자형이어야 합니다.
pt의 필드의 크기는expr의 대응하는 변수의 크기와 일치해야 합니다.
예를 들어, pt는 solve에서 반환했으므로 최적화 문제에 대한 해가 될 수 있습니다.
예: pt.x = 3, pt.y = -5
데이터형: struct
제약 조건으로, OptimizationConstraint 객체, OptimizationEquality 객체, OptimizationInequality 객체로 지정됩니다. evaluate는 OptimizationValues 객체가 아니라 구조체로 지정된 점에만 이러한 제약 조건 객체를 적용합니다.
예: cons = expr1 <= expr2. 여기서 expr1 및 expr2는 최적화 표현식입니다.
평가할 객체로, OptimizationProblem 객체 또는 EquationProblem 객체로 지정됩니다. evaluate 함수는 pts의 점에서 prob의 속성에 있는 목적 함수와 제약 조건의 값을 계산합니다.
예: prob = optimproblem(Objective=obj,Constraints=constr)
prob에 대해 계산할 점으로, 구조체 또는 OptimizationValues 객체로 지정됩니다.
pts의 필드 이름은prob의 목적 함수 표현식과 제약 조건 표현식의 대응하는 변수 이름과 일치해야 합니다.pts의 값은prob의 대응하는 변수와 크기가 동일한 숫자형 배열이어야 합니다.
참고
현재, pts는 prob가 EquationProblem 객체 또는 OptimizationProblem 객체인 경우에만 OptimizationValues 객체일 수 있습니다.
pts에 대해 구조체를 사용하는 경우 pts는 하나의 점만 포함할 수 있습니다. 즉, 여러 점을 동시에 계산하려면 pts가 OptimizationValues 객체여야 합니다.
예: pts = optimvalues(prob,x=xval,y=yval)
출력 인수
평가 결과로, double형 또는 OptimizationValues 객체로 반환됩니다.
첫 번째 입력 인수가 표현식이거나 제약 조건인 경우
val은 표현식 또는 제약 조건과 동일한 크기의 double형 배열로 반환되며pt에서의 숫자형 값을 포함합니다.첫 번째 입력 인수가
OptimizationProblem객체 또는EquationProblem객체인 경우val은OptimizationValues객체입니다.val에는pts의 점에서 평가된prob의 목적 함수와 제약 조건 또는 방정식의 값이 포함되어 있습니다.pts에N개 점이 포함된 경우val의 크기는 1×N입니다. 예를 들어,prob에 2×3 크기의 제약 조건con이 포함되어 있고pts가OptimizationValues객체(N= 점 5개)인 경우val의 크기는 1×5이고val.Constraints.con의 크기는 2×3×5입니다.
경고
문제 기반 접근법은 목적 함수, 비선형 등식, 비선형 부등식에서 복소수 값을 지원하지 않습니다. 함수 계산에 중간값으로라도 복소수 값이 포함될 경우, 최종 결과가 올바르지 않을 수 있습니다.
세부 정보
점 pt에서 제약 조건 표현식이 다음과 같을 때:
제약 조건이
L <= R인 경우 제약 조건 값은evaluate(L,pt)–evaluate(R,pt)입니다.제약 조건이
L >= R인 경우 제약 조건 값은evaluate(R,pt)–evaluate(L,pt)입니다.제약 조건이
L == R인 경우 제약 조건 값은abs(evaluate(L,pt) – evaluate(R,pt))입니다.
일반적으로 제약 조건 값이 허용오차보다 작거나 같은 경우 그 점에서 제약 조건이 충족(또는 실현 가능)되는 것으로 간주됩니다.
버전 내역
R2017b에 개발됨evaluate 함수는 이제 다음 객체에 적용됩니다.
예제는 방정식의 표현식 계산하기 항목을 참조하십시오.
evaluate 함수는 이제 OptimizationProblem 객체의 목적 함수 및 제약 조건 표현식에 적용됩니다. 계산 점이 OptimizationValues 객체로 전달되는 경우, 함수는 객체의 모든 점에서 표현식을 계산합니다. 예제는 최적화 문제 값 평가하기 항목을 참조하십시오.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)