O artigo é dedicado à criação de um sistema especialista. No início do artigo, há um diagrama de blocos de um livro da lista de referências e, em seguida, uma descrição do banco de dados e do algoritmo. Em seguida, vem a "ajuda sobre como criar este projeto", que descreve o algoritmo para a criação deste projeto. No final do artigo, há uma lista de referências. Ele também tem algumas capturas de tela.

Fluxograma
O banco de dados contém três tabelas - imagens, perguntas e resultados. O primeiro deles é o principal em “classificação e identificação”, contém um sinal de reconhecimento bem-sucedido (campo sinalizador) e o número de pares “objeto, resposta” na “amostra de treinamento” (campo n). O segundo contém essa seleção (campo de valor), bem como os nomes de “propriedades e atributos” (campo de nome) e o campo de regra usado no algoritmo de reconhecimento. Finalmente, a terceira tabela contém respostas possíveis (chuva / sem chuva, etc.).
 Show de ação
Show de açãoO algoritmo funciona da seguinte maneira. Na iteração atual, a soma do valor da regra * não excede a regra * n (já que o valor possui um dos dois valores: 0 ou 1). Na próxima iteração, o valor único da regra excede essa soma, ou seja, regra = regra * n + 1.
O número de inércia com uma unidade subtraída (a resposta é desconhecida na primeira iteração com uma soma zero) é o número da resposta (para K. Naylor, uma soma positiva de regras * valor significa a primeira resposta, negativa - a segunda).
Obviamente, na primeira iteração (valores padrão da regra zero), a soma dos valores também será zero. Na segunda iteração, ele estará no intervalo [1, n] (veja a fórmula da regra acima), no terceiro, no intervalo [n + 1, (n + 1) * n]; no quarto intervalo, será assim: [(n + 1) * n + 1, ((n + 1) * n + 1) * n] e assim por diante.
Assim, a borda direita do intervalo é calculada pela fórmula sum = (sum + 1) * n. Quando todas as respostas possíveis são verificadas, redefinimos a regra.
 Como se parece em um navegador da Web
Como se parece em um navegador da WebAjuda sobre como fazer este projeto
Quase todos os arquivos de projeto podem ser criados usando comandos
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 
No arquivo db / migrate / aaaaMMddhhmmss_create_images.rb, em vez da linha t.boolean: flag, escreva t.boolean: flag, padrão: false. Também adicionamos zero valores padrão para os campos images.n, questions.value e questions.rule. E faça o rake db: migrate.
Em seguida, no arquivo config / routes.rb, subordinamos os recursos de perguntas e resultados ao recurso de imagens. Também no arquivo app / models / image.rb, adicione has_many: questions e has_many: results. Permanece nos controladores e nas visualizações alterar os caminhos de acordo: substitua questions_path por image_questions_path (params [: image_id]), etc.
Criamos as parciais _question.html.erb e _outcome.html.erb e as renderizamos na exibição images / show.html.erb. Você pode aprender mais sobre essa técnica assistindo à turnê de vídeo no Rails 5, que está na página principal do site oficial dessa estrutura da web.
Como resultado de todas essas ações, as visualizações new.html.erb e edit.html.erb para os dois recursos subordinados são interrompidas. Juntamente com o único _form.html.erb parcial, eles obtêm o mesmo caminho para a ação deste formulário, que está incorreto. Estamos corrigindo.
O algoritmo com recálculo dos valores do campo de regra (se necessário) é descrito acima. Inicia quando a página da web exibida pela ação show do ImageController é atualizada.
E, finalmente, teste automático. Devido à mudança de rotas, mudanças correspondentes também são necessárias em testes e acessórios.
Literatura
C. Naylor. Como construir seu sistema especialista - Editora Energoatomizdat, 1991