示例#1
0
        public void TesterReseau(SauvegardeExcel s, int indice)
        {
            // On récupère les 200 dernières données pour tester.
            Donnees = new Donnees(MonnaieBTC.XRP, "BTC", "5m", "200");

            // Les données
            double[]      output     = new double[1];
            List <Double> listeInput = Donnees.Neurone.RecupererToutesDonnees(0, NbPasse);

            double[] input = listeInput.ToArray();

            // Erreur sur le réseau.
            double erreur = Reseau.CalculateError(TrainingSet);

            Reseau.Compute(input, output);
            double prevision = output[0];

            // Erreur sur le réseau optimal entrainement.
            double erreurEntrainement = this.ReseauOptimalEntrainement.CalculateError(TrainingSet);

            ReseauOptimalEntrainement.Compute(input, output);
            double previsionEntrainement = output[0];

            // Erreur sur le réseau optimal validation.
            double erreurValidation = this.ReseauOptimalValidation.CalculateError(ValidationSet);

            ReseauOptimalValidation.Compute(input, output);
            double previsionValidation = output[0];

            s.EcritureDonnees(erreur, prevision, erreurEntrainement, previsionEntrainement, erreurValidation, previsionValidation, indice);
        }
示例#2
0
        /// <summary>
        /// Méthode qui va ping la machine.
        /// </summary>
        /// <param name="machine"></param>
        /// <returns></returns>
        private async Task PingMachine(MachineToTestDisplay machine)
        {
            var oldValue = machine.StatusMachine;

            machine.StatusMachine = Status.InTesting;

            ReponsePing resultPing = await Reseau.PingHostAsync(machine.NomMachine);

            if (resultPing.IsPingable)
            {
                machine.StatusMachine = Status.Connected;

                if (oldValue == Status.NotConnected)
                {
                    Notify.ShowNotification("PING", machine.NomMachine + " en ligne", System.Windows.Forms.ToolTipIcon.Info);
                }

                // Résoudre le DNS.
                var adresses = await Reseau.DnsTestAsync(machine.NomMachine);

                int nbreIp = adresses.Count();

                switch (nbreIp)
                {
                // Si 0, pas de DNS configuré.
                case 0:
                    machine.IpAdresse = "Aucun adresse IP trouvé";
                    machine.DnsStatus = StatusDns.NoDns;
                    break;

                case 1:
                    machine.IpAdresse = adresses.First();
                    machine.DnsStatus = StatusDns.GoodDns;
                    break;

                // DNS qui contient plusieurs IP pour la même adresse.
                default:
                    machine.IpAdresse = string.Join(" - ", adresses);
                    machine.DnsStatus = StatusDns.ErrorDns;
                    break;
                }
            }
            else
            {
                if (oldValue == Status.Connected)
                {
                    Notify.ShowNotification("PING", machine.NomMachine + " déconnecté", System.Windows.Forms.ToolTipIcon.Error);
                }

                machine.StatusMachine = Status.NotConnected;
            }

            machine.Temps = resultPing.TimePing;
        }
示例#3
0
文件: Program.cs 项目: DamiSxM/Reseau
        static void Main(string[] args)
        {
            Thread.Sleep(1000);
            Reseau rezo = new Reseau(Etat.SERVER);

            rezo.DataReceived       += Rezo_DataReceived;
            rezo.FinRechercheServer += Rezo_FinRechercheServer;

            while (true)
            {
                rezo.SendData(Console.ReadLine());
            }
        }
示例#4
0
文件: Game.cs 项目: DamiSxM/Laby_Game
        public Game()
        {
            InitializeComponent();

            Labyrinthe = new Maze(51);

            Affichage          = new LabyPanel(Labyrinthe);
            Affichage.Location = new Point(0, 0);
            Controls.Add(Affichage);

            Liaison = new Reseau();

            Gestion = new Gestion(Labyrinthe, Affichage, Liaison);
            Gestion.Start();
        }
