Traitement de l'erreur IndexError et de la boucle infinie
Ajout automatique des valeurs dans un fichier exploitable par Excel et autres logiciels similaires Création automatique de dossiers pour stocker les fichiers des runs et de leurs erreurs Balisassions des endroits à modifiés dans le programme Amélioration de l'interface de la commande
This commit is contained in:
parent
4e7032bd12
commit
3329177787
|
@ -1,7 +1,8 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
import os.path
|
||||||
import random
|
import random
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
@ -156,7 +157,9 @@ def majPotentielsCroissance(pixelsCroissance, potentielsCroissance, nbPart):
|
||||||
for c in range(len(pixelsCroissance)):
|
for c in range(len(pixelsCroissance)):
|
||||||
potentielsCroissance[c] = potentielsBitmap[pixelsCroissance[c][0]][pixelsCroissance[c][1]]
|
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:
|
try:
|
||||||
run = True
|
run = True
|
||||||
init()
|
init()
|
||||||
|
@ -167,7 +170,6 @@ def main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart):
|
||||||
dessinBitmap[nouv[1]][nouv[0]] = 1
|
dessinBitmap[nouv[1]][nouv[0]] = 1
|
||||||
condInitBitmap[nouv[0]][nouv[1]] = -1
|
condInitBitmap[nouv[0]][nouv[1]] = -1
|
||||||
potentielsBitmap[nouv[0]][nouv[1]] = 0
|
potentielsBitmap[nouv[0]][nouv[1]] = 0
|
||||||
nbPart = 1
|
|
||||||
while run == True:
|
while run == True:
|
||||||
# elimine les pixelsCroissance qui sont proche de nouv
|
# elimine les pixelsCroissance qui sont proche de nouv
|
||||||
eliminePixelsPres(nouv, pixelsCroissance, potentielsCroissance)
|
eliminePixelsPres(nouv, pixelsCroissance, potentielsCroissance)
|
||||||
|
@ -186,6 +188,8 @@ def main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart):
|
||||||
#print(cs, " : ", maxdelta)
|
#print(cs, " : ", maxdelta)
|
||||||
cs += 1
|
cs += 1
|
||||||
# définition des nouveaux sites de croissance potentiels
|
# définition des nouveaux sites de croissance potentiels
|
||||||
|
# if cs>=200:
|
||||||
|
# raise ValueError
|
||||||
croissanceRapide(nouv, pixelsBitmap, pixelsCroissance, potentielsCroissance)
|
croissanceRapide(nouv, pixelsBitmap, pixelsCroissance, potentielsCroissance)
|
||||||
# mise à jour des potentiels des candidats à la croissance
|
# mise à jour des potentiels des candidats à la croissance
|
||||||
majPotentielsCroissance(pixelsCroissance, potentielsCroissance, nbPart)
|
majPotentielsCroissance(pixelsCroissance, potentielsCroissance, nbPart)
|
||||||
|
@ -203,13 +207,16 @@ def main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart):
|
||||||
nbPart += 1
|
nbPart += 1
|
||||||
if nouv[0] == 0 or nouv[0] == N-1 or nouv[1] == N-2 or nbPart > partMax :
|
if nouv[0] == 0 or nouv[0] == N-1 or nouv[1] == N-2 or nbPart > partMax :
|
||||||
run = False
|
run = False
|
||||||
print("N=", N, "eta=", eta, "nbpart=", nbPart, "MAXDELTA=", MAXDELTA)
|
except ValueError:
|
||||||
return nbPart
|
print("Bug boucle infini")
|
||||||
|
Error=1
|
||||||
except IndexError:
|
except IndexError:
|
||||||
print("Bug")
|
print("Bug IndexError")
|
||||||
|
Error = 2
|
||||||
print("N=", N, "eta=", eta, "nbpart=", nbPart, "MAXDELTA=", MAXDELTA)
|
else:
|
||||||
return nbPart
|
print("eta=" + str(eta) + " N=" + str(N) + " MAXDELTA=" + str(MAXDELTA) + " nbPart=" + str(nbPart))
|
||||||
|
finally :
|
||||||
|
return (nbPart, Error)
|
||||||
|
|
||||||
|
|
||||||
# Partie rajoutée
|
# Partie rajoutée
|
||||||
|
@ -227,20 +234,20 @@ def Save_txt(y, N, fichier):
|
||||||
print("", file=f)
|
print("", file=f)
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
def Print_plt(Mat, N, eta, nbPart, fichier, afficher=False):
|
def Print_plt(Mat, N, eta, nbPart, fichier, dossier, afficher=False):
|
||||||
x = []
|
x = []
|
||||||
y = []
|
y = []
|
||||||
c="blue" # <--- Couleur des icones
|
c="blue" # <--- Couleur des icones
|
||||||
mk="o" # <--- Motifs des icones ("o", "x", "1")
|
mk="o" # <--- Motifs des icones ("o", "x", "1")
|
||||||
size=30 # <--- Taille des icones
|
size=30 # <--- Taille des icones
|
||||||
|
title=dossier + " nbPart="+str(nbPart)
|
||||||
for i in range(1, N-1):
|
for i in range(1, N-1):
|
||||||
for j in range(1, N-1):
|
for j in range(1, N-1):
|
||||||
if Mat[i][j]:
|
if Mat[i][j]:
|
||||||
x.append(j)
|
x.append(j)
|
||||||
y.append(N-i)
|
y.append(N-i)
|
||||||
plt.scatter(x, y, color=c, s=size, marker=mk)
|
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(title)
|
||||||
plt.title("N="+str(N)+" eta="+str(eta)+" nbpart="+str(nbPart)+" MAXDELTA="+str(MAXDELTA))
|
|
||||||
# plt.legend(loc='upper left')
|
# plt.legend(loc='upper left')
|
||||||
plt.axis([0,N,0,N])
|
plt.axis([0,N,0,N])
|
||||||
plt.savefig(fichier+".png")
|
plt.savefig(fichier+".png")
|
||||||
|
@ -248,18 +255,36 @@ def Print_plt(Mat, N, eta, nbPart, fichier, afficher=False):
|
||||||
plt.show()
|
plt.show()
|
||||||
plt.close()
|
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]
|
# [64, 128, 256, 512]
|
||||||
for N in [128]:
|
for N in [64, 128, 256, 512]: # <--- N
|
||||||
# MAXDELTA = MAXDELTA/1000.0
|
|
||||||
# [1, 0.1, 0.05, 0.017, 0.01, 0.005, 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]:
|
for MAXDELTA in [0.001, 0.0005, 0.0001]: # <--- MAXDELTA
|
||||||
Premier = True
|
|
||||||
for i in range(50):
|
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
|
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
|
# 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)]
|
pixelsBitmap = [[0 for j in range(N)] for i in range(N)]
|
||||||
|
@ -271,13 +296,18 @@ for N in [128]:
|
||||||
pixelsCroissance = []
|
pixelsCroissance = []
|
||||||
potentielsCroissance = []
|
potentielsCroissance = []
|
||||||
|
|
||||||
nbPart=main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart)
|
print(str(i+1), end="\t")
|
||||||
|
nbPart, Error = main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart)
|
||||||
# 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")
|
if Error != 2:
|
||||||
np.save(fichier,np.array(dessinBitmap))
|
if Error:
|
||||||
Save_txt(np.array(dessinBitmap), N, fichier)
|
fichier = diracine + dossier + "\\Erreur\\"+"foudre-"+str(eta)+"-"+str(N)+"-"+str(MAXDELTA)+"-"+str(nbPart)+"-"+datetime.now().strftime("%Y%m%d%H%M%S")
|
||||||
Print_plt(np.array(dessinBitmap), N, eta, nbPart, fichier)
|
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")
|
Loading…
Reference in New Issue