Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Per veri esperti... algoritmo di calcolo con "ripartizioni"
lunedì 19 maggio 2008 - 17.48
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
lun 19 mag 2008 - 17:48
Devo creare delle insert partendo da un risultato di una query e ponderando delle insert in funzione del numero di province ottenute nel risultato
un esempio
costante 60 = numero di attività che si posso fare al giorno
100 = elenco di records ritornati dalla select iniziale
3 = mi dice quante province in totale ci sono (province differenti) tra i record ottenuti
quindi ad esempio
60 Roma
30 Milano
10 Torino
60/3 = 20 numero attività al giorno per provincia
(ora inizia il mio problema)
a questo punto devo fare 100 insert con 60 attivita per giorno ma ponderandole per provincia (20 max per provincia al giorno)
quindi il primo giorno
20 Roma
20 Milano
10 Torino
(a questo punto i 10 che mancano per arrivare a 60 giornalieri potrei tralasciarli oppure se vi viene in mente una logica l'ideale sarebbe ripartirli sugli altri)
secondo giorno
20 Roma
10 Milano (se non ho ripartito i 10 avanzati prima)
Quello che non riesco a fare e creare la struttura logica per arrivare alle varie insert... come posso implementare questo algoritmo?
Grazie infinite!
bluland
Profilo
| Guru
1.149
messaggi | Data Invio:
lun 19 mag 2008 - 20:58
>Devo creare delle insert partendo da un risultato di una query
>e ponderando delle insert in funzione del numero di province
>ottenute nel risultato
>
>un esempio
>
>costante 60 = numero di attività che si posso fare al giorno
>
>100 = elenco di records ritornati dalla select iniziale
>
>3 = mi dice quante province in totale ci sono (province differenti)
>tra i record ottenuti
>
>
>quindi ad esempio
>
>60 Roma
>30 Milano
>10 Torino
>
>
>60/3 = 20 numero attività al giorno per provincia
>
>
>(ora inizia il mio problema)
>
>a questo punto devo fare 100 insert con 60 attivita per giorno
>ma ponderandole per provincia (20 max per provincia al giorno)
>
>quindi il primo giorno
>
>20 Roma
>20 Milano
>10 Torino
>
>(a questo punto i 10 che mancano per arrivare a 60 giornalieri
>potrei tralasciarli oppure se vi viene in mente una logica l'ideale
>sarebbe ripartirli sugli altri)
>
>
>secondo giorno
>
>20 Roma
>10 Milano (se non ho ripartito i 10 avanzati prima)
>
>
>
>Quello che non riesco a fare e creare la struttura logica per
>arrivare alle varie insert... come posso implementare questo
>algoritmo?
>
>Grazie infinite!
Non ho ben capito cosa devi fare!
dopo aver ottuenuto
>60/3 = 20 numero attività al giorno per provincia
con questo numero cosa devi fare?
Ciao
--------------------
Vincenzo PESANTE
System Engineer
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
lun 19 mag 2008 - 22:39
Allora ... speravo che l'esempio fosse servito :-((
ho un elenco di records, risultato di una query: 100
da questo elenco capisco quante sono le province differenti: 3
sapendo che posso fare 60 attività al giorno e che queste 60 attività devono essere "ponderate" per le province risultato della query (in questo caso 3) dovrò fare circa 60/3 attività per provincia al giorno
io devo creare le insert di ogni giorno, ponderando le province; quindi ogni giorno 60 attività e "circa" 20 per ogni provincia
il problema è che non sempre avrò un numero esatto di province
20 + 20 + 20
20 + 20 + 20
...
ma potrei avere risultati differenti
Io devo trovare una soluzione per ripartire nel modo piu corretto possibile le attività (per provincia) di ogni giorno
Grazie
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mar 20 mag 2008 - 09:12
ma quale è il peso per il quale devi eseguire la ponderazione?
Credo che il peso di ponderazione sia la grandezza(popolazione) della provincia.
A prescindere dal peso, l'importante è ricevere un numero di attività per provincia che sia un intero! non puoi certo fare 18, 7 insert.
Se ho ben capito, sono i resti che ti creano problemi giusto?
Tipo ti restano 4 attività e tu ti chiedi: a chi le associo?
Se è questo il problema io i resti li distribuirei equamente tra le tre province, ed un eventuale ulteriore resto lo assocerei alla provincia che ha maggior peso rispetto alle altre.
O meglio, i resti li riponderei e quindi riassociabili a ragion veduta, ed eventuali resti li distribuirei equamente, tra le province se è possibile o li assocerei alla provincia con maggior peso.
Ho capito o non ho capito nulla?
Riccardo
Ridaria
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
mar 20 mag 2008 - 12:38
Si il problema è quello
riempire ogni giorno con 60 attività (valore fisso)
se poi ho 20+20+20 tutto OK
se invece, nei giorni precedenti, ho già esaurito una provincia vorrà dire che il giorno sarà
30 + 30
o
28 + 32
non vorrei complicare troppo il calcolo, mi basta trovare un semplice metodo (anche tramite un compromesso) per riempire le 60 attività del giorno con i risultati della mia query iniziale... anche se le province non sono "perfettamente" ponderate e pesate tra loro
Grazie
luigidibiasi
Profilo
| Guru
1.077
messaggi | Data Invio:
mar 20 mag 2008 - 13:44
che intendi con ho esaurito una provincia?
Luigi Di Biasi
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mar 20 mag 2008 - 14:30
ecco e mi sembra che lo abbiamo trovato, distribuisci le attività per provincia mediante la ponderazione, gli eventuali resti li redistribuisci sempre secondo ponderazione, l'eventuale resto indivisibile lo associ alla provincia che pesa di più.
Era questo quello che volevi o no?
Riccardo
Ridaria
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
mar 20 mag 2008 - 17:09
con "Esaurito la provincia" intendo
dato che ogni giorno posso fare 60 attività (valore fisso, costante)
dato che nella query c'erano 3 differenti tipologie di province (esempio 100 risutati ma appartenenti a 3 province)
ogni giorno devo fare al max 60/3 = 20 province ....
ne farò 20 finchè non avrò "easurito" quelle ottenute dalla query
se ottengo (100 risultati)
50 MI
30 NA
20 TO
Torino verrà "esaurito" il primo giorno (20 Milano, 20 Napoli, 20 Torino)
Napoli verrà "esaurito" il secondo giorno... anzi me ne restano 10 da ripartire sui restanti (dato che Napoli sarebbe 20 primo giorno + 10 secondo giorno ..STOP esaurito)
etc
per quando riguarda la ponderazione, diciamo che non vorrei complicarvi la vita con calcoli troppo complicati, mi basta trovare un compresso che mi consenta di esaurire gli X risultati della query, ripartendoli (nel possibile) per giorno/provincia
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
mar 20 mag 2008 - 17:13
Scusate... dimenticavo il "grazie" per l'aiuto che mi state dando e per la pazienza!!
bluland
Profilo
| Guru
1.149
messaggi | Data Invio:
mar 20 mag 2008 - 21:59
>Si il problema è quello
>
>riempire ogni giorno con 60 attività (valore fisso)
>
>se poi ho 20+20+20 tutto OK
>
>se invece, nei giorni precedenti, ho già esaurito una provincia
>vorrà dire che il giorno sarà
>
>30 + 30
>
>o
>
>28 + 32
>
Questo calcolo quindi si prosegue finche non esaurisci tutte le province cioè finche non avrai
60 ?
saluti
--------------------
Vincenzo PESANTE
System Engineer
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
mar 20 mag 2008 - 23:15
60 per ogni giorno
poi dipende dal risultato della query iniziale
se nella query iniziale ho 360 risultati mi serviranno circa 6 giorni per esaurire tutti gli elementi, al passo di 60 attività al giorno
attenzione però che, fino ad esaurimento, dovrò ponderare di volta in volta le province
quindi nella fase iniziale (con l'esempio delle 3 prov nella query iniziale 60/3) avrò sempre (nei vari giorni)
20 + 20 + 20
20 + 20 + 20
20 + 20 + 20
... poi quando finiranno alcune province i 60 saranno ripartiti tra quelle rimanenti ...
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
mar 20 mag 2008 - 23:30
provo a fare un altro esempio
costante: 60 attività al giorno
faccio una query su una mia tabella e ottengo 300 risultati
con il mio bel count conto le province univoche ... nei 300 risultati ho 3 province ripartite in questo modo
150 NA
100 MI
50 BG
posso iniziare a creare le insert una per ogni giorno
quanti giorni mi serviranno (circa) ?? 300/60 = 5
quante attività per provincia ??? 60/3 = 20 .... ogni giorno, finche non "esaurisco una provincia"
procediamo
primo giorno, 60 insert
20 NA
20 MI
20 BG
secondo giorno, 60 insert (mi restano 130 NA, 80 MI, 30 BG)
20 NA
20 MI
20 BG
terzo giorno, 60 insert (mi restano 110 NA, 60 MI, 10 BG)
20 NA
20 MI
10 BG ... ne ho solo 10
ne prendo altre 10 tra NA o MI (per arrivare a 60) ... non è un problema mi basta trovare la logica piu semplice (non voglio complicarmi ulteriormente la vita)
quarto giorno, 60 insert (mi restano 85 NA, 35 MI, BG finite)
perchè 85 NA? perchè ne ho tolti 20 a 110 = 90 ed altri 5 di quei 10 famosi che dovevo ripartire
perchè 35 MI? perche ne ho tolti 20 a 60 = 40 ed altri 5 di quei 10 famosi che dovevo ripartire
30 NA
30 MI
quinto giorno, 60 insert (mi restano 55 NA, 5 MI)
....
bluland
Profilo
| Guru
1.149
messaggi | Data Invio:
mer 21 mag 2008 - 18:51
ok ci sono,
ma se fossero 302 record i due dispari come li gestiresti poi, non è detto da quello che ho capito che tu debba avere sempre multipli di 60..
potresti avere una situazione tipo
60
11 NA
2 MI
?
che succede?
oppure una situazione tipo
302:3?
come si fa con il resto?
alla fine rimarrebbe una citta con 2 o due citta con 1..
Ciao
--------------------
Vincenzo PESANTE
System Engineer
bluland
Profilo
| Guru
1.149
messaggi | Data Invio:
mer 21 mag 2008 - 19:03
Ricapitolo,
costante = 60
esempio 300 record 3 citta cosi divise
giorni che occorrono => 300 / 60 = 5
numero di attivita per i gioni che occorrono per ogni citta:
150 NA / 5 = 30
100 PA / 5 = 20
50 MI/ 5 = 10
quindi per 5 gg avrai rispettivamente per le 3 citta 30,20,10
Che ne pensi?
--------------------
Vincenzo PESANTE
System Engineer
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
dom 25 mag 2008 - 16:03
Potrebbe andare bene!
Grazie!!!
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !