50193

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

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

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

Различать степени изменения лингвистической переменной в трех степенях – «Очень – Нормально – Слабо» Б. Изменять порог чувствительности. Маленький – средний - большой

Русский

2014-01-17

68 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.

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


 

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

42585. Моделювання системи завадостійкої передачі інформації 125.5 KB
  Створити кореляційний приймач Перемножуач інтегратор пристрій синхронізації пороговий пристрій.
42587. Культура как объект социологического познания, ее элементы и функции 15.71 KB
  В социологическом изучении культуры выделяют два основных аспекта: культурную статику и культурную динамику, первая предполагает анализ структуры культуры, а вторая – развитие культурных процессов.
42588. Дослідження засобів документування програм 366.5 KB
  Документування ПЗ – це один з процесів підтримки життєвого циклу ПЗ, який полягає у фіксуванні інформації,яка створюється у межах діяльностей. Результатом процесу документування є документи (документація), які випускаються згідно з планом документування. Однією із складових процесу документування ПЗ є документування програмного коду з метою створення документів, які містять високорівневу структуровану інформацію для розробників. Документування включає створення вербальних та графічних представлень програмного коду (узагальнюючого тексту, діаграм тощо), їх структуризацію,форматування та фіксацію на носії. Ці дії можуть виконуватися із використанням автоматизованих засобів.
42590. Основные идеи П.Л. Лаврова и Н.К. Михайловского 15.57 KB
  Видное место в социологии народничества занимает субъективное направление. Субъективное направление возникло в конце 60-х годов XIX в. и просуществовало до Октябрьской революции, подвергнувшись значительной эволюции
42591. При натисненні на кнопку 1 змінити написання тексту деякої мітки (встановити атрібути курсив та підкреслений) 66.5 KB
  Розмістити на формі необхідні для виконання індивідуального завдання компоненти TEdit TLbel TButton. Програмний код: unit lb1; interfce uses Windows Messges SysUtils Vrints Clsses Grphics Controls Forms Dilogs StdCtrls; type TForm1 = clssTForm Button1: TButton; Button2: TButton; Edit1: TEdit; Lbel1: TLbel; procedure Button1ClickSender: TObject; procedure Button2ClickSender: TObject; privte { Privte declrtions } public { Public declrtions } end; vr Form1: TForm1;...
42592. Основные паспортные данные токарного станка ТВ -4 712 KB
  Ознакомиться с составлением паспорта станка. Изучить основные технические данные станка с целью выявления его технологических возможностей. Порядок выполнения работы: Пользуясь натуральным образцом станка плакатами учебными пособиями ознакомиться с конструкцией и управлением станка.
42593. П.Сорокин: концепции социальной конвергенции, социальной мобильности 15.39 KB
  Понятие социальной мобильности ввел П. Сорокин, определивший ее как «любой переход индивида, социального объекта или ценности, созданной или модифицированной благодаря деятельности, от одной социальной позиции к другой»