OR-도구 - Google 최적화 도구
조합 최적화를 위한 Google의 소프트웨어 제품군입니다.
목차
- OR-도구 정보
- 코드맵
- 설치
- 빠른 시작
- 선적 서류 비치
- 기여
- 특허
OR-도구 정보
Google 최적화 도구(또는 OR-Tools)는 조합 최적화 문제를 해결하기 위한 빠르고 이식 가능한 오픈 소스 소프트웨어 제품군입니다.
제품군에는 다음이 포함됩니다.
- 2개의 제약 프로그래밍 솔버(CP* 및 CP-SAT);
- 2개의 선형 프로그래밍 솔버(Glop 및 PDLP);
- 혼합 정수 솔버를 포함한 상용 및 기타 오픈 소스 솔버에 대한 래퍼
- 빈 포장 및 배낭 알고리즘;
- 여행하는 외판원 문제와 차량 경로 문제에 대한 알고리즘;
- 그래프 알고리즘(최단 경로, 최소 비용 흐름, 최대 흐름, 선형 합계 할당).
우리는 C++로 OR-Tools를 작성했지만 Python, C# 및 Java로 래퍼를 제공합니다.
코드맵
이 소프트웨어 제품군은 다음 구성 요소로 구성됩니다.
- Makefile GNU Make 기반 빌드를 위한 최상위 레벨입니다.
- makefiles 자회사 Make 파일, CI 및 빌드 시스템 문서를 작성합니다.
- CMakeLists.txt CMake 기반 빌드의 최상위 수준입니다.
- cmake 보조 CMake 파일, CI 및 빌드 시스템 문서입니다.
- WORKSPACE Bazel 기반 빌드의 최상위 수준입니다.
- bazel 자회사 Bazel 파일, CI 및 빌드 시스템 문서입니다.
- ortools 소스 코드의 루트 디렉터리입니다.
- base 기본 유틸리티.
- 알고리즘 기본 알고리즘.
- 그래프 그래프 알고리즘.
- Linear_solver 선형 솔버 래퍼.
- glop Simplex 기반 선형 프로그래밍 솔버.
- pdlp 1차 선형 프로그래밍 솔버.
- lp_data 선형 모델의 데이터 구조입니다.
- Constraint_solver 제약 조건 및 라우팅 솔버.
- docs 구성 요소에 대한 문서입니다.
- 샘플 세심하게 제작된 샘플입니다.
- 토 SAT 해결사.
- docs 구성 요소에 대한 문서입니다.
- 샘플 세심하게 제작된 샘플입니다.
- bop SAT 기반 부울 솔버.
- util 제약 조건 해결사에 필요한 유틸리티
- 예제 모든 예제의 루트 디렉터리입니다.
- contrib 커뮤니티의 예.
- cpp C++ 예제.
- 닷넷 .Net 예.
- 자바 자바 예제.
- 파이썬 파이썬 예제.
- 노트북 Jupyter/IPython 노트북.
- flatzinc FlatZinc 예시.
- 테스트 단위 테스트 및 버그 보고서.
- 도구 전달 도구(예: Windows GNU 바이너리, 스크립트, 릴리스 도커)
설치
이 소프트웨어 제품군은 다음 환경에서 테스트되었습니다.
- Ubuntu 18.04 LTS 이상(64비트);
- Xcode 9.x(64비트)가 탑재된 Apple macOS Mojave;
- Visual Studio 2022(64비트)가 설치된 Microsoft Windows.
OR-Tools는 현재 Makefile을 사용하여 빌드되지만 Bazel 및 CMake 지원도 제공합니다.
설치 지침(소스 및 바이너리 모두)을 보려면 https://developers.google.com/optimization/introduction/installing을 방문하세요.
Make(레거시)를 사용하여 소스에서 빌드
우리는 Make 기반 빌드를 제공합니다.
Make 빌드 지침을 확인하세요.
CMake를 사용하여 소스에서 빌드
우리는 CMake 기반 빌드를 제공합니다.
CMake 빌드 지침을 확인하세요.
Bazel을 사용하여 소스에서 빌드
Bazel 기반 빌드를 제공합니다.
Bazel 빌드 지침을 확인하세요.
빠른 시작
OR 도구 사용 방법을 배우는 가장 좋은 방법은 개발자 가이드의 튜토리얼을 따르는 것입니다.
https://developers.google.com/optimization/introduction/get_started
코드 예제를 통해 배우고 싶다면 예제 디렉터리의 예제를 살펴보세요.
선적 서류 비치
OR-Tools에 대한 전체 문서는 https://developers.google.com/optimization/에서 확인할 수 있습니다.
기여
CONTRIBUTING.md 파일에는 풀 요청(PR)을 보내기 전에 기여자 라이센스 계약을 제출하는 방법에 대한 지침이 포함되어 있습니다. 물론, 프로젝트를 처음 접하는 경우 일반적으로 첫 번째 PR을 보내기 전에 제안에 대해 논의하고 합의에 도달하는 것이 가장 좋습니다.
특허
OR-Tools 소프트웨어 제품군은 Apache License 2.0의 조건에 따라 라이센스가 부여됩니다.
자세한 내용은 라이센스를 참조하세요.