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.

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


 

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

73891. Вектори електричного поля, індукції та поляризованості 93.5 KB
  Однорідний протяжний пружний стрижень одновимірний кристал на який діє механічне напруження показано на рис. Механічне напруження не вектор і тому позначається парою стрілок однакових за величиною і протилежних за напрямом...
73894. Ионная упругая поляризация 34.66 KB
  Но во внешнем электрическом поле катионы т анионы смещаются под действием кулоновских сил создавая полярную решетку с элементарными электрическими моментами. Если приложить электрическое поле то к упругой энергии заряженных частиц добавляется энергия накопленная ими в поле...
73895. Электронная тепловая поляризация 123.69 KB
  Тензоры упругости и податливости Приложенные извне механические напряжения Х упруго и обратимо изменяют форму кристалла происходит его деформация х. Поскольку xmn и Xmn тензоры второго ранга в анизотропных кристаллах или текстурах можно ожидать что каждая из девяти компонентов деформаций xkp индуктирована девятью компонентами тензора напряжения...
73896. Виникнення класичної буржуазної політичної економії в Англії. 32.5 KB
  Петті Уільям Петті 1623 1687 основоположник класичної політичної економії в Англії. Петті є неоднозначною. У своїх працях особливо ранніх Петті віддає данину меркантилізму. Отже на відміну від меркантилістів які використовували емпіричний описовий метод Петті заклав основи абстрактного методу в політичній економії.
73897. Зародження і проблеми суперечливого розвитку класичної буржуазії політекономії у Франції. 29.5 KB
  Буагільбер У XVII ст. Пєр де Буагільбер 1646 1714 засновник класичної політичної економії у Франції народився в Руані в дворянській сім'ї здобув гарну освіту займався певний час літературною діяльністю потім юриспруденцією. Особливості економічного розвитку Франції позначилися на формуванні економічних поглядів Буагільбера. 1696 Роздрібна торгівля Франції 1699 Міркування про природу багатства грошей і податків 1707 та інших Буагільбер виступає з гострою критикою меркантилізму.
73898. Виникнення політичної економії в Німеччині. Ф. Ліст, “Стара і нова” історичні школи В. Рошер, К. Кніс, Б. Гільдебранд, Г. Шмолер, В. Зомбард, Брентано 50.5 KB
  Німеччина XIX ст. — це країна, що складалася з політично й економічно відособлених держав, обєднаних у конфедерацію за національною ознакою. їхня економічна відособленість базувалась на феодальних відносинах
73899. Економічна думка Давньої Греції. 34.5 KB
  Проте Ксенофонт як захисник натурального господарства все ж помітив зрослий поділ праці в суспільстві хоча й заперечував об'єктивний недолік який випливав звідси потребу розгортання товарногрошових відносин. Зрівняльний розподіл у філософів та воїнів поєднувався з широким розподілом праці між всіма громадянами. Численні його праці охоплюють найрізноманітніші галузі знання: логіку психологію риторику етику поетику економіку фізику зоологію. Серед визначних його відкриттів у галузі економіки аналіз розвитку форм вартості в...