50191

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

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

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

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

Русский

2014-01-17

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.

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


 

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

17311. ЗАХИСТ ЛОКАЛЬНИХ МЕРЕЖ ВІД ВИТОКІВ КОНФІДЕНЦІЙНОЇ ІНФОРМАЦІЇ 161 KB
  Лекція 22. Захист локальних мереж від витоків конфіденційної інформації Основні характеристики систем запобігання витокам інформації З розвитком ІТ секрети стали уразливі як ніколи. У епоху паперових документів співробітникові було скрутно непомітно винести докум
17312. ЗАХИСТ GRID-ТЕХНОЛОГІЙ 134.5 KB
  Лекція 24. Захист Gridтехнологій Загальні положення Технологія Grid призначена для створення географічно розподіленої обчислювальної інфраструктури що об'єднує ресурси різних типів з колективним доступом до цих ресурсів в рамках віртуальних організацій що складаютьс...
17313. ЗАСОБИ БЕЗПЕКИ GRID - ТЕХНОЛОГІЙ 124 KB
  Лекція 24. Засоби безпеки Grid технологій Сучасний стан програмного забезпечення інфраструктури GRID На сьогодняшній день розроблено нове покоління програмного забезпечення GRID ГПЗ. Представниками цього покоління є дві основні розробки: Globus Alliance випустив версію 4.0 комп...
17314. Візуальне програмування – робота з БД Компонентне програмування – робота з об'єктами БД 881.96 KB
  Парадигми програмування Кредит 1 Лабораторна робота 2. Візуальне програмування робота з БД Компонентне програмування робота з обєктами БД. 2 год Практикум прикладного программирования на C в среде VS.NET 2008...
17315. Створення DLL-бібліотеки 63.99 KB
  Лабораторна робота 1. Створення DLLбібліотеки Мета роботи: 1. Створення DLLбібліотеки 2. Створення рішення з кількох проектів модулів 3. Створення DLLбібліотеки як окремого рішення. 4. Вивчення структури збірки метаданих збірки В платформі Microsoft .NET реалізовано ком...
17316. Візуальне програмування – робота з БД Компонентне програмування – робота з обєктами БД 215.38 KB
  Лабораторна робота 3. Візуальне програмування робота з БД Компонентне програмування робота з об'єктами БД. 2 год Мета роботи: Зв'язування даних з елементами управління ListBox і TextBox У палітрі компонентів Toolbox відкрийте вкладку Data і перетягніть на форму компонент...
17318. Візуальне програмування – робота з БД Компонентне програмування – робота з обєктами БД 67 KB
  Лабораторна робота 4. Візуальне програмування робота з БД Компонентне програмування робота з об'єктами БД. 2 год Мета роботи: Додавання оновлення і видалення даних Розмістіть на формі дві кнопки Button які налаштуйте відповідно до таблиці властивостей ...
17319. Компонентне програмування – робота з обєктами БД 1.17 MB
  Лабораторна робота 5 Компонентне програмування робота з об'єктами БД. Мета роботи: 1. Розробка інформаційної моделі схеми бази даних 2. Відображення даних із зв'язаних таблиць 1. Розробка інформаційної моделі схеми бази даних Розробка діаграми дозволяє візуа...