50198

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

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

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

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

Русский

2014-01-17

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

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


 

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

22030. Перемещения иона в мембране 347 KB
  В случа переноса ионов через биомембраны за ось Х можно принять ось нормальную к мембране и направленную изнутри везикулы например клетки наружу см. Как же перемещается ион в толще липидного слоя мембраны В разделе 1 говорилось о том что такое перемещение возможно благодаря перестройке конфигурации жирнокислотных цепей и образованию нового кинка . Движение иона поперёк мембраны путём перескакивания из одного кинка в другой. На рисунке показаны не разные молекулы фосфолипидов в бислое а разные стадии процесса переноса иона...
22031. Системы передачи с временным разделением каналов 139 KB
  Напомним что для преобразования аналогового сигнала в цифровой используются операции ДИСКРЕТИЗАЦИЯ КВАНТОВАНИЕ КОДИРОВАНИЕ. Значение шума квантования зависит от количества уровней квантования скорости изменения сигнала и от спосрба выбора шага квантования. не зависит от а } = где вероятность попадания сигнала в iю зону квантования. зависит лишь от шага квантования и не зависит от уровня сигнала.
22032. Дельта - модуляция (кодирование с предсказанием) (ДИКМ) 158.5 KB
  Основные параметры характеристики компрессии по А – закону приведены в таблице: № сегмента Вид кодовой комбинации P XYZ ABCD Относительный интервал изменения входного сигнала Значение шага квантования относительно Uогр 0 P 000 ABCD 0  1 128 1 2048 1 P 001 ABCD 1 128  1 64 1 2048 2 P 010 ABCD 1 64  1 32 1 1024 3 P 011 ABCD 1 32  1 16 1 512 4 P 100 ABCD 1 16  1 8 1 256 5 P 101 ABCD 1 8  1 4 1 128 6 P 110 ABCD 1 4  1 2 1 64 7 P 111 ABCD 1 2  1 1 32 Кодовая комбинация и есть код квантованного сигнала P  ABCD ...
22033. Особенности передачи сигналов данных 67 KB
  Качество передачи при этом оценивается не искажениями формы сигналов как в аналоговых системах а числом ошибок в принятой информации т. верностью передачи. В хороших модемах перед началом передачи информации вначале устанавливается связь между модемами которые автоматически обмениваясь сигналами подстраиваются под конкретную линию связи и автоматически выбирают необходимую скорость передачи а затем передают саму информацию.
22034. Графическая визуализация вычислений 83.54 KB
  В ходе выполнения данной лабораторной работы я освоил визуализацию вычислений средствами указанных функций
22035. Казкотерапія як напрям психолого-педагогічної терапії 132.5 KB
  Озброїти студентів знаннями про сутність казкотерапії та особливості психолого-педагогічої терапії за допомогою казки. Ознайомити з видами казок у казко терапії. Пояснити особливості використання різних форм роботи з казкою у процесі казко терапії. Сформувати поняття про використання різних арттерапевтичних технік та їх поєднання в казкотерапевтичній роботі.
22036. Музикотерапія та особливості її використання 57.5 KB
  Музикотерапія – це контрольоване використання звуків і музикп в лікуванні і реабілітації клієнтів, що являє собою діяльність, яка включає: відтворення, фантазування, імпровізацію за допомогою людського голосу і вибраних музичних інструментів чи прослуховування спеціально підібраних музичних творів.
22037. Математическая обработка данных 21.98 KB
  В ходе выполнения лабораторной работы мною были освоены функции, позволяющие решать нетривиальные математические задачи.
22038. Основные графические возможности 131.8 KB
  Построить график дискретных отсчетов функции. Отразить координатную сетку. Закрасить маркеры. Построить графики в логарифмическом и полулогарифмическом масштабе, используя разбиение графического окна. Построить лестничный график. В этом же графике графическом окне построить плоской график заданной функции.