90 lines
3.2 KiB
C#
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;
|
|
|
|
}
|
|
}
|