From 060527e096ac42965631e25f7909d26fc50bb119 Mon Sep 17 00:00:00 2001 From: Paul-Corbalan Date: Fri, 3 Apr 2020 13:27:03 +0200 Subject: [PATCH 1/4] Print dossier --- Simulation_DBM/Simulation_DBM_2.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/Simulation_DBM/Simulation_DBM_2.py b/Simulation_DBM/Simulation_DBM_2.py index 74ddb5a..48de594 100644 --- a/Simulation_DBM/Simulation_DBM_2.py +++ b/Simulation_DBM/Simulation_DBM_2.py @@ -238,18 +238,24 @@ def Print_plt(Mat, N, eta, nbPart, fichier, afficher=False): plt.title("N="+str(N)+" eta="+str(eta)+" nbpart="+str(nbPart)+" MAXDELTA="+str(MAXDELTA)) # plt.legend(loc='upper left') plt.axis([0,N,0,N]) - plt.savefig("..\\Image\\"+fichier+".png") + plt.savefig(fichier+".png") if afficher: plt.show() plt.close() -# [0.001, 0.0005, 0.0001] -for MAXDELTA in [0.001, 0.0005, 0.0001]: +# [64, 128, 256, 512] +for N in [128]: # MAXDELTA = MAXDELTA/1000.0 - # [64, 128, 256, 512] - for N in [64, 128, 256, 512]: + # [0.001, 0.0005, 0.0001] + for MAXDELTA in [0.0001]: + Premier = True for i in range(50): - nbPart=1 + nbPart = 1 + dossier = "..\\Image\\"+"eta="+str(eta)+" N="+str(N)+" MAXDELTA="+str(MAXDELTA)+"\\" + if Premier: + Premier = False + print(dossier) + # la grille est de NxN mais en réalite la mesure d'une unité h est 1/N pixelsBitmap = [[0 for j in range(N)] for i in range(N)] # que pour le dessin pour éviter la transposition @@ -262,7 +268,11 @@ for MAXDELTA in [0.001, 0.0005, 0.0001]: nbPart=main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart) - fichier = "foudre-"+str(N)+"-"+str(eta)+"-"+str(MAXDELTA)+"-"+str(nbPart)+"-"+datetime.now().strftime("%Y%m%d%H%M%S") - np.save("..\\Image\\"+fichier,np.array(dessinBitmap)) - Save_txt(np.array(dessinBitmap), N, "..\\Image\\"+fichier) + # fichier = "foudre-"+str(N)+"-"+str(eta)+"-"+str(MAXDELTA)+"-"+str(nbPart)+"-"+datetime.now().strftime("%Y%m%d%H%M%S") + + # eta=6 N=128 MAXDELTA=0,0001 + + fichier = dossier+"foudre-"+str(N)+"-"+str(eta)+"-"+str(MAXDELTA)+"-"+str(nbPart)+"-"+datetime.now().strftime("%Y%m%d%H%M%S") + np.save(fichier,np.array(dessinBitmap)) + Save_txt(np.array(dessinBitmap), N, fichier) Print_plt(np.array(dessinBitmap), N, eta, nbPart, fichier) \ No newline at end of file From 2716b3bc1f8d41cd806321ef18c51c8ee826f498 Mon Sep 17 00:00:00 2001 From: Paul-Corbalan Date: Fri, 3 Apr 2020 13:46:40 +0200 Subject: [PATCH 2/4] Large MAXDELTA --- Simulation_DBM/Simulation_DBM_2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Simulation_DBM/Simulation_DBM_2.py b/Simulation_DBM/Simulation_DBM_2.py index 48de594..16ea5a0 100644 --- a/Simulation_DBM/Simulation_DBM_2.py +++ b/Simulation_DBM/Simulation_DBM_2.py @@ -246,7 +246,7 @@ def Print_plt(Mat, N, eta, nbPart, fichier, afficher=False): # [64, 128, 256, 512] for N in [128]: # MAXDELTA = MAXDELTA/1000.0 - # [0.001, 0.0005, 0.0001] + # [1, 0.1, 0.05, 0.017, 0.01, 0.005, 0.001, 0.0005, 0.0001] for MAXDELTA in [0.0001]: Premier = True for i in range(50): From 4e7032bd1233b9c6fd408c3ce9b6f810ee65de49 Mon Sep 17 00:00:00 2001 From: Paul-Corbalan Date: Fri, 3 Apr 2020 13:50:17 +0200 Subject: [PATCH 3/4] Commit "Bug" Arthur Boivert --- Simulation_DBM/Simulation_DBM_2.py | 87 ++++++++++++++++-------------- 1 file changed, 46 insertions(+), 41 deletions(-) diff --git a/Simulation_DBM/Simulation_DBM_2.py b/Simulation_DBM/Simulation_DBM_2.py index 16ea5a0..733d43b 100644 --- a/Simulation_DBM/Simulation_DBM_2.py +++ b/Simulation_DBM/Simulation_DBM_2.py @@ -157,51 +157,56 @@ def majPotentielsCroissance(pixelsCroissance, potentielsCroissance, nbPart): potentielsCroissance[c] = potentielsBitmap[pixelsCroissance[c][0]][pixelsCroissance[c][1]] def main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart): - run = True - init() - # graine: début de décharge en haut au milieu - graine = [int(N / 2), 1] - nouv = graine - pixelsBitmap[nouv[0]][nouv[1]] = 1 - dessinBitmap[nouv[1]][nouv[0]] = 1 - condInitBitmap[nouv[0]][nouv[1]] = -1 - potentielsBitmap[nouv[0]][nouv[1]] = 0 - nbPart = 1 - while run == True: - # elimine les pixelsCroissance qui sont proche de nouv - eliminePixelsPres(nouv, pixelsCroissance, potentielsCroissance) - # mise à jour de la carte des potentiels - maxdelta = 1 - # condition d'arrêt à MAXDELTA du max des mises à jour des potentiels relatifs - cf = 0 - if MAJPETITE: - while maxdelta > MAXDELTA: - maxdelta = majPotentielsSousBitmapRapide(nouv[0], nouv[1], S) - cf += 1 - maxdelta = 1 - cs = 0 - while maxdelta > MAXDELTA and cs<200: - maxdelta = majPotentielsBitmapRapide() - #print(cs, " : ", maxdelta) - cs += 1 - # définition des nouveaux sites de croissance potentiels - croissanceRapide(nouv, pixelsBitmap, pixelsCroissance, potentielsCroissance) - # mise à jour des potentiels des candidats à la croissance - majPotentielsCroissance(pixelsCroissance, potentielsCroissance, nbPart) - res = choix(pixelsCroissance, potentielsCroissance) - nouv = res[0] - # le point choisi est elimine des croissances possibles - pixelsCroissance.pop(res[1]) - potentielsCroissance.pop(res[1]) - # le point choisi est dessine + try: + run = True + init() + # graine: début de décharge en haut au milieu + graine = [int(N / 2), 1] + nouv = graine pixelsBitmap[nouv[0]][nouv[1]] = 1 dessinBitmap[nouv[1]][nouv[0]] = 1 - # le point choisi devient une contrainte à potentiel nul condInitBitmap[nouv[0]][nouv[1]] = -1 potentielsBitmap[nouv[0]][nouv[1]] = 0 - nbPart += 1 - if nouv[0] == 0 or nouv[0] == N-1 or nouv[1] == N-2 or nbPart > partMax : - run = False + nbPart = 1 + while run == True: + # elimine les pixelsCroissance qui sont proche de nouv + eliminePixelsPres(nouv, pixelsCroissance, potentielsCroissance) + # mise à jour de la carte des potentiels + maxdelta = 1 + # condition d'arrêt à MAXDELTA du max des mises à jour des potentiels relatifs + cf = 0 + if MAJPETITE: + while maxdelta > MAXDELTA: + maxdelta = majPotentielsSousBitmapRapide(nouv[0], nouv[1], S) + cf += 1 + maxdelta = 1 + cs = 0 + while maxdelta > MAXDELTA and cs<200: + maxdelta = majPotentielsBitmapRapide() + #print(cs, " : ", maxdelta) + cs += 1 + # définition des nouveaux sites de croissance potentiels + croissanceRapide(nouv, pixelsBitmap, pixelsCroissance, potentielsCroissance) + # mise à jour des potentiels des candidats à la croissance + majPotentielsCroissance(pixelsCroissance, potentielsCroissance, nbPart) + res = choix(pixelsCroissance, potentielsCroissance) + nouv = res[0] + # le point choisi est elimine des croissances possibles + pixelsCroissance.pop(res[1]) + potentielsCroissance.pop(res[1]) + # le point choisi est dessine + pixelsBitmap[nouv[0]][nouv[1]] = 1 + dessinBitmap[nouv[1]][nouv[0]] = 1 + # le point choisi devient une contrainte à potentiel nul + condInitBitmap[nouv[0]][nouv[1]] = -1 + potentielsBitmap[nouv[0]][nouv[1]] = 0 + nbPart += 1 + if nouv[0] == 0 or nouv[0] == N-1 or nouv[1] == N-2 or nbPart > partMax : + run = False + print("N=", N, "eta=", eta, "nbpart=", nbPart, "MAXDELTA=", MAXDELTA) + return nbPart + except IndexError: + print("Bug") print("N=", N, "eta=", eta, "nbpart=", nbPart, "MAXDELTA=", MAXDELTA) return nbPart From 33291777876dce235cda7babf9b722b72f3e872e Mon Sep 17 00:00:00 2001 From: Paul-Corbalan Date: Sat, 4 Apr 2020 00:27:51 +0200 Subject: [PATCH 4/4] =?UTF-8?q?Traitement=20de=20l'erreur=20IndexError=20e?= =?UTF-8?q?t=20de=20la=20boucle=20infinie=20Ajout=20automatique=20des=20va?= =?UTF-8?q?leurs=20dans=20un=20fichier=20exploitable=20par=20Excel=20et=20?= =?UTF-8?q?autres=20logiciels=20similaires=20Cr=C3=A9ation=20automatique?= =?UTF-8?q?=20de=20dossiers=20pour=20stocker=20les=20fichiers=20des=20runs?= =?UTF-8?q?=20et=20de=20leurs=20erreurs=20Balisassions=20des=20endroits=20?= =?UTF-8?q?=C3=A0=20modifi=C3=A9s=20dans=20le=20programme=20Am=C3=A9liorat?= =?UTF-8?q?ion=20de=20l'interface=20de=20la=20commande?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Simulation_DBM/Simulation_DBM_2.py | 88 ++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 29 deletions(-) diff --git a/Simulation_DBM/Simulation_DBM_2.py b/Simulation_DBM/Simulation_DBM_2.py index 733d43b..7451877 100644 --- a/Simulation_DBM/Simulation_DBM_2.py +++ b/Simulation_DBM/Simulation_DBM_2.py @@ -1,7 +1,8 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -import sys +import sys +import os.path import random import matplotlib.pyplot as plt import numpy as np @@ -156,7 +157,9 @@ def majPotentielsCroissance(pixelsCroissance, potentielsCroissance, nbPart): for c in range(len(pixelsCroissance)): potentielsCroissance[c] = potentielsBitmap[pixelsCroissance[c][0]][pixelsCroissance[c][1]] -def main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart): +def main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart): + Error=0 + nbPart = 1 try: run = True init() @@ -167,7 +170,6 @@ def main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart): dessinBitmap[nouv[1]][nouv[0]] = 1 condInitBitmap[nouv[0]][nouv[1]] = -1 potentielsBitmap[nouv[0]][nouv[1]] = 0 - nbPart = 1 while run == True: # elimine les pixelsCroissance qui sont proche de nouv eliminePixelsPres(nouv, pixelsCroissance, potentielsCroissance) @@ -186,6 +188,8 @@ def main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart): #print(cs, " : ", maxdelta) cs += 1 # définition des nouveaux sites de croissance potentiels + # if cs>=200: + # raise ValueError croissanceRapide(nouv, pixelsBitmap, pixelsCroissance, potentielsCroissance) # mise à jour des potentiels des candidats à la croissance majPotentielsCroissance(pixelsCroissance, potentielsCroissance, nbPart) @@ -203,13 +207,16 @@ def main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart): nbPart += 1 if nouv[0] == 0 or nouv[0] == N-1 or nouv[1] == N-2 or nbPart > partMax : run = False - print("N=", N, "eta=", eta, "nbpart=", nbPart, "MAXDELTA=", MAXDELTA) - return nbPart + except ValueError: + print("Bug boucle infini") + Error=1 except IndexError: - print("Bug") - - print("N=", N, "eta=", eta, "nbpart=", nbPart, "MAXDELTA=", MAXDELTA) - return nbPart + print("Bug IndexError") + Error = 2 + else: + print("eta=" + str(eta) + " N=" + str(N) + " MAXDELTA=" + str(MAXDELTA) + " nbPart=" + str(nbPart)) + finally : + return (nbPart, Error) # Partie rajoutée @@ -227,20 +234,20 @@ def Save_txt(y, N, fichier): print("", file=f) f.close() -def Print_plt(Mat, N, eta, nbPart, fichier, afficher=False): +def Print_plt(Mat, N, eta, nbPart, fichier, dossier, afficher=False): x = [] y = [] c="blue" # <--- Couleur des icones mk="o" # <--- Motifs des icones ("o", "x", "1") size=30 # <--- Taille des icones + title=dossier + " nbPart="+str(nbPart) for i in range(1, N-1): for j in range(1, N-1): if Mat[i][j]: x.append(j) y.append(N-i) plt.scatter(x, y, color=c, s=size, marker=mk) - # title="N="+str(N)+" eta="+str(eta)+" nbpart="+str(nbPart)+" MAXDELTA="+str(MAXDELTA) - plt.title("N="+str(N)+" eta="+str(eta)+" nbpart="+str(nbPart)+" MAXDELTA="+str(MAXDELTA)) + plt.title(title) # plt.legend(loc='upper left') plt.axis([0,N,0,N]) plt.savefig(fichier+".png") @@ -248,18 +255,36 @@ def Print_plt(Mat, N, eta, nbPart, fichier, afficher=False): plt.show() plt.close() +def Save_csv(eta, N, MAXDELTA, nbPart, diracine, dossier, file=""): + doc = diracine + file + dossier + if not (os.path.exists(doc + ".csv")): + f=open(doc + ".csv", "a") + print("eta;N;MAXDELTA;nbPart", file=f) + f.close() + f=open(doc + ".csv", "a") + for i in [str(eta), str(N), str(MAXDELTA), str(nbPart)]: + print(i, file=f, end=";") + print("", file=f) + f.close() + + +eta = 6 # <--- eta # [64, 128, 256, 512] -for N in [128]: - # MAXDELTA = MAXDELTA/1000.0 +for N in [64, 128, 256, 512]: # <--- N # [1, 0.1, 0.05, 0.017, 0.01, 0.005, 0.001, 0.0005, 0.0001] - for MAXDELTA in [0.0001]: - Premier = True - for i in range(50): + for MAXDELTA in [0.001, 0.0005, 0.0001]: # <--- MAXDELTA + + diracine = "..\\Image\\" + dossier = "eta=" + str(eta) + " N=" + str(N) + " MAXDELTA=" + str(MAXDELTA) + if not(os.path.exists(diracine + dossier)): + os.mkdir(diracine + dossier) + if not (os.path.exists(diracine + dossier + "\\" + "Erreur")): + os.mkdir(diracine + dossier + "\\" + " Erreur ") + + print("\t--- "+dossier+" ---") + + for i in range(50): # <--- itération par run nbPart = 1 - dossier = "..\\Image\\"+"eta="+str(eta)+" N="+str(N)+" MAXDELTA="+str(MAXDELTA)+"\\" - if Premier: - Premier = False - print(dossier) # la grille est de NxN mais en réalite la mesure d'une unité h est 1/N pixelsBitmap = [[0 for j in range(N)] for i in range(N)] @@ -271,13 +296,18 @@ for N in [128]: pixelsCroissance = [] potentielsCroissance = [] - nbPart=main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart) - - # fichier = "foudre-"+str(N)+"-"+str(eta)+"-"+str(MAXDELTA)+"-"+str(nbPart)+"-"+datetime.now().strftime("%Y%m%d%H%M%S") + print(str(i+1), end="\t") + nbPart, Error = main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart) - # eta=6 N=128 MAXDELTA=0,0001 - fichier = dossier+"foudre-"+str(N)+"-"+str(eta)+"-"+str(MAXDELTA)+"-"+str(nbPart)+"-"+datetime.now().strftime("%Y%m%d%H%M%S") - np.save(fichier,np.array(dessinBitmap)) - Save_txt(np.array(dessinBitmap), N, fichier) - Print_plt(np.array(dessinBitmap), N, eta, nbPart, fichier) \ No newline at end of file + if Error != 2: + if Error: + fichier = diracine + dossier + "\\Erreur\\"+"foudre-"+str(eta)+"-"+str(N)+"-"+str(MAXDELTA)+"-"+str(nbPart)+"-"+datetime.now().strftime("%Y%m%d%H%M%S") + else: + fichier = diracine + dossier + "\\foudre-"+str(eta)+"-"+str(N)+"-"+str(MAXDELTA)+"-"+str(nbPart)+"-"+datetime.now().strftime("%Y%m%d%H%M%S") + Save_csv(eta, N, MAXDELTA, nbPart, diracine, dossier) + np.save(fichier,np.array(dessinBitmap)) + Save_txt(np.array(dessinBitmap), N, fichier) + Print_plt(np.array(dessinBitmap), N, eta, nbPart, fichier, dossier) + print("") +input("Fini") \ No newline at end of file