Продукционная модель

      Продукционная модель

      Продукционная модель, или модель, основанная на правилах, позволяет представить знания в виде предложений типа: если (условие ), то (действие).

      Под условием понимается некоторое предложение- образец, по которому осуществляется поиск в базе знаний, а под действием- действия, выполняемые при успешном исходе поиска( они могут быть промежуточными, выступающими далее как условия, или терминальными или целевыми, завершающими работу системы)

      При использовании продукционной модели база знаний состоит из набора правил. Программа, управляющая перебором правил, называется машиной вывода. Чаще всего вывод бывает прямой( от данных к поиску цели) или обратный( от цели для её подтверждения- к данным). Данные - это исходные факты, на основании которых запускается машина вывода- программа, перебирающая правила из базы. Продукционная модель чаще всего применяется в промышленных экспертных системах. Имеется большое число программных средств  реализующих продукционный подход и в первую очередь к ним относятся «оболочки»- пустые экспертные системы

Для примера построения экспертной системы на продукционных правилах возьмем диагностику неисправностей кассетного магнитофона

      В приведенной ниже таблице 1- соответствует наличию симптома, а 0 его отсутствию. Каждый столбец соответствует одному правилу « если … то ….». Например, первый столбец можно  записать продукционным правилом так: «Если  Нет питания  и  Лента не движется  и  Запись не работает  то  Магнитофон не включен» 

Симптомы                      
Нет питания 1 0 0 0 0 0 0 0 0 0 0
Лента не движется 1 1 1 1 0 0 0 0 0 0 0
Запись не работает 1 1 1 1 1 0 0 0 0 0 1
Прерывистый звук 0 0 0 1 0 1 1 1 0 0 0
Искаженный звук 0 0 0 0 0 1 1 1 1 1 0
Нестабильная скорость 0 0 1 0 0 0 1 1 0 1 0
Повышенный фон 0 0 0 0 0 0 0 1 1 0 1
Номер  диагноза 1 2 3 4 5 6 7 8 9 10 11
 

Диагнозы

1Магнитофон не включен

2.Нажата кнопка временного останова

3.Происходит заедание ленты

4.Кассета установлена не вepнo

5. Удален предохранитель ный выступ

6. Загрязнена головка

7.Потянута лента

8.Плохое качество записи

9.Проблемы с усилителем

10 Загрязнен тонвал

11 Плохой ракорд 

      Система работает на основе сопоставления указанного состояния с заданным образцом, если ситуация совпадает с каким то образцом то выдаётся соответствующий образцу диагноз, если указанное состояние не соответствует ни одному из образцов система выдает вежливое сообщение, например - «Извините, о такой поломке нет данных».

      Задание

      Создать проект. Все используемые компоненты на формах должны быть защищены от неправильного использования, обязательно поместить в проект информацию об экспертной системе и справку по её применению. Используемая база знаний (если вы её создавали) должна быть отделена от механизма вывода  и защищена паролями (можно просмотреть упрощённый пример проекта, в приложении находится фрагмент его кода).

      Использовать рисунки или картинки для оформления. Оценивается оригинальность работы 

      ПРИЛОЖЕНИЕ 

      procedure TForm1.Button1Click(Sender: TObject);

      var

      a1,a2,a3,a4,a5,a6,a7,ss,l:string;

      begin

      l:=''; // переменная L равна '1' если гипотеза определена и  ' '  в противном случае

        if CheckBox1.Checked=true then a1:='1' else a1:='0'; // блок переменных

       if CheckBox2.Checked=true then a2:='1' else a2:='0'; // хранящих

       if CheckBox3.Checked=true then a3:='1' else a3:='0'; // отклик

       if CheckBox4.Checked=true then a4:='1' else a4:='0'; // пользователя

       if CheckBox5.Checked=true then a5:='1' else a5:='0'; //….

       if CheckBox6.Checked=true then a6:='1' else a6:='0'; //…..

       if CheckBox7.Checked=true then a7:='1' else a7:='0';  //….

     ss:=concat(a1,a2,a3,a4,a5,a6,a7); // модель отклика пользователя которая будет сопоставлена с //образцами 

        if ss='1110000' then // если определена гипотеза 1

        begin

        Label1.Caption:='Магнитофон не включен'+#13+'Включите питание';

        l:='1';

        end; 

        if ss='0110000' then // если определена гипотеза 2

        begin

        Label1.Caption:='Нажата кнопка временного останова'+#13+'Отожмите кнопку временного останова';

        l:='1';

        end; 

         if ss='0110010' then  // если определена гипотеза 3

         begin

         Label1.Caption:='Происходит заедание ленты'+#13+'Замените кассету';

         l:='1';

        end; 

         if ss='0111000' then  // если определена гипотеза 4

         begin

         Label1.Caption:='Касета установлена неверно'+#13+'Правильно вставьте кассету';

         l:='1';

        end; 

        if ss='0010000' then   // если определена гипотеза 5

        begin

        Label1.Caption:='Удалён предохранительный выступ'+#13+'Перезаписать ленту';

        l:='1';

        end; 

        if ss='0001100' then   // если определена гипотеза 6

        begin

        Label1.Caption:='Загрязнена головка'+#13+'Очистить головку';

        l:='1';

        end; 

        if ss='0001110' then   // если определена гипотеза 7

        begin

       Label1.Caption:='Потянута лента'+#13+'';

       l:='1';

        end; 

        if ss='0001111' then    // если определена гипотеза 8

        begin

        Label1.Caption:='Плохое качество записи'+#13+'';

        l:='1';

        end; 

        if ss='0000101' then  // если определена гипотеза 9

        begin

        Label1.Caption:='Проблемы с усилителем'+#13+'';

        l:='1';

        end; 

        if ss='0000110' then   // если определена гипотеза 10

        begin

       Label1.Caption:='Загрязнён тонвал'+#13+'';

       l:='1';

        end; 

        if ss='0010001' then   // если определена гипотеза 11

        begin

       Label1.Caption:='Плохой ракорд'+#13+'';

       l:='1';

        end;  

        if l='' then  //  ни одна из имевшихся гипотез не подтверждена

        Label1.Caption:=' Извините соответствующей неисправности база не содержит'; 

       end;

       

Продукционная модель