codes python
#simulation sans retard pour des different alpha
import numpy as np
import [Link] as plt
Vmax=30
dt=0.05
disC=20
a=30
disinit=40
def F(dis,alpha):
x=0
if dis>disC:
x=[Link](-((dis-disC)/disC)**alpha)
return x
def simulation_simple(n,Te,alpha=1,eq=True):
Vlim=Vmax*F(a,alpha)
Iter=int(Te/dt)
P=[Link]((n,Iter))
Gho=[Link](Iter)
V=[Link](Iter)
P[:n//2,0]=[Link](0,disinit*(n//2-1),n//2)
P[n//2:,0]=[Link](disinit*(n//2),(disinit+disinit*eq+(1-eq)disC)(n//2),n//2)
P[n-1,:]=[Link](P[n-1,0],P[n-1,0]+Vlim*Te,Iter)
Gho[0]=n/(P[n-1,0]-P[0,0]+a)
[Link]('animation',(16,8))
for t in range(Iter-1):
[Link]()
for i in range(n-2,-1,-1):
P[i,t+1]=P[i,t]+dt*(Vmax*F(P[i+1,t]-P[i,t],alpha))
V[t+1]+=Vmax*F(P[i+1,t]-P[i,t],alpha)
[Link](P[:,t+1],[Link](n),'>b')
[Link](0,n*disinit+Vmax*Te)
[Link](0,2)
[Link]('position')
[Link]('Animation de flux des vehicules')
Gho[t+1]=n/(P[n-1,t+1]-P[0,t+1]+a)
V[t+1]=(V[t+1]+Vlim)/n
[Link]()
[Link](10**(-6))
# Tracé
[Link]('resultat',(20,10))
[Link]()
for t in range(Iter):
[Link](P[:,t],t*dt*[Link](n),'>b',)
[Link](0,n*disinit+Vlim*Te)
[Link](0,Te)
[Link]('position')
[Link]('Instant t en s')
[Link]('Ensemble des etats en fonction du temps')
[Link]()
[Link]('densite',(20,10))
[Link]([Link](0,Te,Iter),Gho,'-b',label='densité')
[Link]([Link](0,Te,Iter),[1/a for i in range(Iter)],'-r',label='1/a')
[Link](loc="upper left")
[Link]('Courbe de densite en vehicule au cours du temps')
[Link]('instant t en s')
[Link]('Densite en Veh/m')
[Link]()
[Link]('Vitesse',(20,10))
[Link]([Link](0,Te,Iter-1),V[1:],'-b',label='vitesse')
[Link]([Link](0,Te,Iter-1),[Vlim for i in range(Iter-1)],'-r',label='Vlim')
[Link](loc="upper left")
[Link]('Courbe de vitesse moyenne au cours du temps')
[Link]('instant en s')
[Link]('vitesse moyenne en m/s')
[Link]()
#simulation sans retard pour des different alpha et arrete de leader
import numpy as np
import [Link] as plt
Vmax=30
dt=0.05
disC=20
a=30
disinit=40
def F(dis,alpha):
x=0
if dis>disC:
x=[Link](-((dis-disC)/disC)**alpha)
return x
def simulation_stop_leader(n,Te,alpha=1):
Vlim=Vmax*F(a,alpha)
Iter=int(Te/dt)
P=[Link]((n,Iter))
Gho=[Link](Iter)
V=[Link](Iter)
P[0,0]=0
for i in range(1,n):
P[i,0]=P[i-1,0]+disinit
for i in range(1,Iter):
if i<(1/10)*Iter and 0*Iter<i:
P[n-1,i]=P[n-1,i-1]+Vlim*0*dt
else:
P[n-1,i]=P[n-1,i-1]+Vlim*dt
Gho[0]=n/(P[n-1,0]-P[0,0]+a)
#demarrage du mecanisme
[Link]('animation',(16,8))
for k in range(Iter-1):
[Link]()
for i in range(n-2,-1,-1):
P[i,k+1]=P[i,k]+dt*(Vmax*F(P[i+1,k]-P[i,k],alpha))
V[k+1]+=Vmax*F(P[i+1,k]-P[i,k],alpha)
[Link](P[:,t+1],[Link](n),'>b')
[Link](0,n*disinit+Vmax*Te)
[Link](0,2)
[Link]('position')
[Link]('Animation de flux des vehicules')
Gho[k+1]=n/(P[n-1,k+1]-P[0,k+1]+a)
V[k+1]=(V[k+1]+Vlim)/n
[Link]()
[Link](10**(-6))
[Link]('resultat',(16,8))
[Link]()
for k in range(Iter-1):
[Link](P[:,k+1], k*dt*[Link](n),'>b')
[Link](0,n*disinit+Vmax*Te)
[Link](0,Te)
[Link]('position')
[Link]('Ensemble des etats en fonction du temps')
[Link]()
[Link]('densite',(20,10))
[Link]([Link](0,Te,Iter),Gho,'-b',label='densité')
[Link]([Link](0,Te,Iter),[1/a for i in range(Iter)],'-r',label='1/a')
[Link](loc="upper left")
[Link]('Courbe de densite en vehicule au cours du temps')
[Link]('instant t en s')
[Link]('Densite en Veh/m')
[Link]()
[Link]('Vitesse',(20,10))
[Link]([Link](0,Te,Iter-1),V[1:],'-b',label='vitesse')
[Link]([Link](0,Te,Iter),[Vlim for i in range(Iter)],'-r',label='Vlim')
[Link](loc="upper left")
[Link]('Courbe de vitesse moyenne au cours du temps')
[Link]('instant en s')
[Link]('vitesse moyenne en m/s')
[Link]()
#simulation avec implementation du retard Taux
import numpy as np
import [Link] as plt
Vmax=30
dt=0.05
disC=20
a=30
disinit=30
def F(dis,alpha):
x=0
if dis>disC:
x=[Link](-((dis-disC)/disC)**alpha)
return x
def simulation_retard(n,Te,alpha=1,Taux=1):
Vlim=Vmax*F(a,alpha)
Iter=int(Te/dt)
Tauxprime=int(Taux/dt)
P=[Link]((n,Iter+Tauxprime))
Gho=[Link](Iter+Tauxprime)
V=[Link](Iter+Tauxprime)
P[0,0]=0
for i in range(1,n):
for t in range (Tauxprime+1):
P[i,t]=P[i-1,t]+disinit
for i in range(1+Tauxprime,Iter+Tauxprime):
if i-1-Tauxprime<(1/10)*Iter and i-1-Tauxprime>(0/10)*Iter:
P[n-1,i]=P[n-1,i-1]
else:
P[n-1,i]=P[n-1,i-1]+Vlim*(1)*dt
Gho[Tauxprime]=n/(P[n-1,Tauxprime]-P[0,Tauxprime]+a)
#demarrage du mecanisme
[Link]('animation',(16,8))
for t in range(Tauxprime,Tauxprime+Iter-1):
[Link]()
for i in range(n-2,-1,-1):
P[i,t+1]=P[i,t]+dt*(Vmax*F(P[i+1,t-Tauxprime]-P[i,t-Tauxprime],alpha))
V[t+1]+=Vmax*F(P[i+1,t]-P[i,t],alpha)
[Link](P[:,t+1],[Link](n),'>b')
[Link](0,n*disinit+Vmax*Te)
[Link](0,2)
[Link]('position')
[Link]('Animation de flux des vehicules')
Gho[t+1]=n/(P[n-1,t+1]-P[0,t+1]+a)
V[t+1]=(V[t+1]+Vlim)/n
[Link]()
[Link](10**(-6))
[Link]('Positions',(16,8))
[Link]()
for t in range(Tauxprime,Tauxprime+Iter-1):
[Link](P[:,t+1], t*dt*[Link](n),'>b')
[Link](0,n*disinit+Vmax*Te)
[Link](0,Te)
[Link]('position')
[Link]('Ensemble des etats en fonction du temps')
[Link]()
[Link]('densite',(20,10))
[Link]([Link](0,Te,Iter),Gho[Tauxprime:],'-b',label='densité')
[Link]([Link](0,Te,Iter),[1/a for i in range(Iter)],'-r',label='1/a')
[Link](loc="upper left")
[Link]('Courbe de densite en vehicule au cours du temps')
[Link]('instant t en s')
[Link]('Densite en Veh/m')
[Link]()
[Link]('Vitesse',(20,10))
[Link]([Link](0,Te,Iter-1),V[Tauxprime+1:],'-b',label='vitesse')
[Link]([Link](0,Te,Iter),[Vlim for i in range(Iter)],'-r',label='Vlim')
[Link](loc="upper left")
[Link]('Courbe de vitesse moyenne au cours du temps')
[Link]('instant en s')
[Link]('vitesse moyenne en m/s')
[Link]()