示例#5
0
        static void Main(string[] args)
        {
            Console.WriteLine("SERVER !");
            Thread.Sleep(1000);
            Reseau r = new Reseau();

            r.Initialize();
            r.CreationServer();

            while (true)
            {
                r.SendData(Console.ReadLine());
            }

            //r.stopLoop(Console.ReadLine());

            Console.ReadLine();
        }
示例#6
0
文件: Program.cs 项目: DamiSxM/Reseau
        static void Main(string[] args)
        {
            rezo = new Reseau(Etat.CLIENT);
            rezo.DataReceived       += Rezo_DataReceived;
            rezo.FinRechercheServer += Rezo_FinRechercheServer;

            Labyrinthe.PositionsJoueurs pos = new Labyrinthe.PositionsJoueurs();

            Console.ReadLine();
            //rezo.SendData("ping");
            rezo.SendData(pos);

            /*zo.SendData(DateTime.Now);
             * rezo.SendData(new int[] { 0, 1, 2, 3, 4, 5, 6 });*/

            while (true)
            {
                rezo.SendData(Console.ReadLine());
            }
        }
示例#7
0
        static void Main(string[] args)
        {
            Console.WriteLine("CLIENT !");
            rezo = new Reseau();
            rezo.Initialize();
            rezo.DataReceived += Rezo_DataReceived;



            while (true)
            {
                rezo.SendData(Console.ReadLine());
                if (rezo.Clients != null)
                {
                    foreach (var item in rezo.Clients)
                    {
                        Console.WriteLine(item);
                    }
                }
            }

            Console.ReadLine();
        }
示例#8
0
        /// <summary>
        /// Entraine le réseau.
        /// </summary>
        public void EntrainementReseau()
        {
            // Entrainement du réseau.
            double erreurEntrainement = 0;
            double erreurValidation   = 0;
            int    epoch = 1;

            do
            {
                train.Iteration();

                // Entrainement du réseau.
                erreurEntrainement = Reseau.CalculateError(TrainingSet);
                ListeErreurEntrainement.Add(erreurEntrainement);

                if (erreurEntrainement < ErreurOptimaleEntrainement)
                {
                    ErreurOptimaleEntrainement = erreurEntrainement;
                    ReseauOptimalEntrainement  = (BasicNetwork)Reseau.Clone();
                }


                // Validation du réseau.
                erreurValidation = Reseau.CalculateError(ValidationSet);
                ListeErreurValidation.Add(erreurValidation);

                if (erreurValidation < ErreurOptimaleValidation)
                {
                    ErreurOptimaleValidation = erreurValidation;
                    ReseauOptimalValidation  = (BasicNetwork)Reseau.Clone();
                }

                epoch++;
            } while (epoch < NbEpochMax);// && erreurEntrainement != 0 && erreurValidation != 0);

            train.FinishTraining();
        }
示例#9
0
        public Udp(int port)
        {
            OpenPort(port);

            Token = Reseau.CreateToken();
        }
