Ho un requisito in cui ho una lista di entità e utenti a cui quell'entità può essere assegnata
E1 can be distributed by U1 or U2
E2 must be distributed by U5
E3 can be distributed by U2 or U3 or U4
Ho queste entità 50K e per ciascuna entità potrebbero esserci 1 o più utenti. In caso di 1 utente, la sua clear e entity saranno assegnate solo a quell'utente. In caso di più utenti, può essere assegnato a tutti loro.
Vogliamo distribuirlo in modo tale che ogni utente abbia la stessa quantità di entità. e ci sono minime distribuzioni distorte possibili / inevitabili, inoltre ogni utente potrebbe già possedere alcune entità: U1 ha 2K e U2 ha già già 3K entitis, quindi la distribuzione dovrebbe occuparsi anche di questo fatto.
EDIT 1
Abbiamo già provato una soluzione per andare in sequenza e assegnare un'entità alla volta secondo l'allocazione agli utenti in quel momento, ma producendo risultati distorti, perché stiamo ottenendo utenti con meno allocazioni precedenti ma più allocazione più tardi o viceversa ...
E1 to E25 "must be handled by any of" U1 & U2
E26 to E50 "must be handled by any of" U2 & U3
se andiamo in sequenza, alla fine: U1 ottiene 12 (da E1-E25), U2 ne ottiene 19 (13 da E1-E25 e 6 da E26-E50) & U3 ottiene 19 (da E26-E50). Quindi tutto sommato 50 assegnati. bene. ma guarda i risultati distorti
EDIT2
Perché abbiamo utenti diversi per entità? ci sono più prodotti da distribuire. Alcuni utenti gestiscono più prodotti e alcuni utenti gestiscono un singolo prodotto, ma tutti gli utenti devono essere bilanciati sul carico.