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)
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)
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)
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)))
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)
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)