50163

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

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

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

Блондинка - рыжая - брюнетка unit Unit1; interfce uses Windows Messges SysUtils Vrints Clsses Grphics Controls Forms Dilogs ComCtrls StdCtrlsmth TeEngine Series ExtCtrls TeeProcs Chrt; type TForm1 = clssTForm Chrt1: TChrt; Series1: TLineSeries; Series2: TLineSeries; Series3: TLineSeries; Series4: TBrSeries; TrckBr1: TTrckBr; Lbel1: TLbel; Lbel5: TLbel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Lbel6: TLbel; Lbel2: TLbel; Lbel3:...

Русский

2014-01-17

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

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


 

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

19139. Определение ядерной реакции. Элементарные частицы. Особенности ядерных реакций с нейтронами. Классификация нейтронов по энергии 150 KB
  Лекция 4. Определение ядерной реакции. Элементарные частицы. Особенности ядерных реакций с нейтронами. Классификация нейтронов по энергии. Сечение ядерной реакции. Микроскопическое и макроскопическое нейтронные сечения. 4.1. Определение ядерной реакции. Ядерная ре
19140. История открытия реакции деления. Осколки деления. Выходы осколков деления. Мгновенные и запаздывающие нейтроны 292 KB
  Лекция 5. История открытия реакции деления. Осколки деления. Выходы осколков деления. Мгновенные и запаздывающие нейтроны. Распределение энергии между продуктами деления. Спонтанное деление. Особенности сечений деления основных делящихся изотопов. 5.1. История откры
19141. Цепная самоподдерживающаяся реакция деления. Коэффициент размножения. Способы достижения критичности 4.71 MB
  Лекция 6 Цепная самоподдерживающаяся реакция деления. Коэффициент размножения. Способы достижения критичности. Критические и подкритические эксперименты. Первый ядерный реактор. 6.1. Цепная самоподдерживающаяся реакция деления В результате реакции деления появ...
19142. Плотность потока нейтронов. Скорость ядерной реакции. Баланс нейтронов в ядерном реакторе. Коэффициент размножения в бесконечной среде 265 KB
  Лекция 7. Плотность потока нейтронов. Скорость ядерной реакции. Баланс нейтронов в ядерном реакторе. Коэффициент размножения в бесконечной среде. Групповой подход. Библиотеки групповых констант. 7.1. Плотность потока нейтронов. Совокупность переменных {Et} называют...
19143. Создание базы данных, состоящей из одной таблицы 190.41 KB
  Повторим аналогичную операцию еще раз, в результате чего закроем текущую базу данных, получив пустое окно для новой работы. В этом положении можно создать новую базу данных, а можно открыть существующую для продолжения работы.
19144. Нейтронный цикл в реакторе на тепловых нейтронах. Формула четырех сомножителей. Вероятность избежать резонансного захвата и поглощения в замедлителе 178 KB
  Лекция 8. Нейтронный цикл в реакторе на тепловых нейтронах. Формула четырех сомножителей. Вероятность избежать резонансного захвата и поглощения в замедлителе. Оптимальные параметры размножающих сред. Одногрупповая теория критического реактора. Отражатель нейтронов. ...
19145. Бесконечная решетка. Элементарная ячейка. Распределение нейтронов различных энергий по ячейке 419 KB
  Лекция 9. Бесконечная решетка. Элементарная ячейка. Распределение нейтронов различных энергий по ячейке. Коэффициент размножения бесконечной периодической решетки. Твэлы и ТВС реакторов ВВЭР и РБМК. 9.1. Бесконечная решетка Кроме гомогенной среды топлива и замедлите...
19146. Многогрупповой подход. Многогрупповое уравнение диффузии. Внутренние и внешние итерации. Программы нейтронно-физического расчета 207 KB
  Лекция 10. Многогрупповой подход. Многогрупповое уравнение диффузии. Внутренние и внешние итерации. Программы нейтроннофизического расчета. Коэффициенты чувствительности коэффициента размножения к изменению параметров реактора. 10.1. Многогрупповой подход. Много...
19147. Приближения точечной кинетики. Запаздывающие нейтроны. Время жизни нейтронов в реакторе с учетом запаздывающих нейтронов 148 KB
  Лекция 11. Приближения точечной кинетики. Запаздывающие нейтроны. Время жизни нейтронов в реакторе с учетом запаздывающих нейтронов. Система уравнений точечной кинетики с одной группой запаздывающих нейтронов. Реактивность периоды реактора. Критичность на мгновенных и