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.

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


 

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

67664. Создание базы данных для ведения учета товара АРМ мечендайзер ТОО «ATService» 3.12 MB
  Созданная программа «АРМ мечендайзер ТОО «ATService»» является перспективной разработкой, так как на основе уже хранящейся информации работают отделы служб вычислительной техники многих организаций. Таким образом, не исключено создание другими разработчиками новых версий программы...
67665. ТЕНДЕНЦИИ РАЗВИТИЯ ОБРАЗОВАНИЯ В ПОСТСОВЕТСКОЙ РОССИИ 647 KB
  Цель исследования – проанализировать современное состояние образования в России и тенденций его развития для разработки некоторых практических рекомендаций по совершенствованию образовательной деятельности на региональных уровнях: субъекта Российской Федерации...
67666. Вантажний середньо-магістральний літак підвищеної транспортної ефективності з можливістю експлуатації з ґрунтових ЗПС 16.45 MB
  Зміст розрахунково-пояснювальної записки: вибір проектних параметрів вибір; вибір та обґрунтування схеми літака; розрахунок мас літака; визначення основних геометричних параметрів; розробка компоновки літака; розрахунок центровки літака; визначення основних ЛТХ; опис конструкції літака...
67667. Возможности систем вибрационного мониторинга и диагностики роторного оборудования 3.34 MB
  Цель работы показать возможность контроля технического состояния оборудования по вибрации этого оборудования а также рассмотреть назначение и возможности систем вибрационного мониторинга и диагностики роторного оборудования. Для этого измеряется не только низкочастотная и среднечастотная...
67668. Планировка и застройка жилого образования в городе Екатеринбурге 305 KB
  Разрабатываемый участок расположен в Железнодорожном районе города Екатеринбург. Ограничен улицами Челюскинцев – Смазчиков, Восточная, Луначарского, Шевченко – Советская. Улица Восточная является магистральной улицей городского значения непрерывного движения. Челюскинцев, Смазчиков, Луначарского...
67670. Планировка и застройка жилого образования в городе Екатеринбурге 168.5 KB
  Проектируемый участок расположен в исторической части города Екатеринбурга, рядом со старым Верх-Исетским заводом. Число объектов массового притяжения людей достаточно низкое: универсам и парк 22 партсъезда, расположенный неподалеку. В непосредственной близости к участку расположено несколько образовательных учреждений,...
67671. Ппроект здания в городе Пыть-Ях 4.69 MB
  Социальный и научно-технический прогресс, развитие производственных и культурных связей, повышение материального и культурного уровня жизни людей приводят к увеличению мобильности населения, в свою очередь это сопровождается ростом спроса на культурно – досуговые услуги.
67672. Расчет передающего устройства магистральной радиосвязи, предназначенного для передачи большого количества разнообразной информации (телеграфной, телефонной, данных) на значительные расстояния 618.05 KB
  Диапазон рабочих частот 1020 МГц Нагрузка симметричный фидер волновым сопротивлением 75 Ом. Цепь коррекции которая выравнивает коэффициент усиления по мощности двухтактного генератора по диапазону частот но и обеспечивает резестивное входное сопротивление рассматривается ниже.