50191

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

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

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

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

Русский

2014-01-17

68 KB

3 чел.

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

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

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


 

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

54533. Народні звичаї і обряди 73 KB
  Мета: розширювати коло знань про звичаї і обряди українського народу, розвивати творчі здібності, позитивні риси характеру учнів, виховувати повагу і прищеплювати любов до народних традицій і звичаїв, рідної землі.
54534. НАРОДНА КУЛЬТУРА І СУЧАСНІ МЕТОДИ ВИХОВАННЯ 99.5 KB
  Її завдання виховувати людину гармонійною щоб вона була достойним представником Роду. Структура програми враховує завдання через ознайомлення з народною культурою допомогти учневі визначитись у виборі моральних орієнтирів життєвого шляху в загальнолюдському плані у формуванні усвідомленості та смисловій наповненості існування в усвідомленні своєї потрібності в цьому світі – себе як ланки в ланцюгу поколінь ти не один ти частка РОДУ ти – його продовження від тебе залежить МАЙБУТНЄ. Практичні завдання: Складання схеми родоводу....
54535. Множення чисел 1 і 0. Множення на 1 і 0. задачі на дві і три дії 52.5 KB
  Мета: ознайомити дітей з правилами множення чисел 0 і 1, а також на ці числа; розвивати логічне мислення та вміння розв’язувати задачі; вдосконалювати обчислювальні навички; дослідити святкування “Зустріч весни ” донести скарби традицій, звичаїв та обрядів старшого покоління до дитячих сердець; спонукати до пошуків культурної спадщини духовного життя свого краю; виховувати пізнавальну активність учнів, любов до рідного краю.
54536. Роль народознавства в системі навчально-виховного процесу 119.5 KB
  В умовах сучасності, коли матеріальні питання стають у житті людини приоритетними, духовність втрачає свою актуальність. Але виховання дитини не повинно бути бездуховним. Виховуючи чуйну, добру, відповідальну, чесну людину, яка буде гідним громадянином своєї країни, кожен педагог обирає свій шлях, найефективнішу методику із великої кількості існуючих.
54537. Народознавство на уроках української мови, літератури та в позакласній роботі 66.5 KB
  Мета: поглибити узагальнити й систематизувати знання учнів про складнопідрядні речення з підрядними обставинними; удосконалювати пунктуаційні навички уміння робити аналіз тексту синтаксичний та морфологічний розбір речення будувати складнопідрядні речення повторити правопис великої букви; розвивати культуру усного й письмового мовлення школярів мислення творчі навички...
54539. Роль насильства в історії 118 KB
  Мета уроку: сформувати в учнів цілісне розуміння суті різних форм насильства у історії; допомогти їм усвідомити наслідки війн та революцій в історії суспільства; розкрити роль насильства в історії та сформувати негативне ставлення до його застосування в наш час; визначити трагічні наслідки насильницького втручання в історію нашого народу; показати співвідношення революцій і реформ розкрити соціальні механізми реформування суспільства; допомогти учням усвідомити що лише шляхом цілеспрямованого здійснення соціальних реформ а не через...
54540. Сущность марксистского направления развития экономической теории 18.88 KB
  Важнейшей исторической предпосылкой формирования марксистского мировоззрения явилось то обстоятельство, что капитализм, одержавший победу над феодализмом в передовых странах Западной Европы, уже показал к тому времени не только свое экономическое преимущество над предшествующим способом производства