이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
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)