본문 바로가기

Or-tools2

#3-2 OrTools로 bin packing 문제 해결(CP-SAT) 이전 글에 이어서 제약조건을 설정하고 최적화를 실행하는 부분을 설명하겠습니다. # 제약조건 for i in range(n): model.Add(xb1[i] == x[i] + b[i]*W) model.Add(xb2[i] == xb1[i] + w[i]) model.AddNoOverlap2D(xival,yival) model.AddMaxEquality(z,[b[i] for i in range(n)]) # 목적함수 model.Minimize(z) # 모델 최적화 solver = cp_model.CpSolver() # 로그 남기기 solver.parameters.log_search_progress = True # search worker 개수 지정 - 멀티스레드 #solver.parameters.num_searc.. 2022. 11. 22.
#3-1 OrTools로 bin packing 문제 해결(CP-SAT) 2D bin packing(상자 채우기) 문제는 2차원 평면에 사각형의 객체를 적절히 채우는 문제입니다. 이 문제를 푸는 방법은 상당히 여러가지가 있는 것 같습니다. 여기말고 '티바이트' 라는 분의 블로그에 상당히 자세한 알고리즘 풀이가 있으니, 궁금하신 분들은 참고하시면 좋을 것 같습니다. 이 글에서는 OrTools의 CP-SAT 솔버를 통해 문제를 해결하는 방법을 보여드립니다. 아래 소스의 대부분은 "Yet Another Math Programming Consultant"라는 분의 블로그의 글을 참고했습니다. 우선 결과부터 보여드리면 아래와 같습니다. 너비 68, 높이 60 영역에 50개에 서로 크기가 같거나 다른 상자를 채운 모습입니다. 소스는 크게 4부분으로 나누어 집니다. 데이터 정의 제약 조건.. 2022. 11. 22.