using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using JeuHoy_WPF_Natif.Model; namespace JeuHoy_WPF_Natif.Model { public class GestionPerceptrons { private Dictionary _lstPerceptrons = new Dictionary(); private IGestionFichiers _gestionSortie = new GestionFichiersSorties(); private List _lstData; /// /// Constructeur /// public GestionPerceptrons() { _lstData = _gestionSortie.ChargerCoordonnees("train.txt"); for (char x = '0'; x <= '9'; ++x) _lstPerceptrons.Add(x.ToString(), new Perceptron(x.ToString())); foreach (Squelette sql in _lstData) Entrainement(sql, ""); } /// /// Charge les échantillons d'apprentissage sauvegardé sur le disque. /// /// Le nom du fichier public void ChargerCoordonnees(string fichier) { _lstData = _gestionSortie.ChargerCoordonnees(fichier); } /// /// Sauvegarde les échantillons d'apprentissage sauvegardé sur le disque. /// /// Le nom du fichier /// En cas d'erreur retourne le code d'erreur public int SauvegarderCoordonnees(string fichier) => _gestionSortie.SauvegarderCoordonnees(fichier, _lstData); /// /// Entraine les perceptrons avec un nouveau caractère /// /// Les nouvelles coordonnées /// La réponse associé(caractère) aux coordonnées /// Le résultat de la console public string Entrainement(Squelette coordo, string reponse) { StringWriter sw = new StringWriter(); if (reponse != "") { coordo.Reponse = reponse; _lstData.Add(coordo); SauvegarderCoordonnees("train.txt"); } if (_lstData is null) return ""; foreach (Perceptron perc in _lstPerceptrons.Values) sw.WriteLine(perc.Entrainement(_lstData)); return sw.ToString(); } /// /// Test le perceptron avec de nouvelles coordonnées. /// /// Les nouvelles coordonnées /// Retourne la liste des valeurs possibles du perceptron public string Tester(Squelette coord) { string resultat = ""; foreach (Perceptron perc in _lstPerceptrons.Values) if (perc.TesterNeurone(coord)) resultat += perc.Reponse; if (resultat == "") resultat = "?"; return resultat; } /// /// Obtient une liste des coordonées. /// /// Une liste des coordonées. public IList ObtenirCoordonnees() => _lstData; } }