50151

Нечеткая логика

Лабораторная работа

Информатика, кибернетика и программирование

Согласно заданным вариантам разработать программу на любом алгоритмическом языке, способную: А. Различать степени изменения лингвистической переменной в трех степенях – «Очень – Нормально – Слабо» Б. Изменять порог чувствительности. Улитка без ноги – медленно – быстро (о скорости)

Русский

2014-01-16

67.5 KB

2 чел.

Системы искусственного интеллекта

Лабораторная работа №1

Нечеткая логика

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

Задание

Согласно заданным вариантам разработать программу на любом алгоритмическом языке, способную:

А. Различать степени изменения лингвистической переменной в трех степенях – «Очень – Нормально – Слабо»

Б. Изменять порог чувствительности.

  1.  Улитка без ноги – медленно – быстро (о скорости)

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, ComCtrls, StdCtrls,math, TeEngine, Series, ExtCtrls, TeeProcs,

 Chart;

type

 TForm1 = class(TForm)

   Chart1: TChart;

   Series1: TLineSeries;

   Series2: TLineSeries;

   Series3: TLineSeries;

   Series4: TBarSeries;

   TrackBar1: TTrackBar;

   Label1: TLabel;

   Label5: TLabel;

   Edit1: TEdit;

   Edit2: TEdit;

   Edit3: TEdit;

   Label6: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   Label4: TLabel;

   Label7: TLabel;

   TrackBar2: TTrackBar;

   procedure TrackBar1Change(Sender: TObject);

   procedure TrackBar2Change(Sender: TObject);

   procedure FormCreate(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

 acc:integer;

implementation

{$R *.dfm}

procedure TForm1.TrackBar1Change(Sender: TObject);

var a,b,c,aq:double;

   i:integer;

begin

 label2.Caption:='';

 label3.Caption:='';

 label4.Caption:='';

 label1.Caption:=inttostr(trackbar1.position);

 a:=(1/(1+power(((trackbar1.Position-10+acc)/12),22)));

 b:=(1/(1+power(((trackbar1.Position-35+acc)/12),8)));

 c:=(1/(1+power(((trackbar1.Position-60+acc)/12),12)));

 if a<0.2 then label2.Caption:='Совсем не '+edit1.Text;

 if (a<0.4) and (a>0.2) then label2.Caption:='Чуть-чуть не '+edit1.Text;

 if (a<0.6) and (a>0.4) then label2.Caption:='Немного '+edit1.Text;

 if (a<0.8) and (a>0.6) then label2.Caption:='Весьма '+edit1.Text;

 if (a<1) and (a>0.8) then label2.Caption:='Абсолютно '+edit1.Text;

 if b<0.2 then label3.Caption:='Совсем не '+edit2.Text;

 if (b<0.4) and (b>0.2) then label3.Caption:='Чуть-чуть не '+edit2.Text;

 if (b<0.6) and (b>0.4) then label3.Caption:='Немного '+edit2.Text;

 if (b<0.8) and (b>0.6) then label3.Caption:='Весьма '+edit2.Text;

 if (b<1) and (b>0.8) then label3.Caption:='Абсолютно '+edit2.Text;

 if c<0.2 then label4.Caption:='Совсем не '+edit3.Text;

 if (c<0.4) and (c>0.2) then label4.Caption:='Чуть-чуть не '+edit3.Text;

 if (c<0.6) and (c>0.4) then label4.Caption:='Немного '+edit3.Text;

 if (c<0.8) and (c>0.6) then label4.Caption:='Весьма '+edit3.Text;

 if (c<1) and (c>0.8) then label4.Caption:='Абсолютно '+edit3.Text;

 aq:=a+b+c;

 label2.Caption:=label2.Caption+' '+inttostr(round(a/aq*100))+'%'+edit1.Text;

 label3.Caption:=label3.Caption+' '+inttostr(round(b/aq*100))+'%'+edit2.Text;

 label4.Caption:=label4.Caption+' '+inttostr(round(c/aq*100))+'%'+edit3.Text;

 series4.Clear;

 for i:=1 to 100 do if i<>trackbar1.Position then

   series4.Add(0) else series4.Add(1);

end;

procedure TForm1.TrackBar2Change(Sender: TObject);

var a,b,c:double;

   i:integer;

begin

 acc:=trackbar2.Position;

 series1.Clear;

 series2.Clear;

 series3.Clear;

 series4.Clear;

 for i:=1 to 100 do begin

   a:=(1/(1+power(((i-10+acc)/12),22)));

   series1.Add(a);

   b:=(1/(1+power(((i-35+acc)/12),8)));

   series2.Add(b);

   c:=(1/(1+power(((i-60+acc)/12),12)));

   series3.Add(c);

 end;

end;

procedure TForm1.FormCreate(Sender: TObject);

var a,b,c:double;

   i:integer;

begin

 acc:=0;

 series1.Clear;

 series2.Clear;

 series3.Clear;

 series4.Clear;

 for i:=1 to 100 do begin

   a:=(1/(1+power(((i-10+acc)/12),22)));

   series1.Add(a);

   b:=(1/(1+power(((i-35+acc)/12),8)));

   series2.Add(b);

   c:=(1/(1+power(((i-60+acc)/12),12)));

   series3.Add(c);

 end;

end;

end.

Вывод: научились создавать простейшую системы нечеткой логики, реализованной на языке высокого уровня.


 

А также другие работы, которые могут Вас заинтересовать

84937. Узагальнюючий урок за розділом «Речення» 51 KB
  Мета. Узагальнити і повторити знання по темі «Речення», збагачувати словниковий запас учнів; розвивати творче мислення; виробляти навички каліграфічного письма; виховувати бережне ставлення до природи. Обладнання: ілюстрації, листочки, схеми до гри, таблиці, магнітофон.
84938. Розповідні речення. Розділові знаки в кінці розповідних речень. Складання і інтонування розповідних речень 59 KB
  Мета: дати уявлення дітям про розповідні речення учити інтонувати розповідні речення аналізувати навчальний матеріал збагачувати словниковий запас учнів розвивати спостережливість мову учнів уяву виховувати вбачати красу осінньої природи.
84939. Урок розвитку зв’язного мовлення у 2 класі 40 KB
  Пізньої осені, коли промерзає ґрунт, зменшується кількість корму, насамперед у комах; їжаки зариваються в опале листя і впадають у сплячку аж до березня. У цей час у них дуже повільне дихання (до 6 разів на хвилину), різко знижується температура тіла, серце робить лише кілька ударів на хвилину.
84940. Визначення роду і числа прикметників 32 KB
  Мета. Закріплювати вміння змінювати прикметники за родами і числами, вдосконалювати вміння визначати рід, число прикметників у зв’язку з іменниками,добирати найвлучніші прикметники, розвивати вміння аналізувати, узагальнювати,зіставляти мовні явища. Розвивати увагу, спостережливість.
84941. Складання тексту-розповіді про осінь 62 KB
  Мета: вчити учнів складати текстрозповідь красиво говорити; правильно послідовно висловлювати свої думки на основі власних спостережень через художнє слово. Чаґосовського Пори року Осінь; ілюстрації із зображенням осені осінні листочки; зошит з розвитку зв’язного мовлення роздатковий дидактичний матеріал.
84942. Урок-казка «Таємниці зими» 40 KB
  Мета уроку: Розкрити перед дітьми «секрети зими». Формувати вміння підбирати споріднені слова, синоніми. Стимулювати дитяче захоплення; сплеск образної уяви; щирість естетичних суджень. Розвивати увагу, фантазію, оригінальність мислення.
84943. Речення. Основні ознаки речення 210 KB
  Мета. Формувати поняття про речення як одиницю мовлення; вчити виділяти речення тексту, відокремлювати речення одне від одного, удосконалювати навички інтонування речень; розвивати увагу; інтонаційну виразність; виховувати доброзичливе ставлення до природи...
84944. Тварини – частина живої природи. Види тварин. Спостереження за тваринами 62 KB
  Мета: Формувати поняття «тварини-живі організми»; поняття про види тварин; розвивати вміння спостерігати за тваринами, увагу, кмітливість; виховувати дбайливе ставлення до тварин. Обладнання: малюнки із зображенням тварин, картки з завданням, мікрофон, фільм про тварин, проектор, комп’ютер.
84945. «Шукачі скарбів». Виховна година, присвячена 175-річниці з Дня народження Марка Твена 116 KB
  Мета: виховувати шанобливе ставлення до книг; виховувати такі почуття, як дружба, відповідальність, любов. Тип заняття: брейн-ринг Обладнання: уривки художніх фільмів, видання книжок М.Твена для дітей,; декорації: паркан, квіти, скриня із кульками «доброта», «щирість», «відданість», «підприємливість»...