49997

Нечеткая логика. Создание простейшей системы нечеткой логики

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

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

Создание простейшей системы нечеткой логики реализованной на языке высокого уровня. Задание Согласно заданным вариантам разработать программу на любом алгоритмическом языке способную: Различать степени изменения лингвистической переменной в трех степенях...

Русский

2015-01-29

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

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


 

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

41389. Базы данных. Копирование и восстановление баз данных MS SQL Server 204.5 KB
  Потери данных возможны по следующим причинам: неисправность аппаратного обеспечения; ошибки в системном программном обеспечении; ошибки в пользовательском программном обеспечении; ошибки системного администратора; некорректная работа пользователей DROP LTER UPDTE DELETE; аварийные ситуации пожар наводнение и пр. Администратор должен разработать стратегию восстановления данных. В основе любой стратегии восстановления данных лежит создание резервных копий базы данных.
41390. Базы данных Snаpshot. Snаpshot: моментальный снимок базы данных 72.5 KB
  Snpshot: предназначен для хранения архивных данных Пример Аудит: мероприятия операции направленные на отслеживание изменений базы данных кто когда как.
41391. Базы данных. Основы SQL. Реляционная база данных 120 KB
  SQL Structured Query Lnguge: 1970гг впервые разработан IBM для System R назывался SEQUEL; первый стандарт NSI SQL 1986г; первая коммерческая СУБД поддерживающая SQL была Orcle V2 на машинах VX. SQL 92: SQL 2 ISO 9075 SQL 99: SQL 3 объектноориентированные возможности. SQL 2003 SQL 2006 SQL 2009: XML.
41392. Базы данных SQL. Создание таблиц. 138.5 KB
  Заполнение таблиц Секция WHERE SELECT DELETE UPDTE Ограничение ссылочной целостности CONSTRINT SELECT ORDER BY SELECT TOP SELECT DISTINCT WHERE BEWEEN WHERE IS NULL WHERE NOT WHERE LIKE GROUP BY.
41394. Базы данных SQL 121.5 KB
  LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN INSERT INSERT SELECT INSERT UNIQUEIDENTIFIER IDENTITY INSERT defult deciml вычисляемые столбцы Время дата .
41395. Базы данных. Индексы 126 KB
  Индекс: всегда связан с таблицейс подмножеством столбцов таблицы. Индекс: предназначен для ускорения поиска строк в таблице по индексируемым столбцам Индекс: Microsoft SQL Server бывают кластерные некластерные просто индексы. Некластерный индекс: физически находится отдельно от таблицы список значений индексируемого столбца столбцов в определенном порядке с указателем на строку в таблице; список как правило бинарное дерево поиска.
41397. Базы данных. Повышение производительности запроса. 359 KB
  Query Optimizer: вычисляет несколько планов не все запроса на основе статистики метаданных информации о индексах и др.; на основе статистики предполагает стоимости запроса по различным планам и выбирает план с минимальными затратами на использование ресурсов помещает его кэш; как правило планы хранящиеся в кэше используются повторно. Стоимость запроса: числовая величина характеризующая степень использования ресурсов; Эффективность плана: наличие индексов или сканирование; статистика о распределении данных как правило...