최적화 문제로 인해 때때로 무한한 솔루션이 생성됩니다. 원인을 찾으려면 모델을 수정하고 해결하여 정보를 얻을 수 있습니다. 이는 "인위적으로" 큰 경계를 적용하여 수행됩니다. 선형 프로그래밍 솔버는 더 크게 만들 수 있는 변수를 찾을 때 무한성을 발견하지만 변수가 제한 없이 증가할 수 있음을 발견합니다. 무료 슬롯에서 일부 솔버는 이러한 정보를 반환하지만 일반적으로 제한되지 않은 변수는 하나만 보고되며, 검사되지 않았거나 제한되지 않은 다른 변수가 많이 있을 수 있습니다. 불행하게도 LST 파일은 일반적으로 무한성의 원인을 진단하고 수정하는 데 충분한 정보를 제공하지 않으며 사전 해결에서는 이러한 문제를 거의 발견하지 못합니다. 일반적으로 솔루션 보고서에는 특정 항목이 무제한(UNBND 표시 사용)으로 태그가 지정된 인스턴스가 포함되어 있지만, 무제한일 수도 있고 아닐 수도 있는 비최적(NOPT)으로 표시된 다른 변수도 있습니다. 마지막으로, GAMSCHK 분석의 사용과 식별된 모든 문제 및 모델의 수정은 여전히 제한될 수 있습니다. 따라서 대부분의 모델러는 때때로 제한이 없는 모델과 씨름하게 되며 해당 조건의 원인을 찾아내야 합니다.
때때로 모델은 확장이 실제 문제일 때 문제를 실행 불가능하거나 정체되거나 잘못된 최적으로 보고하는 등 이상한 작업을 수행합니다. 이를 방지하거나 이러한 문제를 수정하려면 스케일링을 확인하고 모델의 스케일을 다시 조정하거나 솔버에게 보다 공격적인 스케일링을 사용하도록 요청하는 것이 종종 바람직합니다.
솔버 스케일링 측면에서 대부분의 LP/MIP 솔버는 자동 스케일링을 수행하며 숫자가 어려운 모델에 더 공격적인 스케일링을 적용할 수 있는 옵션이 있는 경우도 있습니다. Cplex 옵션 scanind, Gurobi 옵션 scaleflag 또는 Xpress 옵션 크기 조정. 그러나 모델러는 특정 변수와 방정식이 어떻게 상호 연관되어 있는지 알고 솔버가 해당 지식을 갖고 있지 않은 동안 공통 요인으로 확장할 수 있기 때문에 일반적으로 더 나은 작업을 수행할 수 있습니다. 일반적으로 어려운 문제의 경우 아래 설명된 대로 스케일링을 수행한 다음 솔버도 스케일링하도록 하는 것이 바람직합니다. 일반적으로 작은 문제에는 확장이 문제가 되지 않습니다.
저는 GAMS 직원과 이야기를 나누었고 그들은 가장 일반적인 지원 요청이 무엇인지 알려주었습니다. 그 중 하나는 잘못된 결과를 수정하는 것입니다. 이번 무료 슬롯와 다음 무료 슬롯에서. 제대로 작동하지 않는 모델 내에서 문제를 진단하는 방법을 다루겠습니다. 또한 다음 섹션에서는 일반적으로 발생하는 정수 프로그래밍 문제를 다룰 것입니다.