-
Notifications
You must be signed in to change notification settings - Fork 253
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Algoritmo 2020 #74
Comments
Oi, @ronecharles |
Bom dia. @arnaldog12 ///////////////////////////////////////////// import pandas as pd ano = '2020' qtd_atletas = len(medias['player_id'].unique()) posicoes = medias['player_position'].unique() medias['Rank'] = None colunas_unicos = ['Rank','player_id','player_position'] atletas.head() partidas = pd.read_csv(r'https://raw.githubusercontent.com/henriquepgomide/caRtola/master/data/'+ano+'/'+ano+'_partidas.csv') rodada_atual = 7 df_partidas.shape df_partidas.head() import numpy as np posicao = 'ata' M M.shape df_partidas_posicao = df_partidas[df_partidas['atletas.posicao_id'] == posicao].copy() for partida in range(len(partidas)-1): #Vamos deixar a última partida de fora para testes
M M = np.nan_to_num(M) evals, evecs = np.linalg.eig(M.T) evec1 = evec1[:,0] stationary medias[medias.player_position == posicao][list(stationary > 0.015)] stationaries = {} for posicao in posicoes:
rodada = 38 df_rodada = df_partidas[df_partidas['round'] == rodada].copy() for jogador in range(len(df_rodada)): df_rodada = df_rodada[df_rodada['atletas.status_id'] == 'Provável'].copy() df_rodada.head() formacao = { cartoletas = 140 df_rodada.set_index('atletas.slug',inplace=True) dummies_posicao = pd.get_dummies(df_rodada['atletas.posicao_id']) from pulp import LpMaximize, LpProblem, lpSum, LpVariable prob = LpProblem("Melhor_Escalacao", LpMaximize) prob += lpSum([c[i] * y[i] for i in y]) <= cartoletas, "Limite de Cartoletas" prob.solve() escalados = [] colunas = ['atletas.posicao_id','atletas.clube.id.full.name','atletas.pontos_num','atletas.preco_num'] df_rodada.loc[escalados]['atletas.pontos_num'].sum() df_rodada.loc[escalados]['atletas.preco_num'].sum() jogar_em_casa = 5 times = { times_casa = partidas[partidas['round'] == rodada]['home_team'] for time in times: z = df_rodada['probs'].to_dict() prob = LpProblem("Melhor_Escalacao", LpMaximize) prob += lpSum([c[i] * y[i] for i in y]) <= cartoletas, "Limite de Cartoletas" prob.solve() escalados = [] colunas = ['atletas.posicao_id','atletas.clube.id.full.name','atletas.pontos_num','atletas.preco_num'] df_rodada.loc[escalados]['atletas.pontos_num'].sum() df_rodada.loc[escalados]['atletas.preco_num'].sum() ///////////////////////////////////////////// Estou rodando o algoritmo base do repositório, adequado para os dados de 2020 e rodada 8 Uso Python 3, no Windows. Este mesmo algoritmo base 2019, rodada 38, faz a escalação perfeitamente, como no exemplo. Parece que ao trazer os dados 2020 algo muda... |
Ótimo trabalho, show esse algoritmo.
Ao rodar a rodada 1 a 7 2020, tentando o solver para rodada 8
a array de dados está retornando números infinitos, gerando o erro NAN no python.
O mesmo código usado em 2019 funciona perfeitamente.
Tentei substituir os NAN por 0,dai ele roda... mas ele não encontra resposta para o problema, ou seja a sugestão de escalaçao.
The text was updated successfully, but these errors were encountered: