Standford에서 제안한 Optimization Modeling Using MIP Solvers and Large Language Models에 대해서 알아 보겠습니다.
이 논문은 자연어로 주어진 문제 설명을 기반으로 혼합 정수 계획(MILP) 문제를 해결하는 데 도움을 주는 대형 언어 모델(LLM) 기반 시스템에 대한 내용을 설명합니다.
모델링
학생들에게 자연어로 최적화 문제를 설명한다고 가정해 보겠습니다.
예를 들어, "공장에서 세 가지 제품을 생산하는데, 비용을 최소화하면서 각 제품의 수요를 맞추고 싶다"는 설명이 주어진다면, OPTIMUS는 이를 분석하여 문제의 결정변수(Decision Variable), 제약 조건(Constraints), 목적 함수(Objective)를 자동으로 추출합니다.
여기서 각 매개변수는 수학적으로 정의되고, 필요시 추가적인 변수와 제약 조건을 생성합니다.
코드 생성
수학적 모델이 완성되면, OPTIMUS는 이를 해결하기 위한 솔버 Gurobi의 Python 코드를 자동으로 생성합니다.
생성된 코드가 실행 중에 오류가 발생할 경우, OPTIMUS는 자동으로 오류를 탐지하고 수정하는 기능을 갖추고 있습니다.
예를 들어, 잘못된 제약 조건이나 변수 정의로 인한 실행 오류가 발생하면 이를 분석하고 자동으로 수정하여 다시 실행합니다.
이 과정을 여러 번 반복하며 최종적으로 올바른 해를 도출합니다.
검증
OPTIMUS는 생성된 결과에 대한 정확성을 보장하기 위해 자동으로 단위 테스트도 생성합니다.
이를 통해 출력된 결과가 문제의 제약 조건을 만족하는지, JSON 형식이 올바른지 등을 검사합니다.
또한 사용자가 직접 추가적인 검증 테스트를 작성할 수도 있습니다
Github Repository&Demo Program
논문의 저자는 Github(https://github.com/teshnizi/OptiMUS?tab=readme-ov-file)에 논문의 구현 소스를 공개하고 있고, Demo (https://optimus-solver.vercel.app/)도 제공하고 있습니다.
아래 데모를 따라가며 입력을 하다보면 논문에서 하고자 하는 내용을 확인할 수 있습니다.
Reference: