50151

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

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

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

Согласно заданным вариантам разработать программу на любом алгоритмическом языке, способную: А. Различать степени изменения лингвистической переменной в трех степенях – «Очень – Нормально – Слабо» Б. Изменять порог чувствительности. Улитка без ноги – медленно – быстро (о скорости)

Русский

2014-01-16

67.5 KB

2 чел.

Системы искусственного интеллекта

Лабораторная работа №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.

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


 

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

12364. Вихревое электрическое поле 3.2 MB
  3 Лабораторная работа № 13 Вихревое электрическое поле 1. Цель работы. Изучение вихревого электрического поля при изменении магнитного поля в соленоиде. 2. Электромагнитная индукция. Вихревое электрическое поле. Явление электромагнитной индукции...
12365. Изучение явления магнитного гистерезиса 4.23 MB
  17 PAGE 16 Лабораторная работа № 12 Изучение явления магнитного гистерезиса 1. Цель работы. Проведение измерений цикла перемагничивания ферромагнетика. 2. Электронный осциллограф. Прибор предназначен для исследования быстропеременных периодичес
12366. Измерение магнитной проницаемости ферромагнетика индукционным методом 249 KB
  Лабораторная работа № 11 Измерение магнитной проницаемости ферромагнетика индукционным методом 1. Цель работы: Измерить магнитные проницаемости образцов стали и феррита индукционным методом. 2. Магнитные свойства вещества. Нейтральные молекулы и атомы веществ
12367. Измерение магнитного поля постоянного кольцевого магнита 226 KB
  Лабораторная работа № 10 Измерение магнитного поля постоянного кольцевого магнита 1. Цель работы. Измерить магнитное поле на оси постоянного кольцевого магнита и рассчитать его параметры. 2. Магнитные свойства вещества. Постоянные магниты. Нейтральные молекулы
12368. Магнитное поле Земли. Измерение горизонтальной составляющей магнитного поля Земли 141 KB
  Измерение горизонтальной составляющей магнитного поля Земли. Цель работы: измерение горизонтальной составляющей магнитного поля Земли. Магнитное поле Земли. Магнитное поле Земли подобно полю равномерно намагниченного шара. Полюса м
12369. Измерение магнитного поля на оси катушек Гельмгольца 247.5 KB
  Лабораторная работа № 8 Измерение магнитного поля на оси катушек Гельмгольца 1. Цель работы: измерение магнитного поля на оси катушек Гельмгольца индукционным методом. 2. Магнитные поля токовых систем. Магнитное поле постоянных токов изучалось Био и Саваром окон...
12370. Изучение магнитного поля на оси соленоида 280.5 KB
  Лабораторная работа № 7 Изучение магнитного поля на оси соленоида 1. Цель работы: экспериментальное исследование магнитного поля на оси соленоида. 2. Магнитные поля токовых систем. Магнитное поле постоянных токов изучалось Био и Саваром окончательная формулировк...
12371. Измерение магнитного поля прямолинейного проводника с током 228 KB
  Лабораторная работа № 6 Измерение магнитного поля прямолинейного проводника с током 1. Цель работы: экспериментальное исследование магнитного поля прямолинейного проводника с током индукционным методом. 2. Магнитные поля токовых систем. Магнитное поле постоян
12372. Совершенствование обслуживания покупателей в ООО «Армина» 1.11 MB
  Исследование сущности обслуживания и показателей его качества; рассмотреть особенности организации и дать оценку эффективности обслуживания в магазинах ООО «Армина»; выявить основные направления совершенствования обслуживания покупателей в ООО «Армина»; дать характеристику ассортимента и оценку некоторых потребительских свойств детских игрушек...