Programma per distribuzione equa bonus

di il
2 risposte

Programma per distribuzione equa bonus

Ciao a tutti,

sono un programmatore abbastanza noob e mi sto cimentando in qualcosa di troppo complesso per me, tanto che non so come fare. Spero che qualche geniaccio mi dia una mano perché non capisco proprio quale calcolo o logica possa portarmi al risultato finale.

In parole facili sto cercando di assegnare dei bonus a delle persone in maniera equa, ma ho delle limitazioni che non riesco a codificare. 

Sto cercando di scrivere un programma a riga di comando (il linguaggio di per sé non è importante) che faccia quanto segue. (Semplifico la descrizione per farvi capire cosa vorrei fare e per facilità)

Gli input sono: dato un numero n di importi e il loro valore importo. Date un numero di persone, facciamo 10 (p1, p2, p3 eccetera).

Ogni importo viene diviso in 3 categorie, ognuna delle quali è uguale a una parte dell'importo. 

A = 21%*importo
B = 33%*importo
C = 46%*importo

In ognuna di queste categorie vanno inserite da 1 a 5 persone di modo che possano spartirsi la quota dell'importo della categoria. Ogni persona può essere inserita in più categorie (ma solo una volta per categoria).

Lo scopo del programma sarebbe calcolare quali e quante persone inserire in ogni categoria di ogni importo affinché tutte le persone ricevano una cifra simile (o il più simile possibile)

Considerate che in teoria il numero di categorie sarebbe 28 e il numero di persone altissimo, ma ho descritto uno schema più semplice per facilitare la cosa altrimenti diventava troppo complesso anche discuterne.

Se non avessi le categorie sarebbe facile:

quota_persona = tot_valore_importi / num_importi / num_persone

Ma da qui non so andare avanti. Avete delle idee in merito a come fare? Qual è secondo voi la matematica o un algoritmo efficace per questa forma di "bilanciamento" equo? Non so proprio come districarmi.

2 Risposte

  • Re: Programma per distribuzione equa bonus

    E' un problema di ottimizzazione combinatoria.

    Anzi meglio: programmazione intera con vincoli. 

    Sembra una variante del problema dello zaino. 

    Mumble, mumble…

    Direi che va affrontato come un problema di programmazione intera con vincoli.

    Non lo risolvi con ‘un algoritmo’ da scrivere in 5 minuti, se vuoi fare una cosa seria ;-) 

    Puoi usare GLPK GNU Linear Programming Kit

    Ma e' solo una parte del problema. 

    Il VERO problema e' la formulazione matematica e la funzione obiettivo. Mi sa che non e' nemmeno lineare. Quadratica? Boh!

    Vediamo che trovo…

  • Re: Programma per distribuzione equa bonus

    Studiando il tuo post… credo tu abbia capito il problema. E grazie per avermi indirizzato verso una potenziale soluzione, continuo a studiare 

Devi accedere o registrarti per scrivere nel forum
2 risposte