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.

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


 

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

40166. РЕГИСТРЫ. Параллельный регистр 85.5 KB
  Осуществляет следующие функции: хранение информации сдвиг информации вправо или влево запись информации в последовательной и параллельной формах выдача хранимой информации в последовательной и параллельной формах. Классификация: 1 По способу приема информации: последовательные сдвигающие в которые информация записывается и считывается только в последовательной форме; параллельные статические в которые информация записывается и считывается только в параллельной форме; последовательнопараллельные в которые информация записывается...
40168. АРИФМЕТИКО-ЛОГИЧЕСКИЕ УСТРОЙСТВА 190 KB
  Представляют собой логическое комбинационное устройство предназначенное для выполнения операции арифметического сложения чисел представленных в виде двоичных кодов. 1 Сложение двух одноразрядных двоичных кодов. Функцию S называют функцией исключения ИЛИ или суммой по модулю два которую необходимо выполнить для суммирования двух двоичных одноразрядных кодов. 2 Сложение разрядов многоразрядных двоичных кодов.
40169. БАЗОВЫЕ ЛОГИЧЕСКИЕ ЭЛЕМЕНТЫ 298 KB
  1 Пример обозначения базовых логических элементов БЛЭ: 15.2 Основные сведения о БЛЭ Способы представления логических переменных: 1 Потенциальный способ  значениям логических 0 и 1 соответствуют два различных уровня напряжения и тока в связи с чем различают положительную и отрицательную логики. Основные свойства БЛЭ: 1 Нагрузочная способность ЛЭ  свойство получать сигнал от нескольких ЛЭ и одновременно быть источником информации для других элементов.3 БЛЭ транзисторнотранзисторной логики ТТЛ Схемы ТТЛ состоят из двух базовых...
40170. ГЕНЕРАТОРЫ НА ЛОГИЧЕСКИХ ЭЛЕМЕНТАХ И ТАЙМЕРЫ 766.5 KB
  Для защиты элемента ТТЛ от действия напряжения отрицательной полярности в его входной цепи установлен обратно включенный диод, который шунтирует резистор время задающей цепи. Длительность интервалов tи и Tг определяется
40171. СХЕМОТЕХНИКА УСИЛИТЕЛЬНЫХ УСТРОЙСТВ НА ТРАНЗИСТОРАХ 531 KB
  Класс применяется только в маломощных каскадах предварительных усилителях для которых К. около 07; 2 используется в усилителях средней и большой мощности; Рис.1 Входная характеристика каскада с ОЭ а; Выходная характеристика каскада с ОЭ б; Характеристика каскада в режиме А в; Характеристика каскада в режиме В г 3 происходит усиление только одной положительной полуволны усиливаемого сигнала UВХ поэтому выходной имеет прерывистый характер; недостатком является значительные нелинейные искажения UВЫХ называются...
40172. ОПЕРАЦИОННЫЕ УСИЛИТЕЛИ 328 KB
  Наличие этого напряжения приводит к нарушению условия согласно которому Uвых.V характеризует частотные свойства усилителя при его работе в импульсных схемах измеряется при подаче на вход ОУ напряжения ступенчатой формы.3 Схема трехкаскадного ОУ Входной дифференциальный усилительный каскад уменьшает величину дрейфа усилителя позволяет получить высокое усиление высокое входное сопротивление и максимально подавить действующие на входе синфазные составляющие обусловленные изменением температуры окружающей среды изменением напряжения...
40173. АКТИВНЫЕ ФИЛЬТРЫ 83 KB
  Необходимо чтобы ОУ охваченный ООС обеспечивал заданный коэффициент усиления как в полосе пропускания. Основной параметр: полоса пропускания которая определяется по уровню падения коэффициента передачи в 141 раза на 3дб. Ширина полосы пропускания изменяется варьированием RC. Коэффициент передачи в полосе пропускания постоянный и равен Кио.
40174. ГЕНЕРАТОРЫ 102 KB
  По форме выходного напряжения классифицируются: генераторы гармонических колебаний и генераторы негармонических колебаний импульсные или релаксацоинные. Ku=U2 U1=Kuωejφkω где Kuω=U2ω U1ω модуль коэффициента усиления на частоте ω; φkω=ψ2ωψ1ω сдвиг фаз между выходным и входным напряжениями Ku на частоте ω; Bu=U1 U2=Buωejφbω где Buω=U1ω U2ω модуль коэффициента передачи на частоте ω; φbω=ψ1ωψ2ω сдвиг фаз между выходным и входным напряжениями четырёхполюсника Bu на частоте ω. Если на входе...