50177

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

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

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

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

Русский

2014-01-17

67 KB

1 чел.

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

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

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


 

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

784. Формирование психофизиологических характеристик хоккейного вратаря в возрасте 12-14 лет 270.5 KB
  Особенности психологической характеристики вратарей в возрасте 12-14 лет. Методика специфической игровой деятельности и психологической характеристики юных вратарей-хоккеистов. Программа особенностей игровой деятельности и психологическая характеристика хоккейного вратаря 12-14 лет в годичном цикле подготовки.
785. Термодинаміка і статистична фізика 407 KB
  Основою термодинамічного підходу є встановлення зв’язків між безпосередньо вимірюваними в макроскопічних дослідах величинами. Внутрішня енергія або ентропія є однозначною функцією стану. Принцип Нернста стосовно абсолютного нуля температур. Правило рівноваги фаз Максфела.
786. Створення програмного комплексу для автоматичного аудиту розрахункової техніки комп’ютерної мережі підприємства 411.5 KB
  Впровадження локальних мереж. Індустрія глобальних мереж. Класифікація засобів моніторингу і аналізу. Розподіл використовуваних мережевих протоколів. Основні генератори широкомовного трафіку (Top Broadcasters). Протокол SNMP.
787. Составление графиков погашение долга 254.5 KB
  Используя средства Microsoft Excel, научиться составлять графики погашения долга и оценивать привлекательность условий кредитования для заемщика. На основе информации коммерческих банков об условиях кредитования составить графики погашения долга различными способами.
788. Использование Windows Forms и шаблонов классов 217.5 KB
  Разработать в MS Visual Studio программное решение на языке C#, которое реализует для контейнера типа линейный односвязный список оконный пользовательский интерфейс. Использовать методы визуального программирования и классы библиотеки Windows Forms.
789. Исследование асинхронного двигателя с фазным ротором 282.5 KB
  Получение практических навыков по эксплуатации, опытному и расчетному методам определения рабочих и механических характеристик асинхронного двигателя с фазным ротором, а также по оценке его эксплуатационных свойств.
790. Информационная и методическая база финансового менеджмента 207.5 KB
  Информационное обеспечение финансового менеджмента. Методическая база финансового менеджмента. Содержание системы информационного обеспечения финансового менеджмента, ее широта и глубина.
791. Машиностроительный комплекс России 247.5 KB
  Структура машиностроения и его основные особенности в РФ. Особенности размещения машиностроения в РФ. Современное состояние машиностроения РФ и перспективы развития. Место РФ в мировом производстве машиностроения.
792. Численное решение задачи Коши 522.5 KB
  Приближенное численное решение задачи Коши для обыкновенного дифференциального уравнения первого порядка. Решение осуществлено как с помощью встроенных функций пакета MATHCAD, так и с помощью пользовательских функций.