50171

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

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

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

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

Русский

2014-01-17

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.

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


 

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

22844. Визначення коефіцієнта в’язкості газу 1.32 MB
  При ламінарній течії газу по капілярній трубці різні шари газу набувають різної швидкості направленого руху. Розглянемо більш детально течію вязкого газу по трубці радіуса . Припустимо що потік ламінарний що газ при невеликих тисках нестисливий що течія всановилась і що газ повністю змочує стінки трубки тобто швидкість газу біля стінок трубки дорівнює нулеві.
22845. Визначення вологості повітря 1.2 MB
  Атмосферне повітря має в своєму складі деяку кількість водяної пари що обумовлює вологість повітря. Абсолютною вологістю називається кількість водяної пари що знаходиться в одиниці об'єму повітря. З рівняння стану ідеального газу густину повітря при нормальних умовах можна представити так: пов= 1 позначення загально прийняті.
22846. Визначення коефіцієнта об’ємного розширення рідини 545 KB
  Залежність обєму рідини від температури виражається рівнянням: а при невеликій точності можна обмежитися виразом: де обєм рідини при температурі 0C температурний коефіцієнт обємного розширення рідини. Прямим способом вимірювати обєм рідини при різних температурах для визначення важко бо при цьому змінюється і обєм посудини в якій знаходиться рідина. Французькі вчені Дюлонг і Пті запропонували спосіб визначення коефіцієнта обємного розширення рідини при якому відпадає необхідність вимірювання обєму рідини.
22847. ОДЕРЖАННЯ І ВИМІРЮВАННЯ ВИСОКОГО ВАКУУМУ 5.3 MB
  Різного роду вакуумні насоси з застосуванням деяких додаткових прийомів дозволяють одержувати тиски домм. Області тисків в яких найбільш раціонально застосовуються вакуумні насоси прийнятих в даний час типів показані на рис. Вакуумні насоси що застосовуються для відкачки газу поділяють на два класи: а форвакуумні насоси які починають працювати з атмосферного тиску і викидають відкачуваний газ прямо в атмосферу. Форвакуумні насоси створюють розрідження порядку мм.
22848. ТЕПЛОВЕ РОЗШИРЕННЯ ТВЕРДОГО ТІЛА 340.5 KB
  Дійсно сили що тримають атоми у вузлах ґратки малі і тому достатньо вже теплової енергії самих атомів аби змістити їх з положення рівноваги. До поняття про коливання атомів твердого тіла можна дійти шляхом аналізу природи міжатомних сил. Положення рівноваги атомів визначається з умови рівності сил притягання і відштовхування діючих на атом. Якщо змінюється відстань тільки відносно одного з атомів то енергію Wx треба...
22849. ВИЗНАЧЕННЯ СЕРЕДНЬОГО ЗНАЧЕННЯ ТЕПЛОТИ ВИПАРОВУВАННЯ РІДИНИ 120 KB
  ВИЗНАЧЕННЯ СЕРЕДНЬОГО ЗНАЧЕННЯ ТЕПЛОТИ ВИПАРОВУВАННЯ РІДИНИ. Випаровування це процес зміни агрегатного стану речовини перехід речовини із конденсованого стану в газоподібний. Кількість теплоти яку необхідно надати рідині при ізотермічному утворенні одиниці маси пари називають теплотою випаровування. Для визначення середнього значення теплоти випаровування води в даній роботі використовується метод який грунтується на використанні рівняння КлапейронаКлаузіуса.
22850. ВИЗНАЧЕННЯ КОЕФІЦІЄНТУ ТЕПЛОПРОВІДНОСТІ ПОВІТРЯ 182 KB
  Через довiльну коаксiальну поверхню радiуса y за одиницю часу пройде кiлькiсть теплоти 5 де l довжина дротини.Розділивши в виразі 5 змінні одержимо 6 де внутрішній радiус трубки температура дослiджуваного газу повiтря бiля внутрішньої поверхнi трубки а радiус дротини температура дротини. Зі співвідношення 6 випливає що 7 Таким чином для визначення коефіцієнта теплопровідності треба знати кiлькiсть теплоти яка щосекунди...
22851. ВИЗНАЧЕННЯ КОЕФІЦІЄНТА ТЕПЛОПРОВІДНОСТІ ТВЕРДИХ ТІЛ 111 KB
  Кількість теплоти Q що переноситься через поверхню площею S за час при градієнті температур визначається як: 1 де коефіцієнт теплопровідності середовища. Таким чином значення коефіцієнта теплопровідності матеріалу можна знайти безпосередньо якщо користуватись формулою 1. для визначення коефіцієнта теплопровідності твердих тіл.
22852. ПОБУДОВА ДІАГРАМИ СТАНУ СПЛАВІВ 49 KB
  Сплавом називають систему в твердому стані яку отримують сплавленням двох або більшої кількості компонент. Діаграми стану сплавів характеризують залежність температур фазових переходів зокрема плавлення і кристалізації від концентрації сплаву. Евтектика характеризується сталою температурою плавлення яка нижче температури плавлення компонент. Інтерметалічна сполука характеризується сталою температурою плавлення яка як правило вища за температуру плавлення компонент AuZn CdMg та ін.