Ejemplo n.º 1
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
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private int meilleur_noeud(Router A)
        {
            int    leMeilleur = 0;
            double leGrand    = 100;

            foreach (Lien lien in Machine.get_LesLiens())
            {
                if (A.get_RouterNumID() == lien.get_int_extrem1() && !noeudsAtteint.Contains(lien.get_int_extrem2()))
                {
                    if (lien.get_cout() < leGrand)
                    {
                        leGrand    = lien.get_cout();
                        leMeilleur = lien.get_int_extrem2();
                    }
                }
            }
            if (leGrand == 100)
            {
                return(-1);
            }
            else
            {
                return(leMeilleur);
            }
        }
Ejemplo n.º 3
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
            {
                //
            }
        }
Ejemplo n.º 4
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);
                        }
                    }
                }
            }
        }