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.

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


 

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

12837. Пойми меня мероприятие для отряда 28 KB
  ПОЙМИ МЕНЯ Задачи: развитие ассоциативного мышления развитие речи сообразительности. Период смены: основной период. Возраст детей: все отряды. Продолжительность:1 час. Количество детей: 2 команды по12 отряда. Место провидения: площадка перед корпусом чтобы...
12838. Пара ласковых мероприятие для отрядной группы 22.5 KB
  Задачи: снять агрессию избежать конфликтных ситуаций дать возможность детям разрядиться. Период смены: 911 дней. Возраст детей: 13 и старше Продолжительность: 30 минут. Количество детей: 5 и более. Место проведения: помещение или место на природе...
12839. Сюжетно-ролевая игра «НОЧЬ ТРИФФИДОВ» 67 KB
  Сюжетноролевая игра НОЧЬ ТРИФФИДОВ Сюжетноролевая игра Ночь Триффидов создана по мотивам произведения Джона Уиндема День триффидов.Возраст участников игры колебался от 13 до 45 лет. ПОДГОТОВКА К ИГРЕ: Особенно интересна ситуация когда играть будет большое к
12840. Найди свою мероприятие для отряда 20.5 KB
  НАЙДИ СВОЮ. Задачи: сдружить и сплотить мальчиков и девочек. Период смены: вторая половина основного или заключительный период. Возраст детей: от 14 лет. Продолжительность: Количество детей: 1020 человек. Место проведения: отрядное место. Оборудование...
12841. КОРАБЛЕКРУШЕНИЕ 31 KB
  КОРАБЛЕКРУШЕНИЕ. Задачи: снять агрессию избежать конфликтных ситуаций дать возможность детям разрядиться. Период смены: 35 дней. Возраст детей: 12 и старше Продолжительность: около 1 часа. Количество детей: 1030 человек. Место проведения: помещение или место на п...
12842. Отрядное дело на знакомство 27 KB
  ОД на ЗНАКОМСТВО. Задачи: познакомить детей друг с другом выявить лидера. Период смены: первый день орг. периода. Возраст детей: все отряды. Продолжительность: 1-15 часа. Количество детей: весь отряд. Место проведения: лужайка или помещение. Оборудование: повязки...
12843. Домик для сосны отрядное дело 21 KB
  ДОМИК ДЛЯ СОСНЫ. Задача: творческое развитие детей сплотить коллектив. Период смены: 56день. Возраст детей: младший отряд. Продолжительность: 30-40 минут. Количество детей: несколько групп по любому количеству человек. Место проведения: площадка перед корпусом р
12844. День рыцарства 32 KB
  День рыцарства Период смены: основной. Возраст детей: все отряды за исключением возможно самого младшего Колво детей: участвует равное колво мальчиков и девочек. Продолжительность: 6080 мин. Оборудование: цветная бумага ножницы стулья кегли или кубики20 фломастеров
12845. Девятилетние принцессы. ОД предназначено для дня девочек 26.5 KB
  Девятилетние принцессы Период смены: основной ОД предназначено для дня девочек или чегото в этом родеВозраст: младшие отряды34 Количество детей: все девочки отряда мальчики жюри Продолжительность: 15 часаМесто проведения: отрядное местоОборудование: незаполненн...