Main Content

최적화 라이브 편집기 작업

최적화 라이브 편집기 작업이란?

최적화 라이브 편집기 작업은 fminbnd, fminsearch, fzerolsqnonneg 솔버에 대한 시각적 인터페이스를 제공합니다. 작업을 시작하려면 새 라이브 스크립트 버튼을 클릭하십시오. 그런 다음 삽입 탭을 클릭하고 작업 > 최적화를 선택합니다.

Optimize Live Editor task.

다변수 비선형 함수 최소화하기

이 예제에서는 함수 f(x,y)=100(yx2)2+(ax)2을 최소화하는 방법을 보여줍니다(변수 a = π, 최적화 라이브 편집기 작업 사용).

유사한 최적화 문제를 설명하는 비디오는 How to Use the Optimize Live Editor Task를 참조하십시오.

  1. 탭의 파일 섹션에서 새 라이브 스크립트 버튼을 클릭합니다.

  2. 최적화 라이브 편집기 작업을 삽입합니다. 삽입 탭을 클릭한 다음 코드 섹션에서 작업 > 최적화를 선택합니다.

    Insert task Optimize

  3. 문제 데이터 입력에 사용하기 위해 섹션 나누기 버튼을 클릭합니다. 작업 위와 아래에 새 섹션이 나타납니다.

  4. 최적화 작업 위 섹션에서 다음 코드를 입력합니다.

    a = pi;
    x0 = [-1 2];
  5. 이 변수를 작업 공간에 배치하려면 Ctrl+Enter를 누르십시오.

  6. 작업의 문제 유형 지정 섹션에서 목적 함수 > 비선형 버튼을 클릭하고 제약 조건 > 제약 없음 버튼을 클릭합니다. 작업에 권장되는 솔버가 fminsearch라고 표시됩니다.

    참고

    Optimization Toolbox™가 있는 경우 이때 권장되는 솔버는 다르게 나타납니다. fminsearch를 선택하여 예제를 진행합니다.

  7. 문제 데이터 선택 섹션에서 목적 함수 > 로컬 함수를 선택한 다음 새로 만들기 버튼을 클릭합니다. 함수 스크립트가 작업 아래의 새 섹션에 나타납니다. 만들어진 코드를 편집하여 다음의 주석 없는 라인을 포함하도록 합니다.

    function f = objectiveFcn(optimInput,a)
    x = optimInput(1);
    y = optimInput(2);
    f = 100*(y - x^2)^2 + (a - x)^2;
    end
  8. 문제 데이터 선택 섹션에서 objectiveFcn을 로컬 함수로 선택합니다.

  9. 문제 데이터 선택 섹션의 함수 입력값에서 최적화 입력값 > optimInput고정 입력값: a > a를 선택합니다.

    Local function objectiveFcn, optimization input optimInput, fixed input a

  10. 초기점(x0) > x0을 선택합니다.

  11. 진행률 표시 섹션에서 플롯에 대해 목적 함수 값을 선택합니다.

  12. 솔버를 실행하려면 작업 창 오른쪽 상단에 있는 옵션 버튼을 클릭하고 섹션 실행을 선택하십시오.

    Run Section

    다음 플롯이 나타납니다.

    Plot showing values decreasing from 120 to 4e-11 in fewer than 150 iterations

  13. 해에 해당하는 점을 보려면 최적화 작업의 맨 위를 확인하십시오.

    Variables solution and objectiveValue are returned

    solutionobjectiveValue 변수가 작업 공간에 반환됩니다. 변수 값을 보려면 작업 아래에 섹션 나누기를 삽입하고 다음 코드를 입력하십시오.

    disp(solution)
    disp(objectiveValue)
  14. Ctrl+Enter를 눌러 섹션을 실행합니다.

    disp(solution)
        3.1416    9.8696
    disp(objectiveValue)
       3.9946e-11

스칼라 방정식 풀기

이 예제에서는 최적화 라이브 편집기 작업을 사용하여 cos(x) = x인 점 x를 찾는 방법을 보여줍니다.

  1. 탭의 파일 섹션에서 새 라이브 스크립트 버튼을 클릭합니다. 라이브 스크립트에 다음 코드 라인을 입력합니다.

    fun = @(x)cos(x) - x;
    x0 = 0;

    첫 번째 라인은 익명 함수 fun을 정의하는데, 이 함수는 cos(x) = x인 점 x에서 값 0을 취합니다. 두 번째 라인은 초기점 x0 = 0을 정의하며 여기서 fzero가 해 탐색을 시작합니다.

  2. Ctrl+Enter를 눌러 이들 변수를 MATLAB® 작업 공간에 넣습니다.

  3. 최적화 라이브 편집기 작업을 삽입합니다. 삽입 탭을 클릭한 다음 코드 섹션에서 작업 > 최적화를 선택합니다.

  4. 작업의 문제 유형 지정 섹션에서 솔버 > fzero를 선택합니다.

  5. 문제 데이터 선택 섹션에서 목적 함수 > 함수 핸들을 선택한 다음 fun을 선택합니다. 초기점(x0) > x0을 선택합니다.

    fzero with choices made

  6. 진행률 표시 섹션에서 플롯에 대해 목적 함수 값을 선택합니다.

    Plot function is Objective value.

  7. Ctrl+Enter를 눌러 솔버를 실행합니다.

    Plot of solution process, seven iterations with final five all nearly zero.

  8. 해 값을 보려면 삽입 탭에서 섹션 나누기 버튼을 클릭하여 작업 아래 새 섹션을 삽입하십시오. 새 섹션에서 solution을 입력하고 Ctrl+Enter를 누릅니다.

    solution
    solution = 0.7391

참고 항목

| |

관련 항목