Question

J'ai une feuille Excel qui a une liste d'acteurs sportifs, de leurs positions, un salaire attribué à ces joueurs et une quantité de points projetée.

J'utilise actuellement Solver pour créer le meilleur groupe de joueurs de sport possible avec certaines restrictions de position et dans une casquette de salaire prédéfinie.

Dans mon exemple spécifique, les différentes positions de joueur sont les suivantes: PG, SG, SF, PF, C, G et F. Notent qu'un G peut être un PG ou un SG, et une SG peut être soit une SF ou pf.

Ce solveur fonctionne actuellement, mais dans certains cas, un joueur peut avoir plusieurs positions. Donc, par exemple, le joueur A peut être utilisé comme SF ou un SG.

Y a-t-il un moyen de tenir compte de cela dans une fonction de solveur afin que le joueur en question puisse être utilisé dans l'une ou l'autre des machines à sous?

Pour aider à expliquer, je vais fournir quelques exemples des données utilisées. Voici un petit échantillon de la liste des joueurs:

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

Pour résoudre le problème G et F, j'ai une liste qui comporte la liste des joueurs "sélectionnés" et cette liste a un min / max de chacun. Donc, dans cet exemple, j'ai besoin de 1 pg, 1 sg et 1 g. J'ai donc une colonne PG avec une minute de 1 et un max de 2, une colonne SG avec une minute de 1 et un max de 2, et un g Colonne, qui ajoute PG / SG ensemble qui a une min de 3 et un maximum de 3. La partie des critères de solveur est que la correspondance min / max doit correspondre.

J'ai divisé la première colonne en POS1 et POS2 pour séparer les deux positions possibles, mais je ne peux pas comprendre comment inclure les deux dans la fonction de solveur. Pour un joueur comme Kevin Love, je souhaite que le résolveur prend en compte qu'il puisse être placé dans les taches PF, F ou C.

Voici ce tableau:

    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

Donc, par exemple, les critères de solveur sont les suivants:

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

Et enfin, voici un exemple de solution:

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

Chaque joueur s'intègre dans leur fente car l'une de leurs deux positions (POS1 ou POS2) correspond aux critères. Évidemment, le total ne convient pas, il ne serait donc pas une solution viable, mais ce n'est qu'un exemple.

J'espère que j'ai fourni suffisamment de détails, mais sinon me le faire savoir et je serai heureux d'expliquer plus loin. Merci d'avance.

Était-ce utile?

La solution

Votre question est toujours un peu vague car votre casquette de salaire est de 50 000 $ mais vous montrez 63 000 $ de joueurs sélectionnés.

Hypothèses:
1. Vous voulez 5 joueurs car c'est le nombre de sols de joueurs et le seul moyen d'obtenir une équipe composée de votre liste de joueurs inférieure à 50 000 $. C'est probablement des cerceaux fantastiques et vous voulez 7 ou 8, mais la solution devrait toujours fonctionner pour 8 joueurs avec une liste plus large d'options et des salaires plus basses.
2. Je suppose également qu'il n'y a pas peu de VBA ici depuis que vous n'avez pas fourni - ni au moins rien de tout cela doit être ajusté.

Ma solution (qui reste en test) est de lancer / couler (ou équivalent VBA) pour POS1 et POS2 à un texte de numéro de position (c'est-à-dire 1= pg, 2= SG, etc.).

Suivant, =concatenate(Pos1, Pos2) de sorte qu'un PG soit un 11, A PG / SG est un 12, etc. ("g" est également un 11 dans ce scénario qui pourrait mettre un problème dans ma logique).

Changer votre table de position avec les valeurs min / max / Cur ressemble à ceci:

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  

(les valeurs sont les miennes).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top