최적화의 '반드시'와 '가능하면'을 구분하는 법
최적화 모델을 만들 때 모든 희망 사항을 같은 무게의 제약으로 넣으면 해를 찾지 못하기 쉽습니다. 안전·법규·설비 용량처럼 반드시 지켜야 하는 조건과, 선호 시간대·이동 거리처럼 가능하면 맞추고 싶은 조건을 분리해야 합니다.
먼저 불가능한 해를 정의한다
작업자의 법정 휴식, 장비의 물리 용량, 공정 선후관계는 위반하면 실제로 실행할 수 없습니다. 이런 조건은 하드 제약으로 고정합니다. 반대로 선호 근무일이나 특정 주문의 우선 배치는 비용을 지불하고 어길 수 있는지 현장 책임자와 합의합니다.
선호도는 위반량으로 표현한다
예를 들어 야간 근무 희망을 모두 만족시키기 어렵다면 위반 여부나 초과 시간을 변수로 두고 목적함수에 벌점을 더합니다. 벌점이 너무 낮으면 선호도가 무시되고, 너무 높으면 사실상 하드 제약이 되므로 비용 단위를 맞춰 실험해야 합니다.
우선순위가 뚜렷하면 단계별로 푼다
안전 제약을 먼저 만족한 뒤 납기 지연을 최소화하고, 그 결과 범위 안에서 비용을 줄이는 사전식 최적화가 유용합니다. 모든 가치를 하나의 숫자로 억지로 합치지 않아도 됩니다.
해가 없을 때는 원인을 찾는다
MILP 솔버가 infeasible이라고 답하면 무작정 제약을 지우지 않습니다. 충돌하는 제약 집합을 찾고 데이터 오류인지, 현장의 실제 불가능 상태인지, 잘못 분류한 선호 조건인지 확인합니다. 모델의 실패는 운영상의 충돌을 보여주는 정보이기도 합니다.
운영자는 교환비를 볼 수 있어야 한다
대안별로 비용, 지연 주문 수, 선호 위반량을 함께 보여주면 결정을 설명할 수 있습니다. 최적값 하나보다 어떤 조건을 얼마만큼 완화했을 때 무엇을 얻는지 보여주는 것이 실무 적용에 가깝습니다.
현장에 적용할 때의 순서
- 현장 요구를 반드시 지킬 조건과 선호 조건으로 분리
- 선호 위반량을 변수로 두고 벌점 범위를 시험
- 불가능한 해는 충돌 조건을 진단
주의할 실패: 모든 선호를 하드 제약으로 바꾸는 실수
관찰할 지표: 비용·지연·위반량을 함께 비교
적용 전 체크리스트
- 하드 제약마다 현장 근거와 책임자를 기록한다
- 소프트 제약의 위반 단위와 벌점의 의미를 정의한다
- 불가능 사례와 완화 대안의 차이를 운영자가 검토한다
참고 자료
Gurobi Optimizer — Infeasibility Analysis. 불가능성 분석과 제약 완화 기능은 Gurobi 공식 문서를 참고했습니다. 하드·소프트 분류 예시는 실무 적용을 위한 설명입니다.
이미지와 도식은 이해를 돕기 위한 개념 시각화입니다. 특정 고객의 실제 설비·데이터·화면을 재현한 것이 아닙니다.
#최적화 #MILP #제약조건 #소프트제약 #스케줄링 #운영연구 #의사결정 #생산계획 #수리모델 #현장적용
이 주제를 실제 시스템으로 옮기려면 AI 알고리즘 개발 살펴보기