50186

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

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

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

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

Русский

2014-01-17

67.5 KB

6 чел.

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

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

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


 

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

21688. ПОСТРОЕНИЕ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА 70 KB
  3 а также об объектах 4го порядка. Рассмотрим систему объектов 1го порядка связанную универсальным интерфейсом и рассмотрим её в виде полносвязного ориентированного графа. Вершины графа означают объекты 1го порядка рёбра объекты 2го порядка. Направление стрелки на ребре указывает от какого объекта 1го порядка к какому передаётся взаимодействие.
21689. НЕЙРОННЫЕ СЕТИ 394 KB
  НЕЙРОННЫЕ СЕТИ Нейронные сети начали активно распространяться 20 лет назад они позволяют решать сложные задачи обработки данных. Нейронные сети названы так потому что их архитектура в некоторой степени имитирует построение биологической нервной ткани из нейронов в мозге человека. Первый шаг был сделан в 1943 году с выходом статьи нейрофизиолога Уоррена Маккалоха и математика Уолтера Питтса про работу искусственных нейронов и представления модели нейронной сети на электрических схемах.htm Итак нейронные сети появились как результат...
21690. ТЕХНОЛОГИИ НЕЙРОННОГО УПРАВЛЕНИЯ 181 KB
  Он составляет основу для большинства схем нейронного управления. ТЕХНОЛОГИИ НЕЙРОННОГО УПРАВЛЕНИЯ Во многих реальных системах имеются нелинейные характеристики сложные для моделирования динамические элементы неконтролируемые шумы и помехи а также множество обратных связей и другие факторы затрудняющие реализацию стратегий управления. За последние два десятилетия новые стратегии управления в основном развивались на базе современной и классической теорий управления. Как современная в частности адаптивное и оптимальное управление так и...
21691. Расширение последовательной схемы нейронного управления 106 KB
  Простая процедура обучения для эмулятора выглядит так: {рис. 109} Целью обучения является минимизация ошибки предсказания . 109} Для ускорения сходимости процесса обучения можно использовать другую модель эмулятора: {рис.
21692. Нейронный контроллер 225 KB
  Сегодня мы посмотрим что внутри у нейроконтроллера а также займёмся повышением эффективности оперативного управления. Нейронный контроллер Предположим что объект управления описываемый уравнением является обратимым. Если выход близок к выходу при соответствующих входах то многослойная нейросеть может рассматриваться как контроллер в прямой цепи управления.
21693. Обучение контроллера: подход на основе прогнозируемой ошибки выхода 361.5 KB
  Шаг 1. read ; Шаг 2. {Обучение эмулятора} for := downto 0 do begin :=; ; end; Шаг 3. {Генерация управляющего входного сигнала} :=; или :=; :=; Шаг 4.
21694. ПАРАЛЛЕЛЬНАЯ СХЕМА УПРАВЛЕНИЯ 538.5 KB
  ПАРАЛЛЕЛЬНАЯ СХЕМА УПРАВЛЕНИЯ В параллельной архитектуре нейронного управления нейронная сеть используется наравне с обычным ПИДрегулятором. Настройка выполняется таким образом чтобы выходной сигнал объекта управления как можно точнее соответствовал заданному опорному сигналу . Из этих примеров следует что даже если удастся разработать хорошую общую стратегию управления может возникнуть необходимость в её настройке с целью получения лучших практических результатов.
21695. ПРИЛОЖЕНИЯ НЕЙРОННОГО УПРАВЛЕНИЯ 453.5 KB
  Далее мы будем изучать примеры практического применения некоторых методов нейроуправления и не только нейроуправления для реальных систем. ПРИЛОЖЕНИЯ НЕЙРОННОГО УПРАВЛЕНИЯ В качестве реальной системы будем рассматривать систему управления температурой водяной ванны инвертированный маятник систему управления генератором в электрическом транспортном средстве и печь как многомерный объект управления со многими входами и выходами. Система управления температурой водяной ванны Система управления представляет собой регулятор температуры для...
21696. МЕТОДЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА 286 KB
  Вычисления соответствующие действиям нечёткого контроллера в системе управления температурой водяной ванны можно представить в виде следующего алгоритма: Шаг 1. Гн Омату рассматривает помимо нейросетевого и нечёткого управления ещё два способа управления водяной ванной. По результатам экспериментов из всех схем управления схема ПИД наиболее проста в реализации.