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.

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


 

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

61077. ПИСЬМОВИЙ СТИСЛИЙ ПЕРЕКАЗ РОЗПОВІДНОГО ТЕКСТУ З ЕЛЕМЕНТАМИ ОПИСУ МІСЦЕВОСТІ В ХУДОЖНЬОМУ СТИЛІ 45.5 KB
  Школярі знайомляться з цілісним висловлюванням. Робота за змістом і структурою тексту Довести належність висловлювання до художнього стилю наводячи приклади з тексту. Якою ви уявили місцевість описану письменником...
61078. Контрольний твір за творчістю Й. В. Ґете 31.5 KB
  Мета: розвивати письмове звязне мовлення та творчі здібності учнів; виховувати інтерес до аналізу літературних творів; учити аргументувати власну точку зору; провести контроль знань з теми Життя та творчість...
61079. І. Котляревський. «Енеїда». Історія створення. Національний колорит. Проблеми і мотиви твору. Характеристика героїв, що уособлюють самодержавство, панів, чиновників, духовенство 132 KB
  Венера Афродита богиня кохання побічна дочка Зевса мати Енея. Анхіз цар Трої батько Енея. Початок подорожі Енея. Відвідини Енея із Сівіллою.
61080. Складнопідрядне речення, його будова і засоби зв’язку в ньому 48 KB
  Мета: ознайомити девятикласників з поняттям про складнопідрядне речення його будову і засоби звязку в ньому; розвивати організаційноконтрольні вміння оцінювати роль складнопідрядних речень у текстах...
61081. Виды линий 36 KB
  Луч выходит из точки бесконечен в одну сторону. Нарисовать в тетради 2 точки и провести через них прямую. Как вы думаете можно ли провести ещё одну прямую через эти две точки А луч А отрезок Сколько лучей и отрезков можно провести через 2 точки бесконечное количество Пробуем. Как вы думаете почему через две точки можно провести только одну прямую и бесконечно много лучей и отрезков Попробуйте объяснить.
61082. Рисуем Сосну 298.5 KB
  Сначала рисуем ствол. Прямой ствол как мачта и корявый. Наш ствол приобретает конусную форму. Теперь ствол и ветки.
61083. Проблеми довкілля (Environment and Greener Living). Захист довкілля 75.5 KB
  Today we’re starting a new unit in which we’ll continue talking about our planet but in some different aspects. In this unit we’re going to discuss the problems of pollution of the environment and the ways to protect it from pollution.
61084. Производство розовых вин 1.2 MB
  Розовые вина никогда не получают методом смешения белого и красного вин, за исключением розового шампанского. Точнее, вино, полученное смешением красного и белого, не считается натуральным розовым вином.
61085. СЛОВОСПОЛУЧЕННЯ. БУДОВА Й ВИДИ СЛОВОСПОЛУЧЕНЬ ЗА СПОСОБОМ ВИРАЖЕННЯ ГОЛОВНОГО СЛОВА 953 KB
  Мета: поглибити знання восьмикласників про словосполучення його будову; формувати загальнопізнавальні вміння знаходити прості й складні словосполучення розрізняти лексичні й фразеологічні словосполучення...