Main Content

문제 기반 최적화 알고리즘

solve 함수는 내부적으로 다음과 같은 솔버를 호출하여 최적화 문제를 풉니다. 문제의 디폴트 솔버와 지원되는 솔버에 대한 설명은 solvers 함수를 참조하십시오. solve를 호출할 때 'solver' 이름-값 쌍 인수를 사용하여 디폴트 값을 재정의할 수 있습니다.

문제를 솔버 형식으로 변환해야 solve가 솔버를 호출할 수 있습니다. 솔버 형식은 solve 또는 일부 다른 연결된 함수 또는 객체입니다. 예를 들어, 이 변환에는 최적화 변수 표현식이 아닌 행렬 표현을 가진 선형 제약 조건이 수반됩니다.

알고리즘의 첫 번째 단계는 문제에 최적화 표현식을 적용하는 것입니다. OptimizationProblem 객체에는 표현식에 사용되는 변수의 내부 목록이 있습니다. 각 변수는 표현식에서 선형 인덱스와 크기를 가집니다. 따라서 문제 변수는 자연스럽게 행렬 형식을 갖게 됩니다. prob2struct 함수가 문제 형식에서 솔버 형식으로의 변환을 수행합니다. 예제는 Convert Problem to Structure 항목을 참조하십시오.

비선형 최적화 문제의 경우, solve자동 미분을 사용하여 목적 함수와 비선형 제약 조건 함수의 기울기를 계산합니다. 이런 도함수는 목적 함수와 제약 조건 함수가 Supported Operations for Optimization Variables and Expressions 항목으로 구성되어 있을 때 적용됩니다. 자동 미분이 적용되지 않으면 솔버는 유한 차분을 사용해 도함수를 추정합니다. 자동 미분에 대한 자세한 내용은 Automatic Differentiation Background 항목을 참조하십시오. solve가 자동 미분에 ObjectiveDerivative 이름-값 인수를 사용하는 방법을 사용자가 제어할 수 있습니다.

intlinprog가 MILP 문제를 푸는 데 사용하는 알고리즘에 대해서는 레거시 intlinprog 알고리즘 항목을 참조하십시오. linprog가 선형 계획법 문제를 푸는 데 사용하는 알고리즘에 대해서는 선형 계획법 알고리즘 항목을 참조하십시오. quadprog가 2차 계획법 문제를 푸는 데 사용하는 알고리즘에 대해서는 2차 계획법 알고리즘 항목을 참조하십시오. 선형 또는 비선형 최소제곱 솔버 알고리즘에 대해서는 최소제곱(모델 피팅) 알고리즘 항목을 참조하십시오. 비선형 솔버 알고리즘에 대해서는 제약 조건이 없는 비선형 최적화 알고리즘제약 조건이 있는 비선형 최적화 알고리즘 항목을 참조하십시오. Global Optimization Toolbox 솔버 알고리즘에 대한 내용은 Global Optimization Toolbox 문서를 참조하십시오.

비선형 방정식 풀이의 경우 solve는 내부적으로 각 방정식을 좌변과 우변 사이의 차로 표현합니다. 그런 다음 solve는 방정식 성분의 제곱합을 최소화하려고 시도합니다. 비선형 연립방정식 풀이를 위한 알고리즘에 대해서는 방정식 풀이 알고리즘 항목을 참조하십시오. 문제에 범위도 있는 경우, solve는 방정식 성분의 제곱합을 최소화하기 위해 lsqnonlin을 호출합니다. 최소제곱(모델 피팅) 알고리즘 항목을 참조하십시오.

참고

목적 함수가 제곱합이고 이를 그렇게 인식하도록 solve에 전달하려면 목적 함수를 expr'*expr 또는 다른 형태가 아니라 norm(expr)^2 또는 sum(expr.^2)으로 쓰십시오. 내장 구문 분석기는 노름의 제곱 또는 명시적인 제곱합으로 표현될 때만 제곱합을 인식합니다. 자세한 내용은 Write Objective Function for Problem-Based Least Squares 항목을 참조하십시오. 예제는 Nonnegative Linear Least Squares, Problem-Based 항목을 참조하십시오.

참고 항목

| |

관련 항목