Pergunta

Eu tenho uma planilha do Excel que contém uma lista de esportes de jogadores, suas posições, um salário atribuído a esses jogadores, e uma projeção quantidade de pontos.

Atualmente estou utilizando o solver para criar o melhor grupo de esportes de jogadores possível com determinada posição restrições e dentro de um determinado teto salarial.

No meu exemplo, a diferentes posições dos jogadores são:PG, SG, SF, PF, C, G e F.Note que um G pode ser um PG ou uma SG, e um F pode ser um SF ou PF.

Este solver está trabalhando atualmente, mas, em alguns casos, um jogador pode ter várias posições.Assim, por exemplo, o Jogador A pode ser usado como um SF OU SG.

Existe alguma maneira de explicar isso dentro de um Solver função, de modo que o jogador em questão pode ser utilizada em qualquer slot?

Para ajudar a explicar, vou dar alguns exemplos de dados que está sendo utilizado.Aqui está uma pequena amostra da lista de jogadores:

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

Para resolver o G e F problema, eu tenho uma lista que conta o "selecionado" os jogadores, e que a lista tem um min/max de cada um.Portanto, neste exemplo eu preciso de 1 PG, 1 SG, e 1 G.Então, eu tenho uma PG coluna com um mínimo de 1 e um máximo de 2, uma SG coluna com um mínimo de 1 e um máximo de 2, e uma coluna G, que adiciona PG/SG juntos, que tenha um mínimo de 3 e um máximo de 3.Em seguida, parte do solver critérios é tudo o min/max tem de corresponder.

Eu tenho dividir a primeira coluna em POS1 e POS2 para separar as duas posições possíveis, mas eu não consigo descobrir como incluir tanto no solver função.Para um jogador como Kevin Love, eu quero que o solver levar em conta que ele pode ser colocado na PF, F ou C pontos.

Aqui está a tabela:

    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

Assim, por exemplo, o Solver critérios:

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 finalmente, aqui está um exemplo de uma solução:

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

Cada jogador se encaixa em seu slot porque uma de suas duas posições (ou POS1 POS2) corresponde aos critérios.Obviamente, o total não cabe, por isso não seria uma solução viável, mas é apenas um exemplo.

Espero ter fornecido detalhes suficientes, mas se não, por favor, deixe-me saber e eu vou ser feliz para explicar um pouco mais.Obrigado antecipadamente.

Foi útil?

Solução

Sua pergunta é um pouco vaga, pois seu teto Salarial é de r $50.000, mas você mostrar $63,000 de jogadores seleccionados.

Pressupostos:
1.Você quer 5 jogadores, já que esse é o número de jogadores chão e a única maneira de ter uma equipe composta de seu player lista abaixo de us $50.000.Este é, provavelmente, Fantasia aros e você deseja que 7 ou 8, mas a solução deve ainda trabalhar para 8 jogadores com uma lista mais abrangente de opções e salários mais baixos.
2.Eu também vou assumir que há pouco-não VBA aqui, uma vez que não fornecem qualquer - ou pelo menos nenhum que precisa ser ajustado.

Minha solução (que ainda está em testes) é jogar/cast (ou VBA equivalente) para Pos1 e Pos2 para um texto de posição de número (por exemplo, 1 = PG, 2=SG, etc.).

Seguinte, =concatenate(Pos1, Pos2) para que uma PG é de 11, uma PG/SG é uma de 12, etc.("G" é também um 11 neste cenário que pode colocar uma falha na minha lógica).

Mudar a sua Posição da Tabela com Min/Max/Cur valores é algo como isto:

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  

(os valores são de minha autoria).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top