Bonjour,

J'ai une erreur qui m'embête vraiment
Voilà l'erreur que j'ai eue:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
??? Improper index matrix reference.
 
Error in ==> main>LancerSimulation/GenererVehicule at 62
                nbr_voies_orig = config.ListeOrigine(i).GetNbVoiesOrig();
 
Error in ==> main>LancerSimulation at 48
            GenererVehicule(t);
 
Error in ==> main at 41
LancerSimulation(Horizon,decalage);
Sachant que "GenererVehicule" est une fonction imbriquée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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%
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%