50193

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

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

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

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

Русский

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.

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


 

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

7215. Распространение сигналов по оптическому кабелю 252.5 KB
  Распространение сигналов по оптическому кабелю. Передача сигналов по оптическому кабелю имеет свои особенности, которые связаны со способом передачи оптических сигналов, а также с тем, что распространение излучения по световоду является многомодовым...
7216. Сдвигающие Регистры 647 KB
  Сдвигающие Регистры Для выполнения операций умножения,деления, сложения необходим сдвиг числа влево или вправо. L1, L2 - сдвиг влево R1, R2 - сдвиг вправо (на 1 разряд, на 2)...
7217. Биохимия. Конспект лекций. Основные классы биомолекул 1.4 MB
  Основные классы биомолекул Практически все сухое вещество клеток составляют органические соединения, представленные четырьмя основными видами молекул: белками, нуклеиновыми кислотами, полисахаридами и липидами. Все они отличаются по свойствам, а зна...
7218. Проектирование систем электроснабжения 644.5 KB
  Проектирование систем электроснабжения Выбор оборудования Задание к расчётной работе Согласно приведённой на рис. 1 схеме от шин подстанции энергосистемы питается главная понизительная подстанция (ГПП), предназначенная для электроснабжения промышлен...
7219. Краткая характеристика ЗАО «МРК» 432 KB
  Цель руководства ЗАО «МРК» - техническое перевооружение литейного производства и создание единого литейного цеха с современным плавильным, формовочным оборудованием. ЗАО «МРК» - главный поставщик тюбингов для строящегося в областном центре метрополитена.
7220. Автоматизация междугородной связи с использованием ЦСК АХЕ - 10 303 KB
  Введение. Успешная деятельность современного человеческого общества невозможна без наличия специальных средств связи, обеспечивающих общение и взаимный обмен информацией между людьми независимо от расстояния. С каждым годом в мире возрастает объём и...
7221. Спроектировать двухступенчатый горизонтальный коническо-цилиндрический редуктор общего назначения привода ленточного конвейера 1.39 MB
  Задание проекта Спроектировать двухступенчатый горизонтальный коническо-цилиндрический редуктор общего назначения привода ленточного конвейера. Рис. 1. - Кинематическая схема привода ленточного конвейера: 1-двигатель 2- ременная передача...
7222. Технология радиальной ковки для производства полых изделий из сплошной заготовки без прошивки 437 KB
  1.Введение Технология радиальной ковки для производства полых изделий из сплошной заготовки без прошивки Технология основана на использовании специальных режимов деформирования сплошной заготовки на радиально-ковочной машине (РКМ). Технология не пре...
7223. Расчёт электрических нагрузок электрической цепи питающей трехфазные асинхронные двигатели 276 KB
  Контрольное задание. Расчет электрических нагрузок по методу коэффициента максимума. Расчет среднесменной нагрузки. Расчёт активной среднесменной нагрузки. Расчёт реактивной среднесменной нагрузки. Расчёт средневзвешенных зна...