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 = 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
는 실현가능성만 계산합니다.
입력 인수
expr
— 최적화 표현식
OptimizationExpression
객체
최적화 표현식으로, OptimizationExpression
객체로 지정됩니다.
예: expr = 5*x+3
. 여기서 x
는 OptimizationVariable
입니다.
pt
— 표현식의 변수 값
구조체
표현식의 변수 값으로, 구조체로 지정됩니다. 구조체 pt
는 다음과 같은 요구 사항을 갖습니다.
expr
의 모든 변수는pt
의 필드 이름과 일치해야 합니다.일치하는 필드 이름의 값은 숫자형이어야 합니다.
pt
의 필드의 크기는expr
의 대응하는 변수의 크기와 일치해야 합니다.
예를 들어, pt
는 solve
에서 반환했으므로 최적화 문제에 대한 해가 될 수 있습니다.
예: pt.x = 3, pt.y = -5
데이터형: struct
prob
— 최적화 문제
OptimizationProblem
객체
최적화 문제로, OptimizationProblem
객체로 지정됩니다. optimproblem
을 사용하여 prob
를 만듭니다. evaluate
함수는 pts
의 점에서 prob
의 속성에 있는 목적 함수와 제약 조건의 값을 계산합니다.
예: prob = optimproblem(Objective=obj,Constraints=constr)
pts
— prob
에 대해 계산할 점
구조체 | OptimizationValues
객체
prob
에 대해 계산할 점으로, 구조체 또는 OptimizationValues
객체로 지정됩니다.
pts
의 필드 이름은prob
의 목적 함수 표현식과 제약 조건 표현식의 대응하는 변수 이름과 일치해야 합니다.pts
의 값은prob
의 대응하는 변수와 크기가 동일한 숫자형 배열이어야 합니다.
pts
에 대해 구조체를 사용하는 경우 pts
는 하나의 점만 포함할 수 있습니다. 즉, 여러 점을 동시에 계산하려면 pts
가 OptimizationValues
객체여야 합니다.
예: pts = optimvalues(prob,x=xval,y=yval)
출력 인수
val
— 평가 결과
double형 | OptimizationValues
객체
평가 결과로, double형 또는 OptimizationValues
객체로 반환됩니다. val
이 double형인 경우 pt
에서의 표현식의 숫자형 값을 포함합니다. val
이 OptimizationValues
객체인 경우, pts
의 점에서 계산된 prob
의 목적 함수와 제약 조건 함수의 값을 포함합니다.
경고
문제 기반 접근법은 목적 함수, 비선형 등식, 비선형 부등식에서 복소수 값을 지원하지 않습니다. 함수 계산에 중간값으로라도 복소수 값이 포함될 경우, 최종 결과가 올바르지 않을 수 있습니다.
세부 정보
제약 조건 표현식 값
점 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에 개발됨R2024a: 여러 점에서 최적화 문제의 목적 함수 표현식과 제약 조건 표현식 계산하기
evaluate
함수는 이제 OptimizationProblem
객체의 목적 함수 및 제약 조건 표현식에 적용됩니다. 계산 점이 OptimizationValues
객체로 전달되는 경우, 함수는 객체의 모든 점에서 표현식을 계산합니다. 예제는 최적화 문제 값 평가하기 항목을 참조하십시오.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)