Optimization Expert의 Pyomo 저장소는 공급망·자원 배분부터 경로 설정, 일정 계획, 그래프, 머신러닝, 퍼즐까지 129개 이상의 최적화 모델을 제공한다. 각 노트북이나 스크립트에는 문제 설명, 수학적 정식화, 파이썬 코드, 풀이와 시각화가 담겨 있으며, 대부분은 설치 없이 Google Colab에서 열 수 있다.
이 오픈소스 라이브러리는 운영 연구와 수리 최적화를 배우는 학생, 실제 문제에 활용할 템플릿을 찾는 실무자, 제약조건을 활용한 퍼즐 풀이에 관심 있는 사람을 대상으로 한다. 모델링 도구는 Pyomo와 Google OR-Tools이며, 솔버로 CP-SAT, CBC, GLPK, HiGHS, Ipopt, Gurobi와 무료 NEOS Server를 사용한다.
저장소에는 차량 경로 문제와 물류, 작업·근무 일정, 공급망과 자원 배분, 할당·매칭, 그래프·네트워크, 논리·체스 퍼즐, 기하·배치, 머신러닝·데이터 적합 모델이 포함돼 있다. 예를 들어 경로·물류 분야에는 용량 제한 차량 경로 문제(CVRP), 시간창이 있는 CVRP, 순회 외판원 문제(TSP), 최단 경로, 재고에서 주문품을 가져오는 문제가 있다. 일정 계획 분야에는 작업장 일정, 예방 정비를 포함한 유연 작업장 일정, 프로젝트·교대·간호사·병원 직원 일정과 2단계 항공사 일정이 있다.
공급망·자원 배분 예제로는 재단 최적화, 농장 자원 배분, 단일·다중 추종자를 포함한 이단계 최적화, 수확량 모델이 있다. 이 밖에도 안정 결혼과 학생-교수 배정, 그래프 색칠·경로, 제브라·스도쿠 계열 논리 퍼즐, N-퀸, SVM 분류와 K-means 군집화 모델 등을 다룬다. 각 문제의 파일과 사용 도구는 저장소의 문제 목록에서 확인할 수 있다.
실행 방법
로컬에서 실행하려면 저장소를 복제하고 필요한 파이썬 패키지를 설치한 뒤 Jupyter Notebook을 시작한다.
git clone https://github.com/OptimizationExpert/Pyomo.git
cd Pyomo
pip install pyomo ortools matplotlib pandas numpy networkx
pip install highspy # free LP/MILP solver usable from Pyomo
conda install -c conda-forge coincbc ipopt # optional: CBC and Ipopt
jupyter notebook
Google Colab에서는 노트북 상단의 ‘Open in Colab’ 배지를 이용하거나 Pyomo_on_Google_Colab.ipynb에서 시작할 수 있다. 저장소 안내에 따르면 대부분의 노트북은 Colab에서 바로 열리며 설치가 필요 없다.
문제 구조에 따라 도구를 고를 수 있다. 연속 변수를 사용하는 LP·MILP·NLP 문제에는 Pyomo와 HiGHS, CBC, Gurobi 또는 Ipopt를 제시한다. 순서·일정·논리·all-different·회로 제약에는 OR-Tools CP-SAT, 표준 부가 제약을 포함한 차량 경로 문제에는 OR-Tools routing library를 권한다.
저장소에는 Pyomo와 CP-SAT의 색인 변수 예제, NEOS Server를 이용한 풀이, Pyomo.DAE의 열 전달 예제, 여러 인스턴스를 병렬로 푸는 mpi4py 예제도 있다. 라이선스는 MIT다. 기여하려면 저장소를 포크하고 브랜치를 만든 뒤 문제 설명·수학적 정식화·정돈된 코드·시각화를 포함한 노트북을 추가해 전체 실행을 확인하고, 해당 README 절을 명시해 풀 리퀘스트를 제출하면 된다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요