Exemple #1
0
 private void Executer_inondation_LSA()
 {
     foreach (Router A in Machine.get_LesRouter())
     {
         inondation_LSA(A);
     }
 }
Exemple #2
0
        private void Executer_Dijkstra(String Source, int Destination)
        {
            if (G.GetIndex(Source) == Destination)
            {
                //nothing
            }
            else
            {
                int s = G.GetIndex(Source);
                G.TrouverLesChemins(Source);
                int i = 0;
                int j;
                //Dessiner_Lien_Optimal(Machine.get_LesRouter()[Graphe.PathStock[Destination][i]].get_FaceRouter(), Machine.get_LesRouter()[Graphe.PathStock[Destination][i + 1]].get_FaceRouter());
                if (G.PathStock[Destination] == null)
                {
                }
                else
                {
                    while (i < G.PathStock[Destination].Count - 1)
                    {
                        Dessiner_Lien_Optimal(Machine.get_LesRouter()[G.PathStock[Destination][i]].get_FaceRouter(), Machine.get_LesRouter()[G.PathStock[Destination][i + 1]].get_FaceRouter());

                        i++;
                    }
                }
            }
        }
Exemple #3
0
        private void Executer_Aleatoire(int Source, int Destination)
        {
            if (Source == Destination)
            {
                //nothing
            }
            else
            {
                G.TrouverLesChemins(G.MyIndex(Source));
                if (G.PathStock[Destination] == null)
                {
                }
                else
                {
                    Aleatoire.cheminAleatoire.Clear();
                    Aleatoire.le_chemin_aleatoire(Source, Destination);
                    int i = 0;

                    while (i < Aleatoire.cheminAleatoire.Count - 1)
                    {
                        Dessiner_Lien_Optimal(Machine.get_LesRouter()[Aleatoire.cheminAleatoire[i]].get_FaceRouter(), Machine.get_LesRouter()[Aleatoire.cheminAleatoire[i + 1]].get_FaceRouter());

                        i++;
                    }
                }
            }
        }
Exemple #4
0
        private void Etablir_Liaisons_Entre_Router()
        {
            Random rand = new Random();

            foreach (Bunifu.Framework.UI.BunifuCheckbox Check in CheckBoxList)
            {
                int rnd          = rand.Next(1, 21);
                int lienExistant = 0;
                if (Check.Checked)
                {
                    foreach (Lien link in Machine.get_LesLiens())
                    {
                        if ((link.get_int_extrem1() == Convert.ToInt32(Check.Tag) && link.get_int_extrem2() == (Convert.ToInt32(Check.Name) - 1)) || (link.get_int_extrem1() == (Convert.ToInt32(Check.Name) - 1) && link.get_int_extrem2() == Convert.ToInt32(Check.Tag)))
                        {
                            lienExistant = 1;
                            //break;
                        }
                        else
                        {
                            //lienExistant = 0;
                        }
                    }
                    if (lienExistant == 0)
                    {
                        Machine.get_LesRouter()[Convert.ToInt32(Check.Tag)].ajouter_lien(Machine.get_LesRouter()[Convert.ToInt32(Check.Name) - 1], rnd);
                        G.InsertEdge(G.MyIndex(Convert.ToInt32(Check.Tag)), G.MyIndex(Convert.ToInt32(Check.Name) - 1), rnd);
                        G.InsertEdge(G.MyIndex(Convert.ToInt32(Check.Name) - 1), G.MyIndex(Convert.ToInt32(Check.Tag)), rnd);
                    }
                    else
                    {
                        //rien
                    }
                }
            }
        }
Exemple #5
0
 private void creation_lien_router(Router A)
 {
     foreach (Router B in Machine.get_LesRouter())
     {
         if (A.get_RouterID() != B.get_RouterID())
         {
             foreach (Lien lien in A.get_ConnecxionsRouter())
             {
                 if ((lien.get_extrem1() == A.get_RouterID() && lien.get_extrem2() == B.get_RouterID()))
                 {
                     Dessiner_Lien(A.get_FaceRouter(), B.get_FaceRouter());
                     Bunifu.Framework.UI.BunifuCustomLabel RouterLinkLabel = new Bunifu.Framework.UI.BunifuCustomLabel();
                     RouterLinkLabel.Tag       = "oneTime";
                     RouterLinkLabel.Text      = "" + lien.get_cout() + "";
                     RouterLinkLabel.BackColor = Color.Transparent;
                     RouterLinkLabel.AutoSize  = false;
                     RouterLinkLabel.Width     = 22;
                     RouterLinkLabel.Height    = 15;
                     RouterLinkLabel.BringToFront();
                     RouterLinkLabel.Location = new Point((A.get_FaceRouter().Location.X + (A.get_FaceRouter().Size.Width / 2) + B.get_FaceRouter().Location.X + (B.get_FaceRouter().Size.Width / 2)) / 2 - 5, (A.get_FaceRouter().Location.Y + (A.get_FaceRouter().Size.Height / 2) + B.get_FaceRouter().Location.Y + (B.get_FaceRouter().Size.Height / 2)) / 2 - 6);
                     listeLabel.Add(RouterLinkLabel);
                     espaceRouter.Controls.Add(RouterLinkLabel);
                 }
             }
         }
     }
 }
