Hoy/JeuHoyEtudiants/JeuHoy_WPF_Natif/Model/GestionPerceptrons.cs
MarcEricMartel ecaa884861 Woups
2023-05-14 08:13:37 -04:00

90 lines
3.2 KiB
C#

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<string, Perceptron> _lstPerceptrons = new Dictionary<string, Perceptron>();
private IGestionFichiers _gestionSortie = new GestionFichiersSorties();
private List<Squelette> _lstData;
/// <summary>
/// Constructeur
/// </summary>
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, "");
}
/// <summary>
/// Charge les échantillons d'apprentissage sauvegardé sur le disque.
/// </summary>
/// <param name="fichier">Le nom du fichier</param>
public void ChargerCoordonnees(string fichier) { _lstData = _gestionSortie.ChargerCoordonnees(fichier); }
/// <summary>
/// Sauvegarde les échantillons d'apprentissage sauvegardé sur le disque.
/// </summary>
/// <param name="fichier">Le nom du fichier</param>
/// <returns>En cas d'erreur retourne le code d'erreur</returns>
public int SauvegarderCoordonnees(string fichier) => _gestionSortie.SauvegarderCoordonnees(fichier, _lstData);
/// <summary>
/// Entraine les perceptrons avec un nouveau caractère
/// </summary>
/// <param name="coordo">Les nouvelles coordonnées</param>
/// <param name="reponse">La réponse associé(caractère) aux coordonnées</param>
/// <returns>Le résultat de la console</returns>
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();
}
/// <summary>
/// Test le perceptron avec de nouvelles coordonnées.
/// </summary>
/// <param name="coord">Les nouvelles coordonnées</param>
/// <returns>Retourne la liste des valeurs possibles du perceptron</returns>
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;
}
/// <summary>
/// Obtient une liste des coordonées.
/// </summary>
/// <returns>Une liste des coordonées.</returns>
public IList<Squelette> ObtenirCoordonnees() => _lstData;
}
}