一種可能的方法是按照以下方式制定混合整數編程問題。我不確定,可能還有其他更有效的解決方案。假設共有R個紅球和B個藍球,每個球的重量分別爲r1,r2,... rR和b1,b2,... bB。
說Rij是分配給桶j的紅球i的分數。 RBINij是一個二進制數,如果Rij> 0,則爲1,否則爲0。我們希望儘可能多的Rij的0(和RBINij的0)用於最小切割次數。
類似地,Bij是分配給桶j的藍色球i的分數。 BBINij是一個二進制數,如果Bij> 0,則爲1,否則爲0。我們希望儘可能多的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))