1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%DEBUT DE LA FONCTION IMBRIQUEE GenererVehicule %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function GenererVehicule(t)
m = numel(config.ListeOrigine);
for i=0:m
nbr_voies_orig = config.ListeOrigine(i).GetNbVoiesOrig();
for nbv =0:nbr_voies_orig
Vmax_orig = config.ListeOrigine(i).GetVitesseLibreOrig();
deltat = intervalle_gen(nbv);
if deltat == 0
if Nbr_Veh_voie_orig(nbv+1) == 0
Veh = Vehicule ();
Veh.SetLeader(NULL);
Veh.SetSuiveur(NULL);
Veh.SetOrigineActuelle(config.ListeOrigine(i));
Veh.SetTronconActuel(config.ListeTroncon(i));
Veh.trajet{end+1} = i;
Veh.SetVoieActuelle(nbv+1);
Veh.SetHeureEnt(t);
if t > 0
for tt=0:t
Veh.SetPosition(0);
Veh.SetVitesse(Vmax_orig);
Veh.SetAcceleration(0);
end%for(tt)
config.ListeTroncon(i).ListeVehTroncon{end+1} = Veh;
loi_exponentielle (nbv);
else %else if (Nbr_Veh_voie_orig)
Veh.SetPosition(0);
Veh.SetVitesse(Vmax_orig);
Veh.SetAcceleration(0);
config.ListeTroncon(i).ListeVehTroncon{end+1} = Veh;
loi_exponentielle (nbv);
end %if(t)
else
n = config.ListeTroncon(i).numel(ListeVehTroncon);
for j = 0:n
Veh_Last = Vehicule ();
Veh_Last = config.ListeTroncon(i).ListeVehTroncon(j);
if Veh_Last.GetVoieActuelle() == nbv+1 && Veh_Last.GetSuiveur() == NULL
pos_Veh_Last = Veh_Last.GetPosition(t-1);
if pos_Veh_Last >= Min_gap
%on genere le vehicule sur la meme voie que son leader
%on ajoute le vehicule dans la liste
Veh = Vehicule ();
Veh.SetOrigineActuelle(Veh_Last.GetOrigineActuelle());
Veh.SetTronconActuel(Veh_Last.GetTronconActuel());
Veh.SetVoieActuelle((Veh_Last.GetVoieActuelle()));
Veh.trajet{end+1} = (Veh_Last.GetTronconActuel().index_tronc);
Veh.SetLeader(Veh_Last); %affecter le Leader au nouveau vehicule
Veh_Last.SetSuiveur(Veh); %affecter le Suiveur au vehicule precedent
Veh.SetSuiveur(NULL); %ce vehicule n'a pas encore de suiveur
Veh.SetHeureEnt(t);
for tt=0:t %à vérifier : à partir de 0 ou de 1
Veh.SetPosition(0);
Veh.SetVitesse(Vmax_orig);
Veh.SetAcceleration(0);
end %for(tt)
config.ListeTroncon(i).ListeVehTroncon{end+1} = Veh;
loi_exponentielle (nbv);
end%if
end %if
end %for (j)
end%if (Nbr_Veh_voie_orig)++
else
deltat = deltat - 1;
intervalle_gen.replace(nbv,deltat);
end%else(if delta)
end%for(nbr)
end %for(i)
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%FIN DE LA FONCTION IMBRIQUEE GenererVehicule%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
Partager