49997

Нечеткая логика. Создание простейшей системы нечеткой логики

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

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

Создание простейшей системы нечеткой логики реализованной на языке высокого уровня. Задание Согласно заданным вариантам разработать программу на любом алгоритмическом языке способную: Различать степени изменения лингвистической переменной в трех степенях...

Русский

2015-01-29

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.

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


 

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

23341. Генератор прикладных программ 290 KB
  Задание на лабораторную работу: Перед началом работы создать отдельный каталог для файлов приложения. Выполните генерацию стандартного приложения создавая или указывая базу данных на шаге 1. Проверьте работу стандартного приложения: стандартный экран форма ввода кнопки управления; меню стандартного приложения. Отчет по лабораторной работе: Проектирование приложения: Результат работы генератора: Результат работы кнопки New Knopka ввести новую запись: Контрольные вопросы: Структурные элементы стандартного приложения.
23342. Интегрированная cреда FoxPro 49 KB
  Лабораторная работа №1: Интегрированная cреда FoxPro. Цель работы: знакомство с возможностями среды СУБД FoxPro for Windows. Задание: Создайте на диске Х: каталог под именем FOXPRO для хранения примеров. Войдите в среду FoxPro.
23343. Создание структуры базы данных в СУБД FoxPro 118.5 KB
  Лабораторная работа №2: Создание структуры базы данных в СУБД FoxPro По дисциплине: Базы данных. Цели работы: изучить типы данных FoxPro; научиться создавать структуру базы данных; заполнить таблицы данными. Задание: Создайте структуру базы данных в соответствии с вашей темой расчетнографического задания. Изучите возможности среды СУБД FoxPro for Windows для создания структуры базы данных.
23344. Сортировка и индексирование баз данных 87 KB
  Лабораторная работа №3: Сортировка и индексирование баз данных По дисциплине: Базы данных. Задание: Выполните сортировку по одному полю базы данных содержащей не менее 15 записей. Повторите сортировку для полей содержащих разные типы данных. Просмотрите результат сортировки в новой базе данных.
23345. рогнозирование периодичности технического обслуживания (межремонтной цикла tM ) для ансамбля однотипных мащин 44 KB
  16 ТМ 93 98 102 Данные для расчетов: Варианты 1 2 3 tk – время измерения выходного параметра час 10 10 10 up –предельное значение 100 150 200 u1 – измеренные значения 9.5 155 21 u2 – измеренные значения 12 165 19 u3 – измеренные значения 11 14 23 u4 – измеренные значения 105 145 22 u5 – измеренные значения 85 15 17 u6 – измеренные значения 9 15 20 u7 – измеренные значения 95 135 21 u8 – измеренные значения 10 157 15 u9 – измеренные значения 105 153 24 u10 – измеренные значения 95 15 18.
23346. Прогнозирование параметра технического состояния конкретного элемента по его реализации 78 KB
  Устинова Основы эксплуатации техники ЛАБОРАТОРНАЯ РАБОТА № 5 Прогнозирование параметра технического состояния конкретного элемента по его реализации Выполнил: Студент группы ВЕ187 Устюжанцев А. Этап 1 Аппроксимация изменения параметра степенной функцией вида: u0t = v0 t 1 Построить графики опытных данных и усредненной аппроксимирующей кривых Указание: Использовать метод МНК реализованный в Excel Этап 2 Определение...
23347. Определение точечных оценок для мат.ожидания и дисперсии выборки 120 KB
  ожидания и дисперсии выборки. Проверка выборки на обнаружение грубых погрешностей. При обнаружении промахов они отбрасываются из выборки после чего все вычисления начиная с п. Проверка выборки на нормальность.
23348. Найти точечные оценки для ресурса 247.5 KB
  Проверяемая гипотеза состоит в том что результат измерения Xk не содержит грубой погрешности. Для проверки гипотезы составим величины = 1504454 ; = 2772253; 4 Для обнаружения грубых погрешностей используется критерий Романовского заключающийся в том что промахами считаются те измерения для которых выполняется неравенство: 5 После выброса промахов из выборки все расчеты по пп. Напоминание Интервальная оценка...
23349. Определение долговечности машины по оптимальному технико-экономическому критерию 44.5 KB
  Для трех величин первоначальной стоимости машины S руб и двух значений n n=n1 n=n2 данные для которых указаны в таблице определить оптимальную долговечность машины. z1 = S t руб ч Вычислить функцию z1t для области времен t =[10 – 1000 ] час с шагом 10час. n = 2 n = 2 n = 2 n=3 n=3 n=3 S1 S2 S3 S1 S2 S3 Долговечность час 320 450 1000 40 50 80 Удельные затраты руб час 32625 4572222 10100 20600 32600 94600 Провести анализ...