CPMpy/cpmpy

Constraint Programming and Modeling library in Python, based on numpy, with direct solver access.

해결하는 문제

CPMpy는 스케줄링, 자원 할당, 최적화와 같이 불리언 및 정수 변수가 포함된 조합 문제를 다룹니다. 고수준 제약 조건을 제공하며, 솔버가 이를 기본적으로 지원하지 않는 경우 자동으로 분해하여 복잡한 문제를 쉽게 표현할 수 있도록 합니다.

작동 방식

의사결정 변수를 numpy 배열로 정의하고, 제약 조건과 목적 함수를 추가한 뒤 solve()를 호출합니다. CPMpy는 모델을 선택한 솔버(CP, ILP, SMT, PB, SAT 등)로 변환하며, 서로 다른 솔버를 비교할 수도 있습니다. 증분 해결(incremental solving), 가정 변수, 해결 후 제약 조건 추가 또는 목적 함수 업데이트를 지원합니다.

대상 사용자

과학적 Python 생태계(pandas, plotly, Jupyter)와 통합되는 가볍고 문서화가 잘 된 라이브러리가 필요한 제약 프로그래밍, 운영 연구, 머신러닝 분야의 연구자 및 실무자를 위한 도구입니다. 산업계와 학계 연구에서도 널리 사용됩니다.

주요 특징

  • 솔버 독립성: CP, ILP, SMT, PB, SAT 솔버와 호환
  • 머신러닝 친화적: 의사결정 변수는 벡터화 연산이 가능한 numpy 배열
  • 증분 해결: 가정 변수, 제약 조건 추가, 목적 함수 업데이트 지원
  • 대규모 테스트 스위트 및 퍼징 테스트를 통한 철저한 검증
  • 매개변수 튜닝, 디버깅, 설명 생성 및 XCSP3 벤치마킹을 위한 도구 제공
  • 오픈 소스 (Apache 2.0) 및 활발한 커뮤니티 운영, 기여 환영

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트