Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Risolutore scenari

Ultimo Aggiornamento: 19/04/2023 19:35
Post: 50
Registrato il: 03/12/2005
Utente Junior
2010
OFFLINE
17/04/2023 14:18

Buongiorno,
avrei una situazione da affrontare, credo, con il risolutore di excel, ma non ho idea nemmeno di dove cominciare.
In pratica ho sette (o più, nel mio caso li ho limitati a sette) nomi di atleti che, a seconda della posizione di scelta, ottengono determinati punteggi.
Avrei bisogno di ottenere la combinazione di 7 atleti differenti che occupino le 7 posizioni e che mi diano la somma maggiore di punti.
Non so se sono riuscito a spiegarmi.
Grazie.
Post: 565
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
17/04/2023 15:02

ciao, in qualche modo ho capito, ma chi ti ha detto che bisogna usare il risolutore ?
il risolutore non accetta il tuo schema per vari motivi
- lui cerca numeri, non puo' confondersi con i nomi di una tabella,quindi si dovrebbe cambiare la struttura tabella
- lui non vuole doppioni numerici altrimenti confonde i vari atleti
- in questa domanda chiaramente ogni atleta va preso solo una volta con un suo punteggio,e questo il risolutore nonopuo' farlo a meno che non venga configurato dal padreterno
- parlando in prospettiva, il file reale quanti atleti prevedrebbe ? più di una ventina diventerebbe ingestibile (col risolutore)
- e forse altro
l'algoritmo che ho in mente secondo me prevede il VBA, e in questa tabella bisognerebbe calcolare ogni punteggio di ogni atleta per ogni altro punteggio
Già così, cioè 7 elevato alla settima potenza, equivale a 823543 situazioni tra le quali scegliere quella con punteggio maggiore
ma il VBA reggerebbe ancora la cosa
Riepilogano cosa varierebbe ? il numero atleti o il numero delle ipotesi di punteggio ?
comunque io non so creare il VBA e da un po' di tempo sto imparando a manovrare il risolutore, che,nei casi possibili è effettivamente interessante
In definitiva il risolutore equivarrebbe ad uno spreco immenso di risorse con risultati imprecisi, contraddittori e inutilmente esagerati, oltre a tempi insopportabili
Un bravo VBAista se la caverebbe con poco se si limitasse ad eseguire l'algoritmo che gli viene suggerito e cioè:
con dei cicli FOR moltiplicare ogni punteggio per ogni altro punteggio mantenendo in memoria il massimo che si raggiunge in ogni momento.
[ ed anche a patto che le 7 posizioni siano diverse (supponendo che le posizioni siano una specie di ordine d'arrivo)]
Quindi sarebbe ognuno dei 7 punteggi elevato alla potenza uguale al numero degli atleti
Che cosa è esattamente la posizione ?

Leo
[Modificato da L2018 17/04/2023 15:47]

LEO
https://t.me/LordBrum
Post: 50
Registrato il: 03/12/2005
Utente Junior
2010
OFFLINE
17/04/2023 15:49

Il numero di atleti potrebbe anche essere limitato a 7, anche se per quel che converrebbe a me il numero ideale sarebbe 15.
Il numero di posizioni invece è fisso 7: ogni posizione individua un punteggio diverso se lo stesso atleta viene indicato in posizione 1 piuttosto che 7.
Post: 568
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
17/04/2023 16:15

ciao, soprattutto per excel che è lento ma anche per altri linguaggi, poichè 7 * 7 atleti porterebbe a 800 mila operazioni (senza risolutore) e 4747 miliardi di operazioni con 15 atleti, è importante sapere il significato ESATTO di posizione
E' importante ?
E' un ordine di arrivo o è una cosa a casaccio ?
potresti scrivere qui una qualche forma di un esempio ?
Il fatto è che penso che il risolutore ce lo possiamo scordare, resta da vedere se è una cosa da codice VBA o se non sia, visto mai, una inezia da formulone.
I 7 atleti possono avere per esempio tutti la posizione 3 ?
Sto cercando di indirizzarti se non altro per chi eventualmente ti aiuterà

Leo

questo screenshot ti dice qualcosa ?
[Modificato da L2018 17/04/2023 16:25]

LEO
https://t.me/LordBrum
Post: 51
Registrato il: 03/12/2005
Utente Junior
2010
OFFLINE
17/04/2023 16:55

La posizione è quella di "previsione", che influisce sul risultato dei punteggi.
Non riesco a spiegarmi meglio di quanto ho fatto: un atleta ha un punteggio diverso a seconda della posizione in cui viene previsto (oltre che alla sua posizione di arrivo nella gara). Ma questo non è rilevante per il mio scenario, nel senso che i possibili punteggi li definisco io tramite altri calcoli.
Quello che trovo complicato da realizzare è scegliere la combinazione univoca (un atleta diverso per ogni posizione) che dia il risultato più alto (che non è necessariamente quello screenshot: in quel caso lo è perché i punteggi sono abbastanza "lontani" tra di loro, ma con punteggi vicini non necessariamente il max per ogni posizione è la soluzione migliore).
Per quanto riguarda il numero di atleti da considerare, ripeto che l'ideale sarebbe 15, ma un numero minimo secondo me accettabile per dare senso alla struttura che vorrei realizzare è 10.
Post: 3.463
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
17/04/2023 17:00

ciao
fai un esempio in cui il massimo non è la soluzione e spiega il perchè, altrimenti ci giriamo intorno senza capire

saluti



Domenico
Win 10 - Excel 2016
Post: 570
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
17/04/2023 17:19

Re:
Ciao

posizione di previsione non mi dice niente
non riesci a spiegarti: devi farlo lo stesso, qui parliamo di numeri, anche alti, impegno,algoritmi ecc
un atleta diverso per ogni posizione equivale a dire una posizione diversa per ogni atleta
questo aumenta, complica i calcoli ma almeno appare più chiaro, perchè quindi la posizione conta
non è quello dello screenshot: vuoi dire che lo screenshot NON va bene perchè ha posizioni ripetute
con punteggi vicini non necessariamente il max per ogni posizione è la soluzione migliore: siamo assolutamente lontani da possibili calcoli, forse bisognerebbe invocare un altro parametro ?
da 7 a 10, e poi magari a 15 atleti salgono esponenzialmente i tempi e i conteggi., ecco perchè bisogna assolutamente essere certi di ciò che si vuole.

Puo' darsi che quello che vuoi tu sia una specie di classifica delle combinazioni dei punteggi massimi raggiungibili da gruppi di atleti diversi, con tutte posizioni diverse, tra cui scegliere poi, a occhio, la combinazione che ti aggrada anche se non ha il punteggio massimo.

Tutto questo io non lo so fare (con Excel), come già detto, per cui lo lascio in eredità a qualcuno che sappia padroneggiare il VBA, e ripeto che il risolutore, per quanto ne so, è escluso.

Leo
[Modificato da L2018 17/04/2023 17:22]

LEO
https://t.me/LordBrum
Post: 3.464
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
17/04/2023 17:34

Ciao
Yerle, ma si curo che parliamo di combinazioni o piuttosto di permutazioni??

Rileggendo con attenzione:

....scegliere la combinazione univoca (un atleta diverso per ogni posizione) che dia il risultato più alto....


sembra che, per esempio il Nome_1 lo devi valutare a secondo della posizione che occupa, quindi se per esempio se lo si mette in posizione 7, varrà 8 punti e così via per gli altri.

Pertanto tu vuoi le permutazioni di 7 atleti che a seconda della posizione varranno X e di queste permutazioni cerchi la combinazione univoca che ti restituisca la somma più alta.

E' così ????

saluti




Domenico
Win 10 - Excel 2016
Post: 52
Registrato il: 03/12/2005
Utente Junior
2010
OFFLINE
17/04/2023 18:24

Re:
dodo47, 17/04/2023 17:34:

Ciao
Yerle, ma si curo che parliamo di combinazioni o piuttosto di permutazioni??

Rileggendo con attenzione:

....scegliere la combinazione univoca (un atleta diverso per ogni posizione) che dia il risultato più alto....


sembra che, per esempio il Nome_1 lo devi valutare a secondo della posizione che occupa, quindi se per esempio se lo si mette in posizione 7, varrà 8 punti e così via per gli altri.

Pertanto tu vuoi le permutazioni di 7 atleti che a seconda della posizione varranno X e di queste permutazioni cerchi la combinazione univoca che ti restituisca la somma più alta.

E' così ????

saluti




Si, è ciò che più somiglia a quello che sto cercando.
Il nome_1 a seconda delle 7 posizioni che occupa avrà 7 punteggi diversi (già calcolati e stabiliti a priori).
Lo stesso per gli n ulteriori nomi da prendere in considerazione (facciamo 10 in totale per avere dei riferimenti definiti).
Dopodiché avendo il quadro di 7 posizioni x n nomi con tutti i punteggi definiti (ripeto, già calcolati ante post), io cerco l'insieme degli atleti che, occupando univocamente una delle 7 posizioni (in sostanza, se considero nome_1 in posizione 1 NON lo considero in nessun altra posizione), mi dà la somma più grande.
Ne approfitto per rispondere perché il MAX dei punteggi per singola posizione non funziona: perché lo stesso atleta potrebbe avere il punteggio più grande di tutti gli altri per più posizioni.
Per il momento, mediante caselle di appoggio e formule varie, sono riuscito ad isolare univocamente i più grandi valori per posizione, eliminando i doppi: ma non ho potuto far altro che considerare il primo MAX intercettato, farlo valere come scelta per quella posizione ed escludere il relativo nome per le successive posizioni; tutto questo però a prescindere dai valori successivi (che invece potrebbero consigliare di scegliere un altro MAX a pari punti). Eventualmente mi accontenterò di quello che sono riuscito a tirar fuori in questo modo.
Grazie a tutti in ogni caso.
Post: 571
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
17/04/2023 20:56

ciao

mi ero allargato per ridondanza onnicomprensiva a parlare di potenze, invece Domenico ha ragione, è problema di permutazioni.
Quindi ho permutato semplicemente le posizioni
Nel file allegato compaiono:
la somma punteggi in ordine decrescente
i punti di ogni posizione permutata
la posizione riferita allo specchietto proposto
Purtroppo il file l'ho fatto in fretta con altro linguaggio, e non ho pensato di evidenziare gli atleti
ahah, ma gli atleti nel mio file sono sempre 1,2,3,4,5,6,7
se necessario possiamo continuare

Leo
[Modificato da L2018 17/04/2023 21:35]

LEO
https://t.me/LordBrum
Post: 574
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
18/04/2023 10:20

buongiorno
bene ha fatto Domenico a chiedere ulteriori spiegazioni, compresa la domanda se combinazioni o permutazioni
l'OP ha faticato a spiegare, ma io con rilettura attenta credo di aver capito
le posizioni sono sempre 7 mentre gli atleti possono essere in numero variabile, anche 10 o 15 o piu
percio direi che il problema ha una soluzione combinatoria unita ad una permutatoria
la combinatoria serve a formare le "combinazioni" intese come squadre di 7 atleti ciascuna, questo perchè non sono accettati atleti ripetuti nè posizioni ripetute, mentre le permutazioni servono per ricavare le varie possibilità per ogni squadra, tra cui scegliere quelle con punteggio maggiore.
Quindi
con 10 atleti a squadre di 7 le combinazioni sono 120, ognuna delle quali deve subire le permutazioni di 7 posizioni che sono 5040.
Totale 604800
Aumentando il numero degli atleti, il VBA deve tener conto del fatto che Excel ha 2^20 righe, per cui tocca risolvere tale limitazione.
S&O
Alla prossima puntata ( ammesso che il mio contributo sia utile )

Leo
[Modificato da L2018 18/04/2023 11:02]

LEO
https://t.me/LordBrum
Post: 3.465
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
18/04/2023 10:31

Yerle

ciao

allego un esempio ridotto di quanto ho capito.

Come vedi ci sono 3 atleti (n_ 1, n_2, n_3) in col. A che poi porteremo a 10, che generano 6 permutazioni da C3-D8.
In C1 e D1 le posizioni (1, 2) che poi porteremo a 7
In L1 è posizionata la tua tabella

La combinazione di tali permutazioni che genera il valore più alto (95) è la seconda: n_1 - n_3

Se confermi, proviamo a sviluppare il codice che momentaneamente si avvale di formule per ricavare i valori secondo la posizione.
Non è infatti pensabile applicare tale formula al tuo elaborato finale che mi dici dovrà contenere 10 atleti presi 7 alla volta.
Infatti per 10 atleti presi 7 alla volta, le permutazioni sarebbero: 604.202 di cui poi trovare quella che genera la massima combinazione.
Su 15 atleti supereremmo la capienza del foglio.

saluti




[Modificato da dodo47 18/04/2023 10:32]
Domenico
Win 10 - Excel 2016
Post: 7.219
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
18/04/2023 11:28

Ciao io sto tentando di svilupparla in questo modo



attualmente i dati sono manuali, ed anche casuali i valori assegnati agli atleti, ho sviluppato solo pochi scenari

se va bene vedo se riesco a farlo fare con il VBA ma non è sicuro perche le combinazioni sono molte

Ciao By Sal (8-D

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 3.466
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
18/04/2023 13:03

ciao
allego il file definitivo.

NB: il file è tarato per 7 posizioni fisse ed un minimo di 7 atleti che puoi estendere massimo a 10, basta implementare la colonna A e la colonna U oltre i relativi valori nella tabella.

Ricordo che l'elaborazione per 7 atleti dura pochi secondi, mentre per 10 atleti ci vogliono circa 6 minuti

saluti

edit:

sostituito allegato più performante nei tempi, ora per 10 atleti il tempo è di circa 2,30 minuti

alla fine dell'elaborazione vengono segnalate le righe che contengono il massimo valore del "team".
Utilizzando il filtro per colore in R1, verranno mostrate tali righe

saluti




[Modificato da dodo47 18/04/2023 17:03]
Domenico
Win 10 - Excel 2016
Post: 53
Registrato il: 03/12/2005
Utente Junior
2010
OFFLINE
19/04/2023 19:35

Scusate ma sono stato fuori senza possibilità di accedere al forum.
Dunque, non so proprio come ringraziarvi: dodo47 il tuo file fa esattamente ciò che mi serviva.
Anche la soluzione di sal andava nella direzione giusta ma, a questo punto, direi che non serve continuare a calcolare tutte le combinazioni.
Grazie ancora a entrambi (soprattutto a dodo ovviamente): mi avete risolto un grande (per me) problema.
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 06:40. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com