Help formula matematica ripartizione

intrigo73
ho da distribuire 60 kg di caffè di cui 15 kg di qualità "A",20 kg di qualità "B", e i restanti 25 kg di qualità "C"
su tre clienti che hanno chiesto rispettivamente:
X 4 kg, Y 16 kg, infine Z con i residui 40 kg
la distribuzione avviene prima per la qualità "A" poi per la qualità"B" e in ultimo per la quantità "C"
quindi sui 15 kg della quantità "A" ho la media di 5 kg a cliente percui;
X che ha richiesto solo 4 kg inferiori alla media dei 15 kg/3 utenti avrà 3 kg di qualità "A"
Y e Z si distribuiranno i restanti (15-3 )kg ovvero 12 kg ,che corrispondono a una media di :(12/2)=6 a cliente
poichè sia Y che Z hanno chiesto 16 e 40 kg quindi superiori alla media di 6 kg
Y e Z avranno 6 kg a testa di caffè "A"
sui restanti 10 kg di Y e 34 kg di Z verranno calcolate le quantità della qualità "B" con lo stesso criterio infine sul residuo la quantità per "C"

come potete capire per ogni singola operazione devo calcolare la media: se il valore W è inferiore alla media M si inserisce il valore W, se invece è inferiore, si mette la media M, poi si ricalcola la madia sui restanti valori ....e via di seguito.

l'affare si complica quando gi utenti diventano 30-40 e magari si deve ricalcolare la media 29-39 volte
vorrei sapere se esiste una funzione/ripartizione matematica(se si come si chiama) per fare ciò in modo semplice per poterla implementare in excel.

in informatica avrei applicato un algoritmo:
utente=x
valore=y
nr utenti=2
valore_utente_a=1
valore_utente_b=2
-----
repeat

media=y/x

if (media > valore_utente_a) then valore_utente_a else valore_utente_a=media

valore=valore-valore_utente_a
nr utenti=nr utente-1
until nr utente=1

Risposte
axpgn
A parte la sezione che non c'entra molto, non è per niente chiaro quali siano i criteri di ripartizione tra i vari clienti ...
L'unico dato che metti è la quantità richiesta da ciascuno ma se questa è l'unica condizione (e così appare da quello che hai scritto ...) allora puoi fare quello che vuoi, dal soddisfare in cascata prima uno e poi via via gli altri ad una distribuzione proporzionale uguale per tutti dove per esempio il cliente X che ha chiesto $4\ kg$ cioè $1/(15)$ riceverà un quindicesimo di tutte le qualità (cioè $1\ kg$ della qualità A, $4/3\ kg$ della qualità B e $5/3\ kg$ della qualità C).

Facci sapere ... ;-)

Cordialmente, Alex

intrigo73
Scusami ma non sapevo dove aprire il post.
Quanto alla modalità, l'avevo specificata, prima si va a consumo della qualità "a" poi di quella "b" e infine a consumo della qualità "c"
Preciso, a questo punto, che si parte da chi ha ordinato quantitativo minore ovvero X
Ricapitolando :

Ho 15 kg di qualità a, 20 di qualità b, 25 di qualità c
Il cliente X ha richiesto 4 kg, Y ha richiesto 16 kg, Z ha richiesto 40 kg

x avrà solo 4 kg di qualità a
Y avrà 5,5 kg di qualità a, 10,5 kg di qualità b,
Z avrà 5,5 kg di qualità a, 19,5 kg di qualità b, e 25 kg si qualità c.

Spero di essere stato esaustivo.

intrigo73
Scusa mi correggo:

x avrà solo 4 kg di qualità a
Y avrà 5,5 kg di qualità a, 10,5 kg di qualità b,
Z avrà 5,5 kg di qualità a, 9,5 kg di qualità b, e 25 kg si qualità c.

Come dicevo vorrei sapere se c'è una equazione matematica o simile, che permette di fare ciò

axpgn
Mmmm --- scusami ma i criteri non sono chiari comunque (a me ovviamente ;-))

Dici che si va "in ordine di qualità" e poi in ordine di quantitativo ordinato crescente (criterio che non avevi scritto, peraltro ... ;-)) ma qui avevi scritto diversamente ...
"intrigo73":
... X che ha richiesto solo 4 kg inferiori alla media dei 15 kg/3 utenti avrà 3 kg di qualità "A" ...
ma anche con questi (nuovi) criteri non si capisce, per esempio, perché al cliente Y non vada tutto il restante della qualità A e così via ...
Forse non ti sei accorto che i criteri che usi li hai nella tua testa ma se vuoi un aiuto devi esplicitarli tutti per bene ;-)
Se per caso l'hai preso da un testo potresti pubblicarlo per intero ?

Cordialemente, Alex

intrigo73
Vedila in questo modo, non considerare per ora le qualità "b" e "c" pensa che devi consumare la qualità "a" che sono 15 kg su x che ha chiesto 4,y 6 kg, e z 40 kg di merci generiche delle quali per appunto 15 sono di caffè
Debbo quindi distribuire i 15 kg sui clienti x,y,z in funzione del loro ordine, ora io calcolo la media che è di 15/3 =5 poiché x ha chiesto solo 4 kg, è inferiore alla media di 5, x avrà solo i 4 kg ordinati
Quello che rimane dei 15 kg sarà 15-4=11 che andrà distribuitio su y e z, la media sarà 11/2= 6,5kg
Poiché sia y che z hanno fatto ordinativi superiori alla media di 6,5 entrambi avranno 6,5 kg
Alla fine i 15 kg di caffè andranno 4 a x 6,5 a y 6,5 a z, la somma ti dà appunto 15 kg.
Le eccedenze di y e z verranno usate con lo stesso criterio sopra esposto per le qualità b
E il residuo per la qualità c.

Io non riesco a spiegarmi meglio ma l'algoritmo è :dato n il numero degli utenti e a1,a2....an le rispettive quantità ordinate che complessivamente fanno la quantità costante x(i famosi 15 kg), faccio:
Trova il minore, min, di a1,a2....an Se min X=X-min(il residuo)
Rifaccio lo stesso peri rimanenti n-1 utenti....
Trova minore, min, di a1,a2....an-1se min

axpgn
Mah ... è una tua esigenza ? è un problema da risolvere ? è un algoritmo da sviluppare con un programma ?
Non esiste un testo della questione ?

Più o meno ho capito il senso ma in ogni problema le condizioni e gli obiettivi devono essere chiari ... e da quello che ho capito quello che ti serve è un algoritmo non una formula (i calcoli da fare dipendono da quello che accade prima, è tutto un "If" ... :))

Cordialmente, Alex

intrigo73
È una mia esigenza, personalmente l'algoritmo già l'avevo fatto, tant'è che l'ho postato, fare un programma non sarebbe un problema, il fatto è che vorrei trovare una soluzione per fare questo calcolo su un foglio Excel, senza passare per script

Nella mia ignoranza ho pensato che esistesse una formula di ripartizione che potesse fare ciò

axpgn
Una formula no ma se il numero delle varietà e dei clienti è fisso (o almeno piccolo) con un foglio Excel si può fare ...

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.