Программирование - это просто
Advertisement
Главная arrow Искусственный интеллект arrow Создаем экспертную систему arrow Разрабатываем экспертную систему. Урок 4. Переводим наш пример с БЕЙСИКа на Delphi и тестируем его.
16.06.2019 г.
Главное меню
Главная
Системный подход
Интернет магазин
Биржевые роботы
Программные продукты
Математика и информатика
1С:Предприятие
C#, Delphi, VB, F#, Web и пр.
Искусственный интеллект
Услуги
Ча. Во. (FAQ)
Платный раздел
Наука для чайников
Разное
Размышления
Карта сайта
Друзья сайта
Excel-это не сложно
Все о финансах
Разрабатываем экспертную систему. Урок 4. Переводим наш пример с БЕЙСИКа на Delphi и тестируем его. Печать E-mail
Автор megabax   
11.01.2011 г.
unit AIObj

Разрабатываем экспертную систему. Урок 4. Переводим наш пример с БЕЙСИКа на Delphi и тестируем его.

Все статьи по данной теме

Исходники к уроку можно скачать здесь.

И так, сегодня мы наконец то переведем наш пример с БЕЙСИКа на Delphi.  И так, открываем наш проект, который мы создали на прошлом уроке. Если вы только начали читать, то загляните в прошлый урок и сделайте этот пример, что бы мы могли продолжить. Теперь добавим к форме кнопочку "Пуск" и в качестве обработчика события нажатия на эту кнопочку напишем нашу программку:

procedure TfrmExpertSystem.btnStartClick(Sender: TObject);
var vars:integer;
      svars:array of string;
      values:array of integer;
      rules:array of integer;
      outcome1,outcome2:string;
      A:string;
     decision:integer;
     i:integer;
begin

    //строка 10, аналог команды CLR
    mmPrintFiled.Lines.Clear;

    //строки 20-30
    print('Введите количество утверждений');
    vars:=StrToInt(Input);
    SetLength(values,vars);
    SetLength(rules,vars);
    SetLength(svars,vars);

    //строки 40-70 иницализация массивов
    for i:=Low(values) to High(values) do
    begin
      values[i]:=0;
      rules[i]:=0;
   end;

   //80-110
   Print('Назовите эти утверждение');
   for i:=Low(svars) to High(svars) do
   begin
      svars[i]:=input;
      Print('Утверждение '+svars[i]);
  end;
  Print('');

   //120-140
   Print('Назвоите возможные исходы');
   outcome1:=Input;
   Print('Первый исход: '+outcome1);
   outcome2:=Input;
   Print('Второй исход: '+outcome2);

   //цикл, аналог перехода по goto
   repeat

      //150-210
      print('');
      for i:=Low(values) to High(Values) do
      begin
         values[i]:=0;
         Print('утверждение '+svars[i]);
         Print('Если это утверждение истино, введите Y, иначе N');
         a:=input;
         if UpperCase(a)='Y' then Values[i]:=1;
      end;

      //220 - 250
      decision:=0;
      for i:=Low(values) to High(values) do
      begin
         decision:=decision+values[i]*rules[i];
      end;

       //260 - 280
       if decision>0 then print('Возможный исход '+outcome1)  else print('Возможный исход '+outcome2);
       print('Если это верно, введите Y иначе N');
       A:=input;
       if UpperCase(A)='Y' then
       begin
           print('Если хотите завершить работу, введите Y');
          A:=input;
          if UpperCase(A)='Y' then break;
          a:='';
          continue;
       end;//аналог goto 150

       //290 корректировка правил
       if decision>0 then
           for i:=Low(rules) to High(Rules) do Rules[i]:=rules[i]-Values[i]
       else
           for i:=Low(rules) to High(Rules) do Rules[i]:=rules[i]+Values[i];

       //Запрос на выход
       print('Если хотите завершить работу, введите Y');
       A:=Input;

   until UpperCase(A)='Y'; //аналог goto 150

end;
 

Введем, например, в программу три утверждения:

  • Это летает.
  • Это ходит
  • Это ползает.

И два варианта исхода "Это птица" и "Это не птица".

Первый раз программа скорее всего, ошибется и вы ей укажете, что ответ неверный. Но затем она научиться по заданным утверждениям правильно определять объект.

Вот пример ее работы:

Разрабатываем экспертную систему. Урок 4. Переводим наш пример с БЕЙСИКа на Delphi и тестируем его.

Запустите программу и убедитесь, что она действительно способна обучаться. А принцип ее работы мы обсудим в одном из следующих уроков.

Исходники к уроку можно скачать здесь.

Все статьи по данной теме

 

Последнее обновление ( 22.10.2011 г. )
 
« След.   Пред. »
 
© 2019 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги
Мы принимаем
Банковские карты
Оплатите покупку в интернет-магазине банковскими картами VISA и Mastercard любого банка.
узнать больше
Электронный кошелек
Моментальная оплата покупок с помощью вашего электронного кошелька RBK Money.
узнать больше
Банковский платеж
Оплатите покупку в любом российском банке. Срок зачисления средств на счет - 3-5 рабочих дней.
узнать больше
Денежные переводы
Оплата покупок через крупнейшие системы денежных переводов CONTACT и Unistream.
узнать больше
Почтовые переводы
Оплатите покупку в любом отделении Почты России. Срок зачисления платежа - 3-4 рабочих дня.
узнать больше
Платежные терминалы
Оплата покупок в терминалах крупнейших платежных систем в любом городе России - быстро и без комиссии.
узнать больше