Algoritmo di mappatura basato sul peso

0

Sto scrivendo l'assegnazione automatica delle attività agli utenti. Ogni utente ha un peso (numero intero) e le attività devono essere distribuite agli utenti in base al loro peso. Per esempio Ho 10 compiti e Utente A con peso 5, Utente B con peso 3 e Utente C con peso 2. La funzione di mappatura dovrebbe assegnare all'utente A 5 compiti, B con 3 compiti, C con 2. Questo esempio è molto semplice, ma non è così facile quando si tratta di 34 utenti e 230 attività, per esempio. C'è qualche algoritmo noto che dovrei cercare?

    
posta DominikM 10.07.2014 - 13:22
fonte

1 risposta

2

L'algoritmo sembra abbastanza semplice, a parte gli errori di arrotondamento.

  1. Aggiungi tutti i pesi = > Wt.
  2. Assegna a ciascun utente un numero di attività = N volte il peso dell'utente Wx / Wt, arrotondato per difetto.
  3. Dovrebbe esserci un task N / 2 rimasto a causa dell'arrotondamento. Assegna 1 compito a ciascun utente in ordine decrescente di grandezza dell'errore di arrotondamento (o qualsiasi altro algoritmo se preferisci).
risposta data 10.07.2014 - 16:03
fonte

Leggi altre domande sui tag