示例#10
0
        /// <summary>
        /// Création, apprentissage et test du réseau en fonction des souhaits de l’utilisateur
        /// (nombre de couches du réseau et nombre de neurones par couches cachées, nombre d’itérations
        /// dans l’apprentissage et coefficient d’apprentissage) pour les données fournies dans
        /// « dataetclassif.txt »
        /// </summary>
        private void Reseau_Button_Click(object sender, EventArgs e)
        {
            // Initialisation des variables
            int    NbCouches         = 0;
            int    NbNeurones        = 0;
            int    NbIterations      = 0;
            double CoefApprentissage = 0;

            try
            {
                // Récupération des données inscrites dans les champs par l’utilisateur
                NbCouches = Convert.ToInt32(NbCouches_TextBox.Text);
                if (NbCouches <= 1)
                {
                    throw new Exception("Le nombre de couches doit être au minimum de 2.");
                }
                NbNeurones = Convert.ToInt32(NbNeurones_TextBox.Text);
                if (NbNeurones <= 0)
                {
                    throw new Exception("Le nombre de neurones par couches cachées doit être au minimum de 1.");
                }
                NbIterations = Convert.ToInt32(NbIterations_TextBox.Text);
                if (NbIterations <= 0)
                {
                    throw new Exception("Le nombre d’itérations doit être au minimum de 1.");
                }
                CoefApprentissage = Convert.ToDouble(CoefApprentissage_TextBox.Text);
                if (CoefApprentissage <= 0 && CoefApprentissage >= 1)
                {
                    throw new Exception("Le coefficient d’apprentissage doit être compris entre 0 et 1 exclus.");
                }

                // Création du réseau (3 entrées car un couple de données + le biais)
                Reseau = new Reseau(3, NbCouches, NbNeurones);

                // Récupération des valeurs d’entrées
                List <List <double> > Entrees = this.RecupererDonnees();

                // Récupération des sorties désirées
                List <double> Sorties = new List <double>();
                for (int i = 0; i < 3000; i++)
                {
                    if (i < 1500)
                    {
                        Sorties.Add(0.1);
                    }
                    else
                    {
                        Sorties.Add(0.9);
                    }
                }

                // Mélange des listes
                List <List <double> > EntreesM = new List <List <double> >();
                List <double>         SortiesM = new List <double>();
                for (int i = 0; i < 1500; i++)
                {
                    EntreesM.Add(new List <double> {
                        Entrees[i][0] / 800.0, Entrees[i][1] / 800.0
                    });
                    SortiesM.Add(Sorties[i]);
                    EntreesM.Add(new List <double> {
                        Entrees[i + 1500][0] / 800.0, Entrees[i + 1500][1] / 800.0
                    });
                    SortiesM.Add(Sorties[1500 + i]);
                }

                // Apprentissage supervisé
                Secondes = 0;
                Chrono_Timer.Start();
                Reseau.Retropropagation(EntreesM, SortiesM, CoefApprentissage, NbIterations);
                Chrono_Timer.Stop();

                // Affichage de l’image de résultat
                Tests();

                // Affichage des valeurs du fichier
                for (int i = 0; i < 3000; i++)
                {
                    Entrees[i][0] = Math.Floor(Entrees[i][0]);
                    Entrees[i][1] = Math.Floor(Entrees[i][1]);
                    if (i < 1500)
                    {
                        Supervise_Form.Image.SetPixel((int)Entrees[i][0], (int)Entrees[i][1], Color.Black);
                    }
                    else
                    {
                        Supervise_Form.Image.SetPixel((int)Entrees[i][0], (int)Entrees[i][1], Color.White);
                    }
                }

                // Calcul du pourcentage de bonne et mauvaise classification et calcul de l’erreur résiduelle
                List <double> SortiesCalculees       = Reseau.TesterReseau(EntreesM);
                double        ErreurResiduelle       = 0;
                int           BonneClassification    = 0;
                int           MauvaiseClassification = 0;

                for (int i = 0; i < SortiesCalculees.Count; i++)
                {
                    if (i % 2 == 0)
                    {
                        if (SortiesCalculees[i] < 0.5)
                        {
                            BonneClassification++;
                        }
                        else
                        {
                            MauvaiseClassification++;
                        }
                        ErreurResiduelle += Math.Abs(SortiesCalculees[i] - 0.1);
                    }

                    else
                    {
                        if (SortiesCalculees[i] > 0.5)
                        {
                            BonneClassification++;
                        }
                        else
                        {
                            MauvaiseClassification++;
                        }
                        ErreurResiduelle += Math.Abs(SortiesCalculees[i] - 0.9);
                    }
                }

                // Rafraîchissement de l’image et affiche des performances dans une boîte de dialogue
                Resultat_PictureBox.Refresh();
                string Message = "Pourcentage de bonne classification : " + Math.Round(BonneClassification / 3000.0, 4) * 100 +
                                 "\nPourcentage de mauvaise classification : " + Math.Round(MauvaiseClassification / 3000.0, 4) * 100 +
                                 "\nErreur résiduelle : " + Math.Round(ErreurResiduelle / 3000.0, 2);
                MessageBox.Show(Message, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            catch (Exception Ex)
            {
                MessageBox.Show(Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }