비선형 문제 기반 최적화에서의 정수 제약 조건
문제 기반 접근법을 사용하여 정수 제약 조건이 있는 비선형 최적화 문제를 풀려면 다음 과정 중 하나를 따르십시오.
Global Optimization Toolbox 라이선스가 있는 경우, 평소처럼 문제 기반 접근법을 위해 문제를 정식화합니다.
ga
는 정수 제약 조건이 있는 비선형 문제에 대한 디폴트 솔버입니다. 또한solve
의Solver
인수에서 솔버로surrogateopt
를 지정할 수도 있습니다.ga
또는surrogateopt
를 솔버로 사용하는 솔버 기반 접근법을 사용합니다. 솔버 기반 접근법에서는 이러한 솔버 간에 전환 시 목적 함수와 비선형 제약 조건 함수를 수정해야 합니다.prob2struct
를 사용하여 문제를 구조체로 변환한 다음 외부 솔버를 사용합니다.경우에 따라
intlinprog
를 사용하여 비선형 정수 문제를 반복적으로 근사할 수 있습니다. 이 접근법에 대한 예제는 혼합 정수 2차 계획법 포트폴리오 최적화: 문제 기반 항목을 참조하십시오.
외부 솔버를 사용하여 prob2struct
를 호출할 때 Solver
이름-값 인수를 지정해야 할 수 있습니다.
참고
정수 제약 조건이 있는 비선형 문제의 경우, Global Optimization Toolbox 라이선스가 없으면 Solver
인수를 포함시켜야 합니다.
Global Optimization Toolbox 라이선스가 있더라도 여전히 Solver
이름-값 인수를 지정해야 할 수 있습니다. 외부 솔버는 문제 구조체가 특정 솔버에 해당하는 형식일 것으로 예상할 수 있습니다. 예를 들어 선형 제약 조건 및 정수 제약 조건과 2차 목적 함수가 있는 문제의 경우 외부 솔버는 목적 함수를 표현식 ½xTHx + fTx에서 행렬 H와 f로 표현하도록 요구할 수도 있습니다. 이러한 행렬을 구하려면 Solver
이름-값 인수를 사용하여 'quadprog'
솔버를 지정합니다.
problem = prob2struct(prob,"Solver","quadprog");
quadprog
솔버를 지정하지 않으면 결과로 생성된 문제 구조체는 행렬이 아니라 목적 함수의 함수 핸들을 포함할 수 있습니다. 어느 경우이든 결과로 생성된 문제 구조체는 intcon
필드에 정수 변수를 포함합니다
참고
정수 제약 조건이 있는 비선형 문제의 경우, 정수 제약 조건을 처리하지 않는 솔버를 지정하면 prob2struct
는 솔버가 결과로 생성된 구조체를 풀 수 없다는 경고를 표시합니다. 문제 구조체에서 솔버를 호출하여 문제를 풀려고 시도하면 솔버는 정수 제약 조건을 무시합니다. 이 경우, 해는 원래 문제에 대한 해는 아니지만 정수 제약 조건이 없는 문제에 대한 해가 됩니다.
참고 항목
prob2struct
| solve
| ga
| surrogateopt