Merge branch 'Temp'
This commit is contained in:
commit
0edcb3468c
|
@ -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,55 +157,66 @@ 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):
|
||||||
run = True
|
Error=0
|
||||||
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
|
nbPart = 1
|
||||||
while run == True:
|
try:
|
||||||
# elimine les pixelsCroissance qui sont proche de nouv
|
run = True
|
||||||
eliminePixelsPres(nouv, pixelsCroissance, potentielsCroissance)
|
init()
|
||||||
# mise à jour de la carte des potentiels
|
# graine: début de décharge en haut au milieu
|
||||||
maxdelta = 1
|
graine = [int(N / 2), 1]
|
||||||
# condition d'arrêt à MAXDELTA du max des mises à jour des potentiels relatifs
|
nouv = graine
|
||||||
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
|
pixelsBitmap[nouv[0]][nouv[1]] = 1
|
||||||
dessinBitmap[nouv[1]][nouv[0]] = 1
|
dessinBitmap[nouv[1]][nouv[0]] = 1
|
||||||
# le point choisi devient une contrainte à potentiel nul
|
|
||||||
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:
|
||||||
if nouv[0] == 0 or nouv[0] == N-1 or nouv[1] == N-2 or nbPart > partMax :
|
# elimine les pixelsCroissance qui sont proche de nouv
|
||||||
run = False
|
eliminePixelsPres(nouv, pixelsCroissance, potentielsCroissance)
|
||||||
|
# mise à jour de la carte des potentiels
|
||||||
print("N=", N, "eta=", eta, "nbpart=", nbPart, "MAXDELTA=", MAXDELTA)
|
maxdelta = 1
|
||||||
return nbPart
|
# 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
|
||||||
|
# if cs>=200:
|
||||||
|
# raise ValueError
|
||||||
|
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
|
||||||
|
except ValueError:
|
||||||
|
print("Bug boucle infini")
|
||||||
|
Error=1
|
||||||
|
except IndexError:
|
||||||
|
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
|
# Partie rajoutée
|
||||||
|
@ -222,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")
|
||||||
|
@ -243,6 +255,7 @@ def Print_plt(Mat, N, eta, nbPart, fichier, afficher=False):
|
||||||
plt.show()
|
plt.show()
|
||||||
plt.close()
|
plt.close()
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
eta = 6
|
eta = 6
|
||||||
# [64, 128, 256, 512]
|
# [64, 128, 256, 512]
|
||||||
|
@ -254,6 +267,38 @@ for N in [64, 128, 256, 512]:
|
||||||
for i in range(50):
|
for i in range(50):
|
||||||
nbPart = 1
|
nbPart = 1
|
||||||
dossier = "..\\Image\\"+"eta="+str(eta)+" N="+str(N)+" MAXDELTA="+str(MAXDELTA)+"\\"
|
dossier = "..\\Image\\"+"eta="+str(eta)+" N="+str(N)+" MAXDELTA="+str(MAXDELTA)+"\\"
|
||||||
|
=======
|
||||||
|
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 [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.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
|
||||||
|
>>>>>>> Temp
|
||||||
|
|
||||||
# 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)]
|
||||||
|
@ -265,6 +310,7 @@ for N in [64, 128, 256, 512]:
|
||||||
pixelsCroissance = []
|
pixelsCroissance = []
|
||||||
potentielsCroissance = []
|
potentielsCroissance = []
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
nbPart=main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart)
|
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")
|
# fichier = "foudre-"+str(N)+"-"+str(eta)+"-"+str(MAXDELTA)+"-"+str(nbPart)+"-"+datetime.now().strftime("%Y%m%d%H%M%S")
|
||||||
|
@ -274,4 +320,21 @@ for N in [64, 128, 256, 512]:
|
||||||
fichier = dossier+"foudre-"+str(N)+"-"+str(eta)+"-"+str(MAXDELTA)+"-"+str(nbPart)+"-"+datetime.now().strftime("%Y%m%d%H%M%S")
|
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))
|
np.save(fichier,np.array(dessinBitmap))
|
||||||
Save_txt(np.array(dessinBitmap), N, fichier)
|
Save_txt(np.array(dessinBitmap), N, fichier)
|
||||||
Print_plt(np.array(dessinBitmap), N, eta, nbPart, fichier)
|
Print_plt(np.array(dessinBitmap), N, eta, nbPart, fichier)
|
||||||
|
=======
|
||||||
|
print(str(i+1), end="\t")
|
||||||
|
nbPart, Error = main(pixelsBitmap, pixelsCroissance, potentielsCroissance, nbPart)
|
||||||
|
|
||||||
|
|
||||||
|
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")
|
||||||
|
>>>>>>> Temp
|
||||||
|
|
Loading…
Reference in New Issue