49997

Нечеткая логика. Создание простейшей системы нечеткой логики

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

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

Создание простейшей системы нечеткой логики реализованной на языке высокого уровня. Задание Согласно заданным вариантам разработать программу на любом алгоритмическом языке способную: Различать степени изменения лингвистической переменной в трех степенях...

Русский

2015-01-29

67 KB

1 чел.

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

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

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


 

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

61160. ОДНОРІДНІ ЧЛЕНИ РЕЧЕННЯ ІЗ СПОЛУЧНИКОВИМ, БЕЗСПОЛУЧНИКОВИМ І ЗМІШАНИМ ЗВ’ЯЗКОМ 68.5 KB
  Поглибити знання восьмикласників про однорідні члени речення; сформувати загальнопізнавальні вміння знаходити однорідні члени речення та визначати їх вид, аналізувати зв’язок між ними (сполучниковий, безсполучниковий чи змішаний), а також смислові відношення...
61161. РЕЧЕННЯ З КІЛЬКОМА РЯДАМИ ОДНОРІДНИХ ЧЛЕНІВ 130 KB
  Правопис: кома між однорідними членами речення. Міжпредметні зв’язки: речення з кількома рядами однорідних членів як засіб художньої виразності література. Які члени речення називаються однорідними.
61162. ОДНОРІДНІ Й НЕОДНОРІДНІ ОЗНАЧЕННЯ 28.44 KB
  Ознайомити учнів з поняттям про однорідні й неоднорідні означення, сформувати загальнопізнавальні вміння знаходити однорідні й неоднорідні означення, з’ясовувати їх роль у реченні; правильно розставляти розділові знаки та інтонувати речення з однорідними й неоднорідними означеннями
61163. КОМА МІЖ ОДНОРІДНИМИ ЧЛЕНАМИ РЕЧЕННЯ 25.48 KB
  Визначити з учнями основні випадки вживання коми в реченнях з однорідними членами, сформувати загальнопізнавальні вміння правильно ставити коми між однорідними членами речення, підпорядковуючи їх пунктуаційним правилам; удосконалити навички інтонування речень з однорідними членами...
61164. ПИСЬМОВИЙ ТВІР-РОЗДУМ НА МОРАЛЬНО-ЕТИЧНУ (ЧИ СУСПІЛЬНУ) ТЕМУ В ПУБЛІЦИСТИЧНОМУ СТИЛІ 44.5 KB
  Ми вступаємо в життя в епоху інтенсивного розвитку не лише науки і техніки а й негативних наслідків науковотехнічного прогресу: забруднення повітря високий рівень шуму та радіації страшні людські хвороби.
61165. УЗАГАЛЬНЮВАЛЬНІ СЛОВА В РЕЧЕННЯХ З ОДНОРІДНИМИ ЧЛЕНАМИ. ДВОКРАПКА Й ТИРЕ ПРИ УЗАГАЛЬНЮВАЛЬНИХ СЛОВАХ 440.02 KB
  Поглибити знання восьмикласників про однорідні члени речення, удосконалити вміння знаходити узагальнювальні слова при них, домогтися засвоєння учнями правил уживання розділових знаків при узагальнювальних словах, сформувати вміння пояснювати розділові знаки в реченнях з однорідними членами за допомогою пунктуаційних правил
61166. КОНТРОЛЬНЕ АУДІЮВАННЯ ТЕКСТУ ПУБЛІЦИСТИЧНОГО СТИЛЮ 51 KB
  Стічні води промислових підприємств забруднюють прісні водойми. У результаті цього забруднення повністю змінюються фізичні властивості води підвищується температура зменшується прозорість з’являються забарвлення присмаки запахи.
61167. ЗВЕРТАННЯ НЕПОШИРЕНІ Й ПОШИРЕНІ 29.73 KB
  Поглибити знання восьмикласників про звертання, їх стилістичну роль у мовленні; розвивати вміння виділяти в реченнях непоширені й поширені звертання, правильно інтонувати речення зі звертаннями; формувати загальнопізнавальні вміння визначати спосіб морфологічного вираження звертань