def get_melhor_formacao_algoritmo(nome, cartoletas, conteudo_csv, formacoes,
                                  info, limiar_alg_genetico):
    times_montados = {}
    for formacao in formacoes:
        logging.debug(
            "Montando time para formacao {0} usando algoritmo {1}.".format(
                formacao, nome))
        if nome == "Balanceado":
            time_convocado = algoritmo_balanceado(nome, cartoletas,
                                                  conteudo_csv, formacao, info)
        elif nome == "Aleatorio":
            time_convocado = algoritmo_aleatorio(nome, cartoletas,
                                                 conteudo_csv, formacao, info)
        elif nome == "Genetico":
            time_convocado = algoritmo_genetico(nome, cartoletas, conteudo_csv,
                                                formacao, limiar_alg_genetico,
                                                info)
        elif nome == "Estrela Solitaria":
            time_convocado = algoritmo_estrela_solitaria(
                nome, cartoletas, conteudo_csv, formacao, info)
        elif nome == "Balanceado V2":
            time_convocado = algoritmo_balanceado_V2(nome, cartoletas,
                                                     conteudo_csv, formacao,
                                                     info)
        elif nome == "Selecao da Rodada":
            time_convocado = algoritmo_selecao_brasileira(
                nome, cartoletas, conteudo_csv, formacao, info)

        media_time = mat_cartola.get_valor_indice_acumulado_time(
            time_convocado, info, "media")
        times_montados[media_time] = time_convocado
        custo_time = mat_cartola.get_valor_indice_acumulado_time(
            time_convocado, info, "preco")
        logging.debug("Media: {0}".format(media_time))
        logging.debug("Custo: {0}".format(custo_time))
        logging.debug(
            "###################################################################################"
        )

    media_time_campeao = max(times_montados)
    time_campeao = times_montados[media_time_campeao]
    custo_time_campeao = mat_cartola.get_valor_indice_acumulado_time(
        time_campeao, info, "preco")

    logging.info("\n")
    logging.info("Algoritmo: {0}".format(nome))
    logging.info("Media do time vencedor: {0}".format(media_time_campeao))
    logging.info("Custo do time vencedor: {0}".format(custo_time_campeao))
    import view
    view.imprime_time(time_campeao, info)
    logging.info("\n")
    return time_campeao
def get_melhor_formacao_algoritmo(nome, cartoletas, conteudo_csv, formacoes, info, limiar_alg_genetico):
	times_montados = {}
	for formacao in formacoes:	
		logging.debug ("Montando time para formacao {0} usando algoritmo {1}.".format(formacao, nome))
		if nome == "Balanceado":
			time_convocado = algoritmo_balanceado(nome, cartoletas, conteudo_csv, formacao, info)
		elif nome == "Aleatorio":
			time_convocado = algoritmo_aleatorio(nome, cartoletas, conteudo_csv, formacao, info)
		elif nome == "Genetico":
			time_convocado = algoritmo_genetico(nome, cartoletas, conteudo_csv, formacao, limiar_alg_genetico, info)
		elif nome == "Estrela Solitaria":
			time_convocado = algoritmo_estrela_solitaria(nome, cartoletas, conteudo_csv, formacao, info)
		elif nome == "Balanceado V2":
			time_convocado = algoritmo_balanceado_V2 (nome, cartoletas, conteudo_csv, formacao, info)
		elif nome == "Selecao da Rodada":
			time_convocado = algoritmo_selecao_brasileira (nome, cartoletas, conteudo_csv, formacao, info)

		media_time = mat_cartola.get_valor_indice_acumulado_time(time_convocado, info, "media")
		times_montados[media_time] = time_convocado
		custo_time = mat_cartola.get_valor_indice_acumulado_time(time_convocado, info, "preco")
		logging.debug ("Media: {0}".format(media_time))
		logging.debug ("Custo: {0}".format(custo_time))
		logging.debug ("###################################################################################")

	media_time_campeao = max(times_montados)
	time_campeao = times_montados[media_time_campeao]
	custo_time_campeao = mat_cartola.get_valor_indice_acumulado_time(time_campeao, info, "preco")

	logging.info ("\n")
	logging.info ("Algoritmo: {0}".format(nome))
	logging.info ("Media do time vencedor: {0}".format(media_time_campeao))
	logging.info ("Custo do time vencedor: {0}".format(custo_time_campeao))
	import view
	view.imprime_time(time_campeao, info)
	logging.info ("\n")
	return time_campeao
# algoritmos = ["Balanceado V2"]
# algoritmos = ["Aleatorio"]
# algoritmos = ["Estrela Solitaria"]
# algoritmos = ["Genetico"]

times_campeoes = {}
medias_campeoes = {}

for alg in algoritmos:
	if alg != "Genetico":
		times_campeoes[alg] = algoritmo.get_melhor_formacao_algoritmo(alg, cartoletas, conteudo_csv, formacoes, info, None)
	else:
		if len(medias_campeoes) != 0:
			limiar_algoritmo_genetico = max(medias_campeoes)
		else:
			limiar_algoritmo_genetico = 200.00

		print ("Limiar para algoritmo genetico: {0}".format(limiar_algoritmo_genetico))
		times_campeoes[alg] = algoritmo.get_melhor_formacao_algoritmo(alg, cartoletas, conteudo_csv, formacoes, info, limiar_algoritmo_genetico)
	
	media_time_campeao_alg = mat_cartola.get_valor_indice_acumulado_time(times_campeoes[alg], info, "media")
	medias_campeoes[media_time_campeao_alg] = alg

idx_vencedor_geral = max(medias_campeoes)
algoritmo_vencedor_geral = medias_campeoes[idx_vencedor_geral]
print "Vencedor Geral: {0}".format(algoritmo_vencedor_geral)
time_vencedor_geral = times_campeoes[algoritmo_vencedor_geral]
view.imprime_time(time_vencedor_geral, info)
custo_vencedor_geral = mat_cartola.get_valor_indice_acumulado_time(time_vencedor_geral, info, "preco")
print "Media: {0}; Custo: {1}".format(idx_vencedor_geral, custo_vencedor_geral)
browser.close()