Excel Solver com Múltiplas Variáveis de Entrada
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.
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).