Sistema especialista em Rails

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

O 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

Ajuda 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

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


All Articles