Main Content

문제 기반 최적화 워크플로

참고

Optimization Toolbox™는 단일 목적 함수의 최적화 문제 풀이를 위해 두 가지 접근법을 제공합니다. 이 항목에서는 문제 기반 접근법을 설명합니다. 솔버 기반 최적화 문제 설정에서는 솔버 기반 접근법을 설명합니다.

최적화 문제를 풀려면 다음의 단계를 수행하십시오.

  • optimproblem을 사용하여 optimization problem 객체를 만듭니다. problem 객체는 목적 함수 표현식과 제약 조건을 정의하는 컨테이너입니다. optimization problem 객체는 문제와 문제 변수에 존재하는 범위를 정의합니다.

    예를 들어, 최대화 문제를 만들어 보겠습니다.

    prob = optimproblem('ObjectiveSense','maximize');
  • optimvar을 사용하여 명명된 변수를 만듭니다. 최적화 변수는 문제의 목적 함수와 제약 조건을 설명하는 데 사용하는 기호 변수입니다. 변수 정의에 범위를 포함합니다.

    예를 들어, 'x'라는 이진 변수로 구성된 15×3 배열을 만듭니다.

    x = optimvar('x',15,3,'Type','integer','LowerBound',0,'UpperBound',1);
  • problem 객체에 명명된 변수의 표현식으로 만든 목적 함수를 정의합니다.

    참고

    다항식이나 유리식, 기본 함수(예: exp)로 구성되지 않은 비선형 함수가 있는 경우에는 fcn2optimexpr을 사용하여 해당 함수를 최적화 표현식으로 변환하십시오. Convert Nonlinear Function to Optimization Expression 항목과 Supported Operations for Optimization Variables and Expressions 항목을 참조하십시오.

    필요한 경우, 표현식의 추가 파라미터를 작업 공간 변수로 표현식에 포함합니다. 문제 기반 접근법에서 추가 파라미터 전달하기 항목을 참조하십시오.

    예를 들어, 변수 x 행렬과 같은 크기의 실수 행렬 f가 있고 목적 함수는 f의 요소와 이에 대응하는 변수 x를 곱한 값의 합이라고 가정해 보겠습니다.

    prob.Objective = sum(sum(f.*x));
  • 최적화 문제의 제약 조건을 명명된 변수의 비교 또는 표현식의 비교 중 하나로 정의합니다.

    참고

    다항식이나 유리식, 기본 함수(예: exp)로 구성되지 않은 비선형 함수가 있는 경우에는 fcn2optimexpr을 사용하여 해당 함수를 최적화 표현식으로 변환하십시오. Convert Nonlinear Function to Optimization Expression 항목과 Supported Operations for Optimization Variables and Expressions 항목을 참조하십시오.

    예를 들어, x의 각 행의 변수 합은 1이어야 하고 각 열의 변수 합은 1보다 크면 안 된다고 가정해 보겠습니다.

    onesum = sum(x,2) == 1;
    vertsum = sum(x,1) <= 1;
    prob.Constraints.onesum = onesum;
    prob.Constraints.vertsum = vertsum;
  • 비선형 문제의 경우, 구조체에 최적화 변수 이름 필드를 지정하여 초기점을 설정합니다. 예를 들어, 다음과 같이 입력합니다.

    x0.x = randn(size(x));
    x0.y = eye(4); % Assumes y is a 4-by-4 variable
  • solve를 사용하여 문제를 풉니다.

    sol = solve(prob);
    % Or, for nonlinear problems,
    sol = solve(prob,x0)

추가로 이런 기본 단계에서, show 또는 write를 사용하여 문제를 풀기 전에 문제 정의를 검토할 수 있습니다. Change Default Solver or Options에 설명된 대로 optimoptions를 사용하여 solve에 대한 옵션을 설정합니다.

경고

문제 기반 접근법은 목적 함수, 비선형 등식, 비선형 부등식에서 복소수 값을 지원하지 않습니다. 함수 계산에 중간값으로라도 복소수 값이 포함될 경우, 최종 결과가 올바르지 않을 수 있습니다.

참고

최적화 문제에서는 모든 이름이 고유해야 합니다. 특히 변수 이름, 목적 함수 이름, 제약 조건 함수 이름은 모두 달라야 합니다.

기본 혼합 정수 선형 계획법 예제는 혼합 정수 선형 계획법 기본 사항: 문제 기반 또는 비디오 버전 Solve a Mixed-Integer Linear Programming Problem Using Optimization Modeling을 참조하십시오. 비선형 예제는 제약 조건이 있는 비선형 문제 풀기, 문제 기반 항목을 참조하십시오. 더 광범위한 예제는 문제 기반 비선형 최적화, 선형 계획법과 혼합 정수 선형 계획법 또는 2차 계획법과 원뿔 계획법 항목을 참조하십시오.

참고 항목

| | | | | |

관련 항목