Système expert sur Rails

L'article est dédié à la création d'un système expert. Au début de l'article se trouve un schéma fonctionnel d'un livre de la liste de références, puis une description de la base de données et de l'algorithme. Vient ensuite l '«aide sur la façon de réaliser ce projet», qui décrit l'algorithme de création de ce projet. À la fin de l'article se trouve une liste de références. Il a également quelques captures d'écran.


Organigramme

La base de données contient trois tableaux - images, questions et résultats. Le premier d'entre eux est le principal de «classification et identification», contient un signe de reconnaissance réussie (champ indicateur) et le nombre de paires «objet, réponse» dans «l'échantillon d'apprentissage» (champ n). La seconde contient cette sélection même (champ de valeur), ainsi que les noms des «propriétés et attributs» (champ de nom) et le champ de règle utilisé dans l'algorithme de reconnaissance. Enfin, le troisième tableau contient les réponses possibles (pluie / pas de pluie, etc.).


Spectacle d'action

L'algorithme fonctionne comme suit. À l'itération actuelle, la somme de la valeur de la règle * ne dépasse pas la règle * n (puisque la valeur a l'une des deux valeurs: 0 ou 1). À l'itération suivante, la valeur unique de règle dépasse cette somme, c'est-à-dire règle = règle * n + 1.

Le nombre d'inertie avec une unité soustraite (la réponse est inconnue à la première itération avec une somme nulle) est le numéro de la réponse (pour K. Naylor, une somme positive de règles * valeur signifie la première réponse, négative - la seconde).

Évidemment, à la première itération (règle zéro par défaut), la somme des valeurs sera également nulle. À la deuxième itération, il sera dans la plage [1, n] (voir la formule pour la règle ci-dessus), à la troisième il sera dans la plage [n + 1, (n + 1) * n]; sur la quatrième plage, ce sera comme ceci: [(n + 1) * n + 1, ((n + 1) * n + 1) * n] et ainsi de suite.

Ainsi, la bordure droite de la plage est calculée par la formule sum = (sum + 1) * n. Lorsque toutes les réponses possibles sont vérifiées, nous réinitialisons la règle.


À quoi il ressemble dans un navigateur Web

Aide à la réalisation de ce projet


Presque tous les fichiers de projet peuvent être créés à l'aide de commandes

rails generate scaffold Image name:string flag:boolean n:integer rails generate scaffold Question name:string value:integer rule:integer image:references rails generate scaffold Outcome name:string image:references 

Dans le fichier db / migrate / yyyyMMddhhmmss_create_images.rb, au lieu de la ligne t.boolean: flag, écrivez t.boolean: flag, default: false. Nous ajoutons également zéro valeur par défaut pour les champs images.n, questions.value et questions.rule. Et faites rake db: migrez.

Ensuite, dans le fichier config / routes.rb, nous subordonnons les ressources questions et résultats à la ressource images. Toujours dans le fichier app / models / image.rb, ajoutez has_many: questions et has_many: results. Il reste dans les contrôleurs et les vues pour changer les chemins en conséquence: remplacez questions_path par image_questions_path (params [: image_id]), etc.

Nous créons les partiels _question.html.erb et _outcome.html.erb pour les rendre plus tard dans la vue images / show.html.erb. Vous pouvez en savoir plus sur cette technique en regardant la visite vidéo sur Rails 5, qui se trouve sur la page principale du site officiel de ce framework web.

À la suite de toutes ces actions, les vues new.html.erb et edit.html.erb pour les deux ressources subordonnées sont interrompues. Avec le partiel unique _form.html.erb, ils obtiennent le même chemin pour l'action de ce formulaire, ce qui est incorrect. Nous corrigeons.

L'algorithme avec recalcul des valeurs de champ de règle (si nécessaire) est décrit ci-dessus. Il démarre lorsque la page Web affichée par l'action show de ImageController est mise à jour.

Et enfin, des tests automatiques. En raison du changement d'itinéraires, des changements correspondants sont également nécessaires dans les tests et les installations.

Littérature


C. Naylor. Comment construire votre système expert - Energoatomizdat Publishing House, 1991

Source: https://habr.com/ru/post/fr422971/


All Articles