fmincon
솔버로 최적화 라이브 편집기 작업 사용
이 예제에서는 fmincon
솔버와 함께 솔버 기반 최적화 라이브 편집기 작업을 사용하여 선형 및 비선형 제약 조건과 범위가 적용된 2차 함수를 최소화하는 방법을 보여줍니다.
다음 식의 해가 되는 [x1, x2]를 구하는 문제가 있다고 가정하겠습니다.
여기에는 다음 제약 조건이 적용됩니다.
이 문제의 시작점 x0
은 x1 = 3 및 x2 = 1입니다.
최적화 라이브 편집기 작업 시작하기
홈 탭의 파일 섹션에서 새 라이브 스크립트 버튼을 클릭하여 새 라이브 스크립트를 만듭니다.
최적화 라이브 편집기 작업을 삽입합니다. 삽입 탭을 클릭한 다음 코드 섹션에서 작업 > 최적화를 선택합니다.
이 예제에서는 솔버 기반 작업을 선택합니다.
이후에 문제 데이터 입력 시 사용하기 위해, 삽입 > 섹션 나누기를 선택합니다. 작업 위와 아래에 새 섹션이 나타납니다.
문제 데이터 입력하기
작업 맨 위에서부터 시작해 문제 유형과 제약 조건 유형을 입력합니다. 목적 함수 > 2차 버튼과 제약 조건 > 하한, 선형 부등식, 비선형 버튼을 클릭합니다. 작업에 표시되는 권장 솔버는
fmincon
입니다.목적 함수
목적 함수가 단순해 익명 함수로 표현하기 좋습니다. 작업 위 섹션에 커서를 놓고 아래 코드를 입력합니다.
fun = @(x)sum(x.^2);
하한
이 문제에는 하한 x1 ≥ 0.5가 포함됩니다. 이 범위를 변수
lb
로 표현합니다. 목적 함수를 정의하는 라인의 끝에 커서를 둔 상태에서 Enter 키를 누르고 하한을 지정하는 다음 코드를 입력합니다.lb = [0.5 -Inf];
초기점
하한을 정의하는 라인의 끝에 커서를 둔 상태에서 Enter 키를 누르고 초기점을 설정하는 다음 코드를 입력합니다.
x0 = [3,1];
선형 제약 조건
초기점을 정의하는 라인의 끝에 커서를 둔 상태에서 Enter 키를 누르고 선형 제약 조건을 설정하는 다음 코드를 입력합니다.
A = [-1,-1]; b = -1;
섹션 실행하기
맨 위 섹션에는 이제 5개의 파라미터가 포함되어 있습니다.
다음으로, 작업 공간에 파라미터를 변수로 배치하기 위해 섹션을 실행해야 합니다. 그렇게 하려면 대각선 줄무늬 표시줄이 있는 섹션의 맨 왼쪽 영역을 클릭하십시오. 이 영역을 클릭하면 줄무늬 표시줄이 실선 표시줄로 바뀌어 변수가 이제 작업 공간에 있음을 나타냅니다. (참고: Ctrl+Enter를 눌러 섹션을 실행할 수도 있습니다.)
문제 데이터 설정하기
작업의 문제 데이터 선택 섹션에 변수를 입력합니다. 목적 함수를 지정하기 위해 목적 함수 > 함수 핸들을 선택하고 fun을 선택합니다.
초기점 x0을 설정합니다.
하한 > 작업 공간에서와 lb를 차례로 선택합니다.
선형 부등식 영역에서 선형 부등식 제약 조건 변수
A
와b
를 설정합니다.이제 비선형 부등식 제약 조건을 지정합니다. 문제 데이터 선택 섹션에서 비선형 > 로컬 함수를 선택한 후 새로 만들기 버튼을 클릭합니다. 함수가 작업 아래의 새 섹션에 나타납니다. 나타나는 코드를 편집하여 다음 코드 라인이 포함되도록 합니다.
function [c,ceq] = constraintFcn(x) % You can include commented code lines or not. % Be sure that just these uncommented lines remain: c = [-x(1)^2 - x(2)^2 + 1; -9*x(1)^2 - x(2)^2 + 9; -x(1)^2 + x(2); -x(2)^2 + x(1)]; ceq = []; end
문제 데이터 선택 섹션에서 constraintFcn 함수를 선택합니다.
진행률 모니터링하기
작업의 진행률 표시 섹션에서 텍스트 표시 > 각 반복 시를 선택하면 솔버 진행률을 모니터링할 수 있습니다. 플롯에 대해 목적 함수 값을 선택합니다.
다음과 같이 설정했습니다.
솔버 실행 및 결과 검토하기
솔버를 실행하려면 작업 창 오른쪽 상단에 있는 ⁝ 옵션 버튼을 클릭하고 섹션 실행을 선택합니다.
플롯은 별개의 Figure 창과 작업 출력 영역에 표시됩니다.
해 변수가 반환되는 위치를 확인하려면 작업의 맨 위를 보십시오.
최종점과 최종점에 연결된 목적 함수 값은 작업 공간의 solution
및 objectiveValue
변수에 나타납니다. 작업 아래의 라이브 편집기 섹션에 다음 코드를 입력하여 이들 값을 확인합니다.
solution, objectiveValue
Ctrl+Enter를 눌러 섹션을 실행합니다.