50171

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

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

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

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

Русский

2014-01-17

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

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


 

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

7338. Выявление и оценка тенденций развития финансовых процессов на предприятии 155 KB
  Введение: На современном этапе развития нашей экономики вопрос анализа финансового состояния предприятия является очень актуальным. От финансового состояния предприятия зависит во многом успех его деятельности. Поэтому анализу финансового состояния ...
7339. Теоретические основы легирования 1.15 MB
  Теоретические основы легирования Конспект лекций составлен в соответствии с программой и учебным планом по дисциплине Теоретические основы легирования и содержит материалы по основным разделам дисциплины. СОДЕРЖАНИЕ Стр. Легирующие элементы и кл...
7340. Разработка сбалансированной системы показателей 2.01 MB
  Разработка сбалансированной системы показателей Введение Настоящий документ содержит описание методических принципов и решений, используемых при построении сбалансированной системы показателей с помощью программного продукта Business Studio. Идею ис...
7341. Акустическое поле. Полная система уравнений акустического поля. Волновое уравнение 53 KB
  Акустическое поле. Полная система уравнений акустического поля. Волновое уравнение. Поле, особая форма материи физическая система, обладающая бесконечно большим числом степеней свободы. Примерами поля могут служить электромагнитное и гравитационное...
7342. Изучение микроконтроллера MC68HC908GP32, методики его программирования и отладки 397 KB
  Изучение микроконтроллера MC68HC908GP32, методики его программирования и отладки Цель работы: Изучение состава стенда, назначения отдельных узлов стенда. Изучение технических характеристик и состава микропроцессора MC68HC908...
7343. Режимы адресации и система команд микропроцессора 143.5 KB
  Режимы адресации и система команд микропроцессора Цель работы: Изучить систему команд микропроцессора и закрепить навыки отладки программ. Программа работы Изучить систему команд и способы адресации микропроцессора Раз...
7344. Подсистема дискретного ввода/вывода 343 KB
  Подсистема дискретного ввода/вывода Цель работы: Изучить способы организации дискретного ввода/вывода, способы управления внешними устройствами, подключенными через параллельный интерфейс. Программа работы Изучить подсистем...
7345. Широкоуниверсальный фрезерный станок модели 6Р82Ш 4.93 MB
  Современные металлорежущие станки обеспечивают исключительно высокую точность обработанных деталей. Ответственны поверхности наиболее важных деталей машин и приборов обрабатывают на станках с ЧПУ с погрешностью до доли микрометров, а шероховатость поверхности при работе алмазным инструментом не превышает сотых долей микрометра.
7346. Недвижимое имущество как объект гражданских правоотношений 59.76 KB
  Предмет исследования - совокупность правовых норм, включающих особенности возникновения, осуществления и прекращения права собственности на недвижимое имущество. Цель исследования научно обосновать теоретико-прикладные положения об особенностях гражданско-правового регулирования права собственности на недвижимое имущество.