한 가지 가능한 방법은 다음과 같은 방법으로 혼합 정수 프로그래밍 문제를 공식화하는 것입니다. 확실하지는 않습니다. 다른 훨씬 더 효율적인 솔루션이있을 수 있습니다.
각각 R 1, r 2, ... r R 및 b 1, b 2, ... b B의 무게를 가진 R 빨간색 볼과 B 파란색 볼이 있다고 가정 해보십시오.
Say Rij는 버킷 j에 할당 된 빨간 공 i의 비율입니다. RBINij는 Rij> 0이면 1이고 그렇지 않으면 0 인 2 진수입니다. 가능한 한 많은 Rij의 0 (그리고 RBINij의 0)을 가능한 한 많이 만들고 싶습니다.
마찬가지로 Bij는 버킷 j에 할당 된 파란 공 i의 비율입니다. BBINij는 Bij> 0 인 경우 1이고 그렇지 않은 경우 0 인 2 진수입니다. 가능한 한 많은 수의 Bij의 0 (및 BBINij의 0)을 가능한 한 많이 만들고 싶습니다.
Constraints:
summation over i(wi*Rij) <= 1.564*summation over i(wi*Bij) (61-39 ratio) { for all j buckets }
summation over i(wi*Rij) >= 1.439*summation over i(wi*Bij) (59-41 ratio) { for all j buckets }
RBINij >= Rij
BBINij >= Bij
+ maybe more constraints like the total weight etc.
Objective Function:
Minimize(Ci*summation over i(RBINij + BBINij))