50186

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

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

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

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

Русский

2014-01-17

67.5 KB

9 чел.

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

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

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


 

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

80729. Имя существительное. Проблемы падежа, числа, рода. Лексико-грамматические разряды существительных 35.14 KB
  Существительное это знаменательная часть речи обладающая семантическим значением предметности характеризующаяся наличием определенных грамматических категорий и зависимых грамматических значений. Грамматическое значение это обобщенное абстрагированное значение объединяющее крупные разряды слов и выраженное через свойственные ему формальные показатели. Зависимое грамматическое значение лексико-грамматическое значение это значение соединяющее лексический состав и грамматическую форму. Итак существительное обладает значением...
80730. Проблема артикля 33.85 KB
  Проблема места артикля представлена двумя теориями: Одна из них рассматривает сочетание Артикль Существительное как аналитическую форму. Вторая теория относит артикль к служебным частям речи а сочетание Артикль Существительное трактуется как сочетание особого типа. В соответствии с первой теорией если данное сочетание рассматривать как аналитическое то артикль приравнивается к вспомогательной части аналитической формы. В пользу этого можно привести следующие доводы: Артикль является морфологическим показателем существительного.
80731. Прилагательное. Категории прилагательного 36.35 KB
  Прилагательное это часть речи называющая признак предмета обладающий условной устойчивостью без указания на развитие признака вор времени. Прилагательное выделяется на основе трех критериев: значения формы и функции. Прилагательное обладает обобщающим грамматическим значением и это значение признака свойства или состояния.
80732. The Old English Noun 27.92 KB
  The inflection of the Old English noun indicates distinctions of number (singular and plural) and case. The case system is somewhat simpler than that of Latin and some of the other Indo-European languages. There is no ablative, and generally no locative or instrumental case, these having been merged with the dative...
80733. Actual division of the sentence 26.83 KB
  The purpose of the actual division of the sentence is to reveal the correlative significance of the sentence parts from the point of view of their actual informative role in an utterance. The main components of the actual division of the sentence are the theme and the rheme.
80734. Sentence in traditional syntax 27.07 KB
  From the traditional point of view the nuclear of syntax is formed by the gram. Subject and gram. Predicate. Periphery is formed by other parts of a sentence: complements, objects, two types of adjuncts (attributes and adverbial modifiers). These parts of a syntax are called secondary and are normally optional.
80735. Parts of speech classification, gram-l classes of words 27.62 KB
  There are three main criteria according to which we classify the words into a different gram. classes. They are meaning, form function. not the individual lexical meaning of each word but the meaning common to all the words of a given class which constitutes its essence; form, it’s the morphological characteristics of a type of word...
80736. Text linguistic 28.24 KB
  One-direction sequences can be used in dialogue, when a utterance is not a rejoinder, but a continuation the stimulating utterance addressed the same third party or to both speakers themselves, e. g. St. Erth, all money goes fellows who don’t know a horse from a haystack.- Canynge. And care less want men racing to whom a horse in something.