コード例 #1
0
ファイル: main.py プロジェクト: Leuzi/SportCalendar
def main():

    equipos, costes = cargaDatos(sys.argv[1], sys.argv[2])
    grupos = list()
    grupoA = list()
    grupoA.append(equipos[0])
    grupoA.append(equipos[3])
    grupoA.append(equipos[5])
    grupoA.append(equipos[8])
    grupoA.append(equipos[9])
    grupoA.append(equipos[10])
    grupoB = list()
    grupoB.append(equipos[1])
    grupoB.append(equipos[2])
    grupoB.append(equipos[3])
    grupoB.append(equipos[6])
    grupoB.append(equipos[7])
    grupoB.append(equipos[11])

    grupos.append([grupoA, grupoB])

    gruposPosibles = []

    i = 0
    for posi in grupos:

        grupoA = posi[0]
        grupoB = posi[1]

        print("GrupoA")
        print(grupoA)
        print("GrupoB")
        print(grupoB)

        combinationsA = itertools.permutations(list(grupoA), 6)
        combinationsB = itertools.permutations(list(grupoB), 6)

        for combinationA in list(combinationsA):
            if (i % 1000000 == 0):
                print(i)
            i = i + 1
            """
			print(combinationB)
			"""
            if combinacionPosible(combinationA):
                """
				print(combinacionPosible(combinationB))
				"""
                for combinationB in list(combinationsB):
                    """
					print(combinationA)
					print(combinationB)
					"""
                    gruposPosibles.append([combinationA, combinationB])

    i = 0

    print("Calendarios posibles " + str(len(gruposPosibles)))
    calendarios = []
    for grupo in gruposPosibles:

        print("calendario numero" + str(i))

        calendario = Calendario(grupo, costes)
        calendario.generar_calendario()
        calendarios.append(calendario)
        i = i + 1

    calendarios.sort(key=lambda x: x.desviacion)
    minDesviacion = calendarios[0].desviacion
    maxDesviacion = calendarios[-1].desviacion
    calendarios.sort(key=lambda x: x.total)
    minKilometros = calendarios[0].total
    maxKilometros = calendarios[-1].total

    for calendario in calendarios:
        calendario.calculaIndice(minDesviacion, maxDesviacion, minKilometros,
                                 maxKilometros)

    calendarios.sort(key=lambda x: (x.desviacion))

    workbook = xlsxwriter.Workbook('desviacionSinRestriccion.xlsx')

    i = 1

    for calendario in calendarios[:500]:
        nombre = 'Opcion ' + str(i)

        worksheet = workbook.add_worksheet(nombre)
        calendario.imprime_resultado(workbook, worksheet)
        i = i + 1

    workbook.close()
    print('Total calendario:' + str(i))

    print('Plotting:')

    plt.plot([x.indiceDesviacion for x in calendarios],
             [y.indiceTotal for y in calendarios], 'ro')
    plt.ylabel('some numbers')
    plt.show()