Beispiel #1
0
def resultats_flowmin():
    if os.path.exists("Results.csv"):
        os.remove("Results.csv")
    if os.path.exists("Exchanges2.csv"):
        os.remove("Exchanges2.csv")
    if os.path.exists("Flow.csv"):
        os.remove("Flow.csv")

    # Calcul exact solutions
    t1 = time.time()
    os.system("glpsol -m TricountCalculFlow2.MOD")
    os.system("glpsol -m TricountCalculMin2.MOD")
    t2 = time.time()
    t = round(t2 - t1, 3)

    resultats = open(FICHIER_RESULTATS, "r")
    rows = csv.reader(resultats)
    liste_remboursements = []
    for row in rows:
        liste_remboursements.append(row[0])

    dettes()
    dico_dettes = afficher_dettes(FICHIER_DETTES)

    return render_template("resultats_classiques.html",
                           remboursements=liste_remboursements,
                           dettes=dico_dettes,
                           time=t)
Beispiel #2
0
def add_op():
    """
    Permet d'ajouter un nom
    """
    new_op = request.form  # On récupère les infos de la requete

    names = pd.read_csv(FICHIER_NOMS, header=None, index_col=None, sep=",")
    names = list(np.transpose(names)[0])

    if os.path.exists(FICHIER_OPERATIONS):
        pass
    else:
        fichier = open(FICHIER_OPERATIONS, "a")
        fichier.write("Index")
        for name in names:
            fichier.write("," + name)
        fichier.close()

    dictionnaire_op_ajoutee = {}
    dictionnaire_op_ajoutee["payeur"] = new_op["payeur"]
    dictionnaire_op_ajoutee["payes"] = new_op.getlist("payes")
    dictionnaire_op_ajoutee["montant"] = new_op["montant"]

    ecrire_operations(dictionnaire_op_ajoutee, FICHIER_OPERATIONS)

    dettes()
    dico_dettes = afficher_dettes(FICHIER_DETTES)

    return render_template("bienvenue.html", noms=names, dettes=dico_dettes)
Beispiel #3
0
def resultats_heuristique():
    solution = []
    # Calcul solutions avec heuristique
    t1 = time.time()
    heuristique(solution)
    t2 = time.time()
    t = round(t2 - t1, 3)

    dettes()
    dico_dettes = afficher_dettes(FICHIER_DETTES)

    return render_template("resultats_classiques.html",
                           remboursements=solution,
                           dettes=dico_dettes,
                           time=t)
Beispiel #4
0
def calcul_heuristique(R):
    Dettes = dettes()
    del(Dettes[0])
    
    Remboursement = []
    
    Dettes = sorted(Dettes, key=lambda montant: montant[1])
    
    moy = 0
    for dette in Dettes:
        moy += dette[1]
    moy/=len(Dettes)
    for dette in Dettes:
        dette[1] -= moy
    
    test = True
    
    while test:
        test = False
        remboursement = min(-Dettes[0][1],Dettes[-1][1])
        Dettes[0][1] += remboursement
        Dettes[-1][1] -= remboursement
        Remboursement.append([Dettes[0][0], Dettes[-1][0], round(remboursement,2)])
        for dette in Dettes:
            if abs(dette[1])>10**(-5):
                test = True
        Dettes = sorted(Dettes, key=lambda montant: montant[1])
    
    #R.append([("Il y a ", len(Remboursement), " échanges")])
    Argent_echange = 0
    for remboursement in Remboursement:
        R.append((remboursement[0] + " doit " + str(remboursement[2]) + " à " + remboursement[1]))
        Argent_echange += remboursement[2]
    R.append(("La somme totale échangée est de " + str(Argent_echange)))
Beispiel #5
0
def exemple_aleatoire():
    gene()

    names = pd.read_csv(FICHIER_OPERATIONS,
                        header=None,
                        index_col=None,
                        sep=",")
    names = list(np.transpose(names)[0])
    del names[0]

    fichier = open(FICHIER_NOMS, "a")
    i = 0
    for name in names:
        if i > 0:
            fichier.write("," + name)
        else:
            fichier.write(name)
        i += 1
    fichier.close()

    dettes()
    dico_dettes = afficher_dettes(FICHIER_DETTES)

    return render_template("bienvenue.html", noms=names, dettes=dico_dettes)
Beispiel #6
0
def resultats_entiers():
    NAMES = dettes()

    if os.path.exists("Results.csv"):
        os.remove("Results.csv")
    if os.path.exists("Exchanges.csv"):
        os.remove("Exchanges.csv")
    if os.path.exists("Results_integer.csv"):
        os.remove("Results_integer.csv")

    FICHIER = open("Results_integer.csv", "a")
    FICHIER.write("NAMEPAY,SUM,NAMEPAYED \n")
    FICHIER.close()

    # Calcul exact solutions
    t1 = time.time()
    os.system("glpsol -m TricountCalculMin1.MOD")
    os.system("glpsol -m TricountCalculFlowInteger.MOD")

    ECHANGES = [["NAMEPAY", "NAMEPAYED", "SUMREAL", "SUMLOW", "SUMHIGH"]]
    FICHIER = open("Results_integer.csv", "r")
    RESULTS = csv.reader(FICHIER)

    for row in RESULTS:
        if row[0] != "NAMEPAY":
            ECHANGES.append([
                row[0],
                row[2],
                float(row[1][:]),
                int(float(row[1][:])),
                int(float(row[1][:])) + 1,
            ])

    ECHANGES_DF = pd.DataFrame(ECHANGES)
    if os.path.exists("Results_fourchettes.csv"):
        os.remove("Results_fourchettes.csv")
    ECHANGES_DF.to_csv("Results_fourchettes.csv",
                       index=False,
                       header=False,
                       sep=",")
    FICHIER.close()

    os.system("glpsol -m TricountInteger1.MOD")
    t2 = time.time()
    t = round(t2 - t1, 3)

    #Traitement des resultats
    resultats = open(FICHIER_RESULTATS_ENTIERS, "r")
    rows = csv.reader(resultats)

    liste_remboursements_effectifs = []
    liste_ecarts = []
    somme_ecart = ""

    i = 0
    for row in rows:
        if row != [] and i > 3:
            if row[0][:7] == "L'ecart":
                liste_ecarts.append(row[0])
            elif row[0][:8] == "La somme":
                somme_ecart = row[0]
            else:
                liste_remboursements_effectifs.append(row[0])
        i += 1

    dettes()
    dico_dettes = afficher_dettes(FICHIER_DETTES)

    return render_template("resultats_entiers.html",
                           remboursements=liste_remboursements_effectifs,
                           ecarts=liste_ecarts,
                           ecart=somme_ecart,
                           dettes=dico_dettes,
                           time=t)