Main Content

비선형 문제 기반 최적화에서의 정수 제약 조건

문제 기반 접근법을 사용하여 정수 제약 조건이 있는 비선형 최적화 문제를 풀려면 다음 과정 중 하나를 따르십시오.

  • Global Optimization Toolbox 라이선스가 있는 경우, 평소처럼 문제 기반 접근법을 위해 문제를 정식화합니다. ga는 정수 제약 조건이 있는 비선형 문제에 대한 디폴트 솔버입니다. 또한 solveSolver 인수에서 솔버로 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는 솔버가 결과로 생성된 구조체를 풀 수 없다는 경고를 표시합니다. 문제 구조체에서 솔버를 호출하여 문제를 풀려고 시도하면 솔버는 정수 제약 조건을 무시합니다. 이 경우, 해는 원래 문제에 대한 해는 아니지만 정수 제약 조건이 없는 문제에 대한 해가 됩니다.

참고 항목

| | |