考えられる 1 つの方法は、混合整数計画問題を次のように定式化することです。他にもっと効率的な解決策があるかもしれません。
全部で R 個の赤いボールと B 個の青いボールがあり、それぞれの重みがそれぞれ r1、r2、..rR と b1、b2、...bB であるとします。
Rij は、バケット j に割り当てられた赤いボール i の割合であるとします。RBINij は 2 進数で、Rij > 0 の場合は 1、それ以外の場合は 0 です。カット数を最小限に抑えるために、できるだけ多くの Rij の 0 (および RBINij の 0) を作成したいと考えています。
同様に、Bij はバケット j に割り当てられた青いボール i の割合です。BBINij は 2 進数で、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) )