최적화 모델에 해가 없을 때 확인할 순서
최적화 솔버가 ‘해가 없다’고 하면 알고리즘이 실패했다고 느끼기 쉽습니다. 하지만 주문 마감, 설비 용량, 작업자 자격이 서로 충돌하면 실제로도 계획을 만들 수 없습니다. 먼저 데이터와 제약의 충돌을 찾는 순서가 필요합니다.
입력 데이터부터 검증한다
없는 작업자 ID, 음수 작업시간, 잘못된 시간대 변환, 누락된 설비 용량은 모델을 불가능하게 만듭니다. 제약을 느슨하게 하기 전에 원천 데이터와 변환 규칙을 확인합니다. 여러 충돌 집합이 있을 수 있으므로 한 번의 IIS 결과만 보고 모든 원인이 해결됐다고 생각하면 안 됩니다. 첫 번째 충돌을 고친 뒤 모델을 다시 풀어 남은 충돌이나 새로 드러난 데이터 오류를 확인해야 합니다.
필수 제약과 선호를 구분한다
안전·법규·물리 용량은 완화할 수 없는 조건입니다. 희망 근무일과 권장 재고량은 비용을 지불하고 조정할 수 있을지 책임자와 합의합니다. 이 구분이 없으면 충돌 원인을 찾기 어렵습니다.
충돌하는 조건 집합을 찾는다
솔버의 IIS 같은 불가능성 분석 기능으로 함께 만족할 수 없는 작은 제약 집합을 찾습니다. 다만 도출된 집합이 유일한 원인은 아닐 수 있으므로 수정 뒤 다시 계산해야 합니다.
완화 시나리오를 비교한다
어느 납기를 얼마나 늦추거나 어떤 설비 시간을 추가하면 해가 생기는지 비교합니다. 단순히 제약을 삭제하지 말고 비용·고객 영향·안전 영향을 함께 보여줘야 합니다.
현장 언어로 설명한다
‘제약 183과 241이 충돌’보다 ‘목요일 야간에 자격 작업자 2명이 필요한데 1명만 가능’이 행동으로 이어집니다. 모델 변수와 실제 작업·설비 이름을 연결한 오류 설명을 제공해야 합니다.
현장에 적용할 때의 순서
- 입력 오류와 제약 분류 점검
- IIS 등으로 충돌 조건 식별
- 현장 언어의 대안 시나리오 제시
주의할 실패: 해가 없다는 이유로 필수 제약 삭제
관찰할 지표: 불가능 사례 원인 분류·해결 시간
적용 전 체크리스트
- 입력 ID·단위·시간대를 먼저 확인한다
- 충돌 제약 집합을 현장 항목으로 번역한다
- 완화 대안의 비용과 안전 영향을 분리한다
참고 자료
Gurobi Optimizer — Infeasibility Analysis. 불가능한 모델의 충돌 제약 분석 기능은 Gurobi 공식 문서를 참고했습니다. 현장 설명과 완화 시나리오는 적용 제안입니다.
이미지와 도식은 이해를 돕기 위한 개념 시각화입니다. 특정 고객의 실제 설비·데이터·화면을 재현한 것이 아닙니다.
#MILP #불가능성 #IIS #최적화 #제약조건 #스케줄링 #생산계획 #데이터검증 #솔버 #운영연구
이 주제를 실제 시스템으로 옮기려면 AI 알고리즘 개발 살펴보기