50207

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

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

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

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

Русский

2014-01-18

68 KB

3 чел.

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

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

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


 

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

67806. ПРЕЦИЗИОННОЕ ОПРЕДЕЛЕНИЕ ПЕРИОДОВ РЕШЕТКИ 612 KB
  Одной из важнейших характеристик вещества является его период кристаллической решетки. По периодам решетки вещества можно судить об образовании, концентрации и типе твердого раствора, о наличии остаточных напряжений, определять коэффициенты термического расширения и решать многие другие металловедческие задачи.
67807. АРИФМЕТИКА ЦЕЛЫХ ЧИСЕЛ 399.5 KB
  Определение. Если для целых чисел и в кольце целых чисел существует такое число, что , то говорят, что целое число делится на целое число, и пишут. При этом число называется делимым или кратным числа, число – делителем числа, число – частным. Любое целое число всегда можно разделить с остатком на произвольное целое число.
67808. АРИФМЕТИКА ЦІЛИХ ЧИСЕЛ 416.5 KB
  Якщо для цілих чисел і в кільці цілих чисел існує таке число, що, то кажуть, що ціле число ділиться на ціле число, і пишуть. При цьому число називається діленим або кратним числа, число – дільником числа, число – часткою. Будь-яке ціле число завжди можна розділити з остачею на довільне ціле число.
67809. Основи роботи в середовищі MatCAD. Аналітичні обчислення. Операції з векторами та матрицями 264 KB
  Знайти рішення диференційного рівняння та побудувати графіки. Рішення шукати від нуля до кінцевого значення вказаного в графі таблиці «ВІДРІЗОК», графік будувати у вказаному відрізку (Таблиця 11 додаток) Обчислення похідної, інтегрування Обчислити визначений інтеграл функції (Таблиця 2, Таблиця 9, додаток)...
67810. РЕНТГЕНОВСКАЯ ДИФРАКТОМЕТРИЯ 305 KB
  Области применения рентгеновской дифрактометрии: анализ кристаллической структуры и фазовый анализ измерение интегральной интенсивности линий и точное определение их углового положения; анализ нарушений кристаллической структуры изучение профиля и интенсивности линии измерения интенсивности...
67811. АРИФМЕТИКА МНОГОЧЛЕНІВ 456.5 KB
  Множина всіх многочленів від однієї змінної над полем утворює комутативне кільце з одиницею. Будь-який ненульовий елемент поля можна розглядати як многочлен нульового степеня нуль поля також належить до многочленів його називають нульовим многочленом.
67812. Basic concepts of probability theory 33.17 KB
  For example, a landing two different prizes under only one ticket of a lottery are incompatible events, and a landing the same prizes under two tickets are compatible events. Obtaining marks «excellent», «good» and «satisfactory» by a student at an exam in one discipline are incompatible events and an obtaining...
67813. ПРАВО ВЛАСНОСТІ НА ПРИРОДНІ РЕСУРСИ 132 KB
  В загальних рисах право власності на природні об’єкти встановлено в статті 13 Конституції України, згідно якої земля, її надра, атмосферне повітря, водні та інші природні ресурси, які знаходяться в межах території України, природні ресурси її континентального шельфу, виключної (морської) економічної зони є об’єктами права власності Українського народу.
67814. Минеральная часть агропочв 70.59 KB
  Ассимиляция смектитового компонента это изменение состава и свойств пахотных горизонтов почвы при эрозии а также в ряде регионов при орошении мутными водами. Для дерново-среднеподзолистой супесчаной почвы характерно резкое увеличение количества каолинита по сравнению с содержанием гидрослюд...