50186

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

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

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

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

Русский

2014-01-17

67.5 KB

9 чел.

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

Лабораторная работа №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.

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


 

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

82066. ДЕНЬ НАРОДЖЕННЯ У. ШЕКСПІРА 68.5 KB
  Великим святом в Англії вважається 23 квітня день народження Уільяма Шекспіра.Імя Уільяма Шекспіра знайоме і дорослим і школярам усього світу. Так хто ж такий Уільям Шекспір Шекспіродне з тих чудес світу яким не перестаєш дивуватися: історія рухається гігантськими кроками змінюється образ планети...
82067. Внеклассное мероприятие по литературе игра «О, счастливчик!» 327 KB
  Что это за сказка героиней которой является домашняя птица КурочкаРяба. Как называется русская сказка написанная в XIX веке по мотивам сказки братьев Гримм Госпожа Метелица и кто её автор В. Сказка Ш. Какому датскому писателю принадлежит автобиография Сказка моей жизни Г.
82068. Виховна година: Умій сказати, умій і змовчати 213 KB
  Виходить мовчання необхідно для того щоб почути свою совість. Але в деяких випадках мовчання ускладнює ситуацію. Якщо події вчинки слова людини людей суперечать твоїм переконанням навіщо мовчати Навіщо мовчати якщо є що сказати Тож давайте поговоримо про мовчання. Про мовчання й уміння говорити у Біблії...
82069. ОБЕРИ ЖИТТЯ 330 KB
  Рецепти та традиції що склали основу козацької медицини були обумовлені світоглядом і способом життя козаків. Наші предкизапорожці були невтомливими воїнами: життя козака проходило у воєнних походах і відчайдушних битвах з недругами. Ми навіть не знаємо що за вікном ті самі пігулки ліки мікстури...
82070. Школа: від витоків до сьогодення 444.5 KB
  Але хто сьогодні пояснить сенс тієї важкої кривавої виснажливої війни що тривала цілих десять років забрала десятки тисяч життів й покалічила ще більше душ Навіщо лідерам Країни Рад знадобилося провести ціле покоління крізь справжнє пекло На екран статистика Афганська війна принесла...
82071. Бабий Яр 101.5 KB
  Одновременно через дворников и управдомов распространялась дезинформация о намерении провести перепись и переселение евреев. Большинство из пришедших составляли женщины дети и старики взрослое мужское население было призвано в армию кроме евреев были представители других национальностей из...
82072. Морський бій 585.5 KB
  Ви будете не просто стріляти по квадратах і намагатися потопити кораблі суперників а будете відповідати на запитання з інформатики та математики і за правильну відповідь отримувати бали. Зробивши постріл команда повинна відповісти на запитання з відповідного предмета що криється в цьому квадраті.
82073. Прощавай Букварику! 83 KB
  На стінах розвішені плакати Спасибі Букварику Ласкаво просимо на свято Букваря Вчитель Сьогодні свято це для вас Лунає музика для вас В садках бузок зацвів для вас І сонця промінь теж для вас Мої малята дружний клас Ми всі чекаємо на вас. Буквар взяли ми в перший раз Як зайшли у перший клас.
82074. Дзвони Чорнобиля 38 KB
  Осмислити та усвідомити масштаби трагічних подій, розбудити почуття відповідальності перед наступним поколінням, виховувати глибоку повагу до людей, які віддали своє життя в ім’я майбутнього життя людства, розвивати почуття гордості за свій народ, прищеплювати любов до рідного краю.