import sys as sy
import cv as cv
import cv2 as cv2
-error = 0.1
+
+errorq = 0.1
+errorD = 1E-5
epsilon = 1E-10
vrate = 0.8
p = 0.7
img = cv.CreateImage ((tx, ty), 32, 3)
cv.Rectangle(img, (0,0),(tx,ty), cv.Scalar(255,255,255), thickness=-1)
def px((x,y)):
- return(int(tx*x/coteCarre),ty-int(ty*y/coteCarre))
+ u = float(tx)/(coteCarre + 2*distanceEmmissionMax)
+ return(int(distanceEmmissionMax*u + x * u),int(distanceEmmissionMax*u + y * u))
for i in set(range(len(l)))-set([sink]):
(x,y) = l[i]
pix,piy = px((x,y))
- demx = distanceEmmissionMax*tx/coteCarre
+ demx = distanceEmmissionMax*tx/(coteCarre+2*distanceEmmissionMax)
cv.Circle(img, (pix,piy),demx, cv.Scalar(125,125,125))
for i in set(range(len(l)))-set([sink]):
-
-
+exit()
#print G.edges(data=True)
#TODO afficher le graphe et etre sur qu'il est connexe
#AfficheVariation(up,vp,lap,wp,thetap,etap,qp,Psp,Rhp,xp,valeurFonctionDualep)
- arret = abs(valeurFonctionDuale-valeurFonctionDualep) < error
+ arret = abs(valeurFonctionDuale-valeurFonctionDualep)
return (up,vp,lap,wp,thetap,etap,qp,Psp,Rhp,xp,valeurFonctionDualep,arret,mxg,smax)
def __evalue_maj_theta__(nbexp,out=False):
global u, v, la, w, theta , q, Ps, Rh, eta, x, valeurFonctionDuale
- nbexp = 10
res = {}
m = []
itermax = 100000
mem = []
om = omega/(mt.pow(k,0.75))
return om
+ liste_arret=[]
for idxexp in range(nbexp):
mxg = 0
if not(out):
k = 1
arret = False
sm = 0
+ err, ar = 0,0
while k < itermax and not arret :
(u,v,la,w,theta,eta,q,Ps,Rh,x,valeurFonctionDuale,ar,mxg,smax)=maj(k,__maj_theta,mxg,idxexp)
- errorq = (max(q.values()) - min(q.values()))/min(q.values())
- arret = errorq < error
+ err = (max(q.values()) - min(q.values()))/min(q.values())
+
+ arret = err < errorq or ar < errorD
k+=1
variation = "+" if smax > sm else "-"
- print variation,
- if k%100 ==0 :
- print "k:",k,"erreur sur q", errorq, "et q:",q
- print "maxg=", mxg
+ if out : print variation,
+ if k%500 ==0 :
+ print "k:", k,
+ "erreur sur q",
+ errorq, "erreur sur F", ar, "et q:", q
+
+ if out : print "maxg=", mxg
mem = [deepcopy(q),deepcopy(Ps),deepcopy(Rh),deepcopy(eta),
deepcopy(x),deepcopy(u),deepcopy(v),deepcopy(la),deepcopy(w)]
+ """
if k%4500 == 0 :
- print "#########\n",mem,"\#########\n"
+
+ #print "#########\n",mem,"\#########\n"
if k%4600 == 0 :
- print "#########\n",mem,"\#########\n"
-
-
+ #print "#########\n",mem,"\#########\n"
+ """
+
if smax - sm > 500:
print "variation trop grande"
print init
exit
sm = smax
-
+
if k == itermax:
print "nbre d'iteration trop grand"
print "init"
print init
sy.exit(1)
+ else :
+ liste_arret += [(err, ar,k,errorD)]
print "###############"
print k
print "###############"
m += [k]
-
- print (min(m),max(m),float(sum(m))/nbexp,m),m
-
+
+ #print liste_arret
+ #print (min(m),max(m),float(sum(m))/nbexp,m),m
+ return liste_arret
def __une_seule_exp__(fichier_donees):
ASYNC = False
-__une_seule_exp__("config_initiale.py")
-#__evalue_maj_theta__()
+#__une_seule_exp__("config_initiale.py")
+listederes=[]
+for k in list(np.logspace(-6, -3, num=15)):
+ errorD = k
+ listederes += __evalue_maj_theta__(5)
+
+print listederes
#ASYNC = True
#taux_succes = 0.9
#__evalue_maj_theta__()
-
+"""
print "u",u
print "v",v
print "lambda",la
print "x",x
print "L",valeurFonctionDuale
-
+"""
# relation ente les variables primaires et secondaires ?