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.

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


 

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

22592. Права та форми власності на землю 64 KB
  Земля в Україні може перебувати у приватній комунальній та державній власності. Суб'єкти права власності на землю. а громадяни та юридичні особи на землі приватної власності; б територіальні громади які реалізують це право безпосередньо або через органи місцевого самоврядуванні на землі комунальної власності; в держава яка реалізує це право через відповідні органи державної влади на землі державної власності.
22593. Цивільне - правові угоди та договори 33.93 KB
  Угоди укладають як юридичні так і фізичні особи. Угоди бувають односторонніми для виникнення такої угоди достатньо волевиявлення однієї сторони; двосторонніми для виникнення угоди необхідні зустрічні волевиявлення двох сторін; багатосторонніми для їх виникнення необхідне волевиявлення трьох і більше сторін. Деякі угоди можуть бути як платними такі безоплатними наприклад договір схову.
22594. Договір найму жилого приміщення 30.71 KB
  Договір найму жилого приміщення в будинках що належать громадянам на правах особистої власності укладається з власником будинку. Предметом договору найму жилого приміщення в будинках державного і громадського житлового фонду є окрема квартира чи інше ізольоване житлове приміщення а також одноквартирний жилий будинок. Не можуть бути самостійним предметом договору найму: жиле приміщення яке хоча і є ізольованим але розмір якого менший від установленого для надання одній особі; частина кімнати або кімнат з'єднаних з іншою кімнатою...
22595. Контролер локальних дисків 63.5 KB
  Програмування контролера НГМД 765 і мікросхеми прямого доступу до пам'яті 8237. Мікросхема контролера НГМД 765 фірми NEC управляє мотором і головками накопичувача на дискетах і обробляє потоки даних що направляються в або з дискових секторів. Один контролер встановлений на платі адаптора дисків може обслуговувати до чотирьох НГМД. За винятком випадків пов'язаних із захистом від копіювання програмістам не доводиться програмувати мікросхему контролера НГМД напряму.
22596. Імітаційна модель процесора 97.5 KB
  Команда як послідовність деяких дій над даними виконується по тактам мікропрограма команди. Команда має вигляд: Код команди 1й операнд 2й операнд . Найчастіше результат команди заноситься за місцем першого операнда. Формат операндів закладається у формат команди.
22597. Визначення швидкодії обчислювальної системи 80 KB
  2; текстові операції 0.2; файлові операції 0.35; операції сортування 0.15; текстові операції 0.
22598. Робота з регістрами CMOS-memory 45.5 KB
  Приведемо тут тільки короткі зведення: Номер регістра Використання 10H тип накопичувача НГМД 12H тип накопичувача фіксованого диска 14H периферія 15H пам'ять на системній платі молодший байт 16H пам'ять на системній платі старший байт 17H загальна пам'ять молодший байт 18H загальна пам'ять старший байт 30H пам'ять понад 1 мегабайту молодший байт 31H пам'ять понад 1 мегабайту старший байт Кожний з трьох каналів мікросхеми таймера 8253 8254 для AT складається з трьох регістрів. Доступ до кожної групи з трьох регістрів здійснюється...
22599. Контроль клавіатурного вводу 32 KB
  Скенкод це однобайтне число молодші 7 бітів якого представляють ідентифікаційний номер призначений кожній клавіші. На всіх машинах крім AT старший біт коду говорить про те чи була клавіша натиснута біт = 1 код натискання або відпущена біт = 0 код звільнення. Наприклад 7бітный скенкод клавіші В 48 або 110000 в двійковій системі.
22600. Управління відеоадаптером IBM PC 35.5 KB
  Однак вона також встановлює режим екрана управляє курсором і для кольорового графічного адаптора управляє кольором. Розмір і розташування цих буферів міняється з системою режимом екрана а також кількістю заздалегідь відведеної пам'яті. Коли в буфері зберігається декілька образів екрана то кожний окремий образ називають екранною сторінкою. Цього досить для відображення одного графічного екрана без сторінок або від чотирьох до восьми екранів тексту в залежності від числа символів в рядку 40 або 80.