PERCEPTRONIC

This commit is contained in:
MarcEricMartel
2023-05-03 10:51:31 -04:00
parent be9041cd6f
commit d79d1123d1
5 changed files with 238 additions and 1 deletions

View File

@@ -0,0 +1,82 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 = new List<Squelette>();
/// <summary>
/// Constructeur
/// </summary>
public GestionPerceptrons() {
for (char x = '0'; x <= '9'; ++x)
_lstPerceptrons.Add(x.ToString(), new Perceptron(x.ToString()));
}
/// <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);
}
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;
}
}