Domanda

Ho un foglio Excel che ha un elenco di giocatori sportivi, le loro posizioni, un salario assegnato a quei giocatori e una quantità proiettata di punti.

Attualmente sto usando il risolutore per creare il miglior gruppo di giocatori sportivi possibili con determinate restrizioni di posizione e all'interno di un tappo salariale predefinito.

Nel mio esempio specifico, le diverse posizioni del giocatore sono: PG, SG, SF, PF, C, G, e F. Nota che A G può essere un PG o un SG, e un F può essere uno SF o pf.

Questo risolutore funziona attualmente, ma in alcuni casi un giocatore potrebbe avere più posizioni. Quindi, ad esempio, il giocatore A può essere usato come SF o un SG.

C'è un modo per spiegare questo all'interno di una funzione del risolutore in modo che il giocatore in questione possa essere utilizzato in entrambi gli slot?

Per aiutare a spiegare, fornirò alcuni esempi dei dati utilizzati. Ecco un piccolo esempio della lista dei giocatori:

Position Player             Salary     Game                Points   Pos 1   Pos 2
PF/C    Kevin Love          $10,400     Pho@Min 09:30PM ET  53.17    PF      C
PG/SG   Stephen Curry       $10,000     GS@Bkn 07:30PM ET   47.50    PG      SG
SG/SF   James Harden        $9,500  LAL@Hou 08:00PM ET  41.13    SG      SF 
PF/C    LaMarcus Aldridge   $9,500  Orl@Por 10:00PM ET  45.22    PF      C
PF/C    Anthony Davis       $9,200  Was@NO 08:00PM ET   42.97    PF      C
PF/C    Blake Griffin       $9,000  Bos@LAC 10:30PM ET  42.66    PF      C
PG      John Wall           $8,900  Was@NO 08:00PM ET   42.09    PG
PF/C    Dwight Howard       $8,700  LAL@Hou 08:00PM ET  41.19    PF      C
SG/SF   Paul George         $8,600  Ind@Atl 07:30PM ET  40.06    SG      SF
PF      Paul Millsap        $8,400  Ind@Atl 07:30PM ET  37.96    PF
PF/C    Al Horford          $8,300  Ind@Atl 07:30PM ET  37.33    PF      C
.

Per risolvere il problema G e F, ho un elenco che raccoglie i giocatori "selezionati" e quell'elenco ha un min / max di ciascuno. Quindi in questo esempio ho bisogno di 1 PG, 1 SG e 1 G. Quindi ho una colonna PG con un minimo di 1 e un max 2, una colonna SG con un minimo di 1 e un massimo di 2 e G Colonna, che aggiunge PG / SG insieme che ha un minimo di 3 e un max 3. Quindi parte dei criteri del risolutore è tutto il min / max deve corrispondere.

Ho diviso la prima colonna in POS1 e POS2 per separare le due posizioni possibili, ma non riesco a capire come includere sia nella funzione SOLVER. Per un giocatore come Kevin Love, voglio che il risolutore tenga conto del fatto che può essere inserito nei punti PF, F, o C.

Ecco quella tabella:

    PG  SG  SF  PF  C   G   F   Ttl
Min 1   1   1   1   1   3   3   8
Max 3   3   3   3   2   4   4   8
Cur 1   3   1   2   1   4   3   8
.

Quindi, ad esempio, i criteri del risolutore sono:

Sum of Salary <= Salary Cap (50000)
PG Cur >= PG Min
Repeat for all Min
PG Cur <= PG Max
Repeat for all Max
Maximize Points
.

E infine, ecco un esempio di una soluzione:

PG   Stephen Curry    $10,000     47.5
SG   James Harden     $9,500      41.13
SF   Paul George      $8,600      40.06
PF   Dwight Howard    $8,700      41.19
C    Blake Griffin    $9,000      42.66
G    John Wall        $8,900      42.09
F    Al Horford       $8,300      37.33
Total                 $63,000     292.5
.

Ogni giocatore si inserisce nel loro slot perché una delle loro due posizioni (POS1 o POS2) si adatta ai criteri. Ovviamente il totale non si adatta, quindi questa non sarebbe una soluzione praticabile, ma è solo un esempio.

Speriamo di aver fornito abbastanza dettagli, ma se non per favore fammi sapere e sarò felice di spiegare ulteriormente. Grazie in anticipo.

È stato utile?

Soluzione

La tua domanda è ancora un po 'vaga perché il tuo tappo salariale è $ 50.000 ma mostri $ 63.000 di giocatori selezionati.

Assunzioni:
1. Vuoi 5 giocatori poiché questo è il numero di giocatori del piano e l'unico modo per ottenere una squadra composta dal tuo elenco dei giocatori sotto $ 50.000. Questo è probabilmente i cerchi fantasy e vuoi 7 o 8, ma la soluzione dovrebbe ancora funzionare per 8 giocatori con un elenco più ampio di opzioni e stipendi inferiori.

2. Suppongo inoltre che ci sia poco-nessun VBA qui da quando non hai fornito alcuno - o almeno niente di tutto ciò che deve essere regolato.

La mia soluzione (che è ancora in collaudo) è di lanciare / lanciare (o VBA equivalente) per POS1 e POS2 a un testo di numero di posizione (cioè, 1= PG, 2= SG, ecc.). Avanti, =concatenate(Pos1, Pos2) In modo che un PG sia un 11, un PG / SG è un 12, ecc. ("G" è anche un 11 in questo scenario che potrebbe mettere un problema tecnico nella mia logica).

Cambia la tua tabella di posizione con valori min / max / curriculum Sembra qualcosa del genere:

Pos.    | PG | G  | PG/SG | SG | SG/SF | SF/PF | F  | PF | PF/C | C  
--------------------------------------------------------------------  
Pos1    | 1  | 1  | 1     | 2  | 2     | 3     | 3  | 4  | 4    | 5  
Pos2    | 1  | 2  | 2     | 2  | 3     | 4     | 4  | 4  | 5    | 5  
PosNbr  | 11 | 12 | 12    | 22 | 23    | 34    | 34 | 44 | 45   | 55  
--------------------------------------------------------------------  
Min     | 1  | 3  | 3     | 1  |       | 3     | 4  | 1  |      | 1  
Max     | 3  | 4  | 4     | 3  |       | 4     | 4  | 3  |      | 2  
Curr    | 1  | 1  | 1     | 0  | 0     | 0     | 0  | 0  | 3    | 0  
.

(i valori sono i miei).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top