50193

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

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

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

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

Русский

2014-01-17

68 KB

4 чел.

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

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

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


 

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

51155. Возрастная психология. Лабораторный практикум 227.81 KB
  Интерпретацию непроизвольного рисунка можно использовать для выяснения подробностей жизни ребенка или для выяснения того насколько взрослый человек переживает то или иное событие. Юнгу особенности личности ребенка и формами его художественного выражения. Юнгу особенности личности ребенка и формами его художественного выражения. Обычно опрос перерастает в беседу о жизненных представлениях ребенка.
51156. Система управления базами данных ACCESS 324.42 KB
  Установите типы данных счетчик текстовый числовой и т. созданных таблиц. Определите первичные ключи в созданных таблицах.
51157. Аналитическое определение различных видов теплоемкостей 3.1 MB
  Ознакомление с одним из методов экспериментального определения теплоемкости воздуха. Аналитическое определение различных видов теплоемкостей, определение средней теплоемкости по таблицам.
51158. ПРИМЕНЕНИЕ ХАРАКТЕРИОГРАФА ДЛЯ ИССЛЕДОВАНИЯ ВАКУУМНЫХ И ТВЕРДОТЕЛЬНЫХ ПРИБОРОВ 6.38 MB
  Сущность характериографических исследований заключается в приложении к объекту исследования изменяющегося напряжения вызывающего ток протекающий через объект с последующим отображением зависимости этого тока от напряжения в прямоугольной системе координат.1 Исследуемый объект Здесь исследуемый объект подключён к генератору линейно изменяющегося напряжения ГЛИН. Если подать линейно изменяющееся напряжение например на входы горизонтального отклонения луча электроннолучевой трубки осциллографа X а напряжение с измерительного...
51159. Дослідження текстового та графічного режимів роботи EPSON-сумісних матричних принтерів 26.69 KB
  Специальные функции передаются на ПУ сериями Escpe Серия Escpe состоит из кода Escpe 1B и буквенноцифровых знаков или символов. Виды шрифтов SO выход из основного набора ИСО включение широкого шрифта ESC SO включение широкого шрифта SI вход в основной набор ИСО включение уплотненного шрифта ESC SI включение уплотненного шрифта DC2 выключение уплотненного шрифта DC4 выключение широкого шрифта ESC E включение жирного шрифта ESC F выключение жирного шрифта ESC G включение двойной печати ESC H выключение двойной...
51161. ОПЕРАЦИОННЫЙ БЛОК МИКРОПРОГРАММИРУЕМОГО ПРОЦЕССОРА 127.5 KB
  Определить количество нулей в коде числа. Используемые регистры R0=Число в котором будет определяться колво нулейC000 h R2=10 h R3=0 Тесты: R0=C000 R2=000E; R0=FFFF R2=0000; R0=0000 R2=0010; R0=FBE R2=0004; Выводы: В данной работе был изучен операционного блока на уровне структурной схемы так же я ознакомился с составом микрокоманд и порядком их выполнения с составлением и отладкой микропрограммы. Был разработан и реализован алгоритм позволяющий определить количество нулей в коде числа и в соответствии с ним написана микропрограмма.
51162. Исследование параметров воздуха рабочей зоны и защиты от тепловых излучений 42.9 MB
  Холодный период года период года характеризуемый среднесуточной температурой наружного воздуха равной 10 С и ниже. Теплый период года период года характеризуемый среднесуточной температурой наружного воздуха выше 10 С. Среднесуточная температура средняя величина температуры наружного воздуха измеренная в определенные часы суток через одинаковые интервалы времени.