Exemple #6
0
 private void Dessiner_Le_Graphe()
 {
     foreach (Router A in Machine.get_LesRouter())
     {
         afficher_machine(A);
         creation_lien_router(A);
     }
 }
Exemple #7
0
 private void supprimer_les_router()
 {
     for (int i = 0; i < Machine.get_LesRouter().Count; i++)
     {
         Machine.get_LesRouter()[i] = null;
     }
     Machine.set_LesRouter(new List <Router>());
     Machine.set_LesLiens(new List <Lien>());
     Machine.index = 0;
     Vertex.a      = 0;
 }
Exemple #8
0
        /***************************************
        *               METHODES
        ***************************************/
        public static void le_chemin_aleatoire(int source, int destination)
        {
            cheminAleatoire.Add(source);
            if (source != destination)
            {
                int b = 0;
                int c = 0;
                foreach (Lien lien in Machine.get_LesLiens())
                {
                    if (lien.get_extrem1() == Machine.get_LesRouter()[source].get_RouterID() || lien.get_extrem2() == Machine.get_LesRouter()[source].get_RouterID())
                    {
                        b++;
                    }
                }
                nbAlea = Alea.Next(b);

                foreach (Lien lien in Machine.get_LesLiens())
                {
                    if (lien.get_extrem1() == Machine.get_LesRouter()[source].get_RouterID() || lien.get_extrem2() == Machine.get_LesRouter()[source].get_RouterID())
                    {
                        if (c == nbAlea)
                        {
                            NextLien = lien;
                            c++;
                        }
                        else
                        {
                            c++;
                        }
                    }
                }
                if (NextLien.get_extrem1() == Machine.get_LesRouter()[source].get_RouterID())
                {
                    RouterSuivantID = NextLien.get_int_extrem2();
                }
                else
                {
                    RouterSuivantID = NextLien.get_int_extrem1();
                }
                if (RouterSuivantID != destination)
                {
                    le_chemin_aleatoire(RouterSuivantID, destination);
                }
                else
                {
                    cheminAleatoire.Add(RouterSuivantID);
                }
            }
            else
            {
                //
            }
        }
Exemple #9
0
        /***********************************************************************
         *                  METHODES D'ALGORITHMES DE ROUTAGES
         ************************************************************************/

        private void inondation_LSA(Router A)
        {
            foreach (Router B in Machine.get_LesRouter())
            {
                if (A.get_RouterID() != B.get_RouterID())
                {
                    foreach (Lien lien in A.get_ConnecxionsRouter())
                    {
                        if ((lien.get_extrem1() == A.get_RouterID() && lien.get_extrem2() == B.get_RouterID()))
                        {
                            Dessiner_Lien_Optimal(A.get_FaceRouter(), B.get_FaceRouter());
                        }
                    }
                }
            }
        }
Exemple #10
0
        private void BoutonDessinOptimal_Click(object sender, EventArgs e)
        {
            espaceRouter.Refresh();
            foreach (Router A in Machine.get_LesRouter())
            {
                creation_lien_router(A);
            }

            switch (algoComboBox.SelectedIndex)
            {
            case 0:
                Executer_Dijkstra(G.MyIndex(algoSource.Value - 1), Convert.ToInt32(algoDestinantion.Value) - 1);
                algo_info_modif(dijkstraInfo, dijkstraTitre);
                break;

            case 1:
                Executer_Dijkstra(G.MyIndex(algoSource.Value - 1), Convert.ToInt32(algoDestinantion.Value) - 1);
                algo_info_modif(bellmanInfo, bellmanTitre);
                break;

            case 2:
                Executer_inondation_LSA();
                algo_info_modif(inondationInfo, inondationTitre);
                break;

            case 3:
                Executer_inondation_Relais(Machine.get_LesRouter()[Convert.ToInt32(algoSource.Value) - 1]);
                algo_info_modif(inondationInfo, inondationTitre);
                break;

            case 4:
                Executer_Aleatoire(Convert.ToInt32(algoSource.Value) - 1, Convert.ToInt32(algoDestinantion.Value) - 1);
                algo_info_modif(aleatoireInfo, aleatoireTitre);
                break;

            case 5:
                Executer_hot_potato(Machine.get_LesRouter()[Convert.ToInt32(algoSource.Value) - 1], Machine.get_LesRouter()[Convert.ToInt32(algoDestinantion.Value) - 1]);
                algo_info_modif(hotInfo, hotTitre);
                break;

            default:
                break;
            }
        }
Exemple #11
0
 private void hot_potato(Router A, Router B)
 {
     noeudsAtteint.Add(A.get_RouterNumID());
     if (meilleur_noeud(A) == -1)
     {
     }
     else
     {
         Dessiner_Lien_Optimal(A.get_FaceRouter(), Machine.get_LesRouter()[meilleur_noeud(A)].get_FaceRouter());
         if (meilleur_noeud(A) == B.get_RouterNumID())
         {
             noeudsAtteint.Add(B.get_RouterNumID());
         }
         else
         {
             hot_potato(Machine.get_LesRouter()[meilleur_noeud(A)], B);
         }
     }
 }
Exemple #12
0
        private void inondation_Relais(Router A)
        {
            noeudsAtteint.Add(A.get_RouterNumID());

            foreach (Router B in Machine.get_LesRouter())
            {
                foreach (Lien l in Machine.get_LesLiens())
                {
                    if ((l.get_int_extrem1() == A.get_RouterNumID() && l.get_int_extrem2() == B.get_RouterNumID()) || (l.get_int_extrem1() == B.get_RouterNumID() && l.get_int_extrem2() == A.get_RouterNumID()))
                    {
                        if (noeudsAtteint.Contains(B.get_RouterNumID()))
                        {
                        }
                        else
                        {
                            Dessiner_Lien_Optimal(A.get_FaceRouter(), B.get_FaceRouter());
                            inondation_Relais(B);
                        }
                    }
                }
            }
        }
Exemple #13
0
        public static void Algorithme_De_Dijkstra(int[,] graph, int source, int destination, int TailleVecteur)
        {
            int[] distance = new int[TailleVecteur];


            bool[] PlusCourtChemin = new bool[TailleVecteur];

            int b = 0;

            MeilleurRoute = new Router[TailleVecteur];



            for (int i = 0; i < TailleVecteur; ++i)
            {
                distance[i]        = int.MaxValue;
                PlusCourtChemin[i] = false;
            }


            distance[source] = 0;


            MeilleurRoute[0] = Machine.get_LesRouter()[source];

            int save        = 0;
            int CheminSuivi = 0;
            int u;

            u = Distance_Minimum(distance, PlusCourtChemin, TailleVecteur);
            PlusCourtChemin[u] = true;
            while (u != destination)
            {
                b++;


                for (int v = 0; v < TailleVecteur; ++v)
                {
                    if (!PlusCourtChemin[v] && Convert.ToBoolean(graph[u, v]) && distance[u] != int.MaxValue && distance[u] + graph[u, v] < distance[v])
                    {
                        distance[v]      = distance[u] + graph[u, v];
                        MeilleurRoute[b] = Machine.get_LesRouter()[Distance_Minimum(distance, PlusCourtChemin, TailleVecteur)];
                        save             = v;
                    }
                }
                u = Distance_Minimum(distance, PlusCourtChemin, TailleVecteur);
                PlusCourtChemin[u] = true;
                CheminSuivi       += graph[u, save];
            }
            save        = CheminSuivi;
            CheminSuivi = 0;
            b           = 0;
            for (int i = 0; i < TailleVecteur; ++i)
            {
                PlusCourtChemin[i]      = false;
                PlusCourtChemin[source] = true;
                if (Distance_Minimum(distance, PlusCourtChemin, TailleVecteur) == i)
                {
                    PlusCourtChemin[i] = true;
                }
                else
                {
                    distance[i]        = int.MaxValue;
                    PlusCourtChemin[i] = false;
                }
            }
            if (distance[destination] != save)
            {
                save = 0;
                u    = Distance_Minimum(distance, PlusCourtChemin, TailleVecteur);
                PlusCourtChemin[u] = true;
                while (CheminSuivi > distance[destination])
                {
                    b++;


                    for (int v = 0; v < TailleVecteur; ++v)
                    {
                        if (!PlusCourtChemin[v] && Convert.ToBoolean(graph[u, v]) && distance[u] != int.MaxValue && distance[u] + graph[u, v] < distance[v])
                        {
                            MeilleurRoute[b] = Machine.get_LesRouter()[Distance_Minimum(distance, PlusCourtChemin, TailleVecteur)];
                            save             = v;
                        }
                    }
                    u = Distance_Minimum(distance, PlusCourtChemin, TailleVecteur);
                    PlusCourtChemin[u] = true;
                    CheminSuivi       += graph[u, save];
                }
            }
            //Affichage(distance, TailleVecteur);
        }