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 } } } }
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); } }
/*************************************** * 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 { // } }
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); } } } } }