50200

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

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

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

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

Русский

2014-01-17

69 KB

2 чел.

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

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

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


 

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

45882. Виды токарных резцов. Особенность их применения. Способы соединения режущей пластины с державкой. Какие факторы определяют выбор резцов для токарных работ 50.15 KB
  В качестве режущего инструмента при точении используют резцы.Виды токарных резцов а проходные: 1 прямой 2 отогнутый 3 упорный; б подрезной; в канавочные: 1 для наружных канавок 2 для внутренних; г отрезной; д расточные: 1 для сквозных отверстий 2 для глухих; е резьбовые: 1 для наружных резьб 2 для внутренних; ж фасонный Проходные прямые резцы используются для их рекомендуется назначать для обтачивания гладких открытых цилиндрических поверхностей без уступов и ступеней. Проходные упорные резцы имеют угол в...
45883. Виды фрез, и их применяемость. Как базируется фреза на станке. В чем особенности конструкции черновых, чистовых и шпоночных фрез 251.16 KB
  Цилиндрические фрезы Базовые поверхности внутренний диаметр и торцыприменяются для фрезерования открытых поверхностей. Эти фрезы могут быть с прямыми и винтовыми фрезами. Фрезы с винтовыми зубьями работают плавно они широко применяются на производстве. Фрезы с прямыми зубьями используются лишь для обработке узких плоскостей где преимущества фрез с винтовым зубом не оказывают большого влияния на процесс резания.
45884. Сверла. Назначение, технологические возможности сверления. Дефекты просверленных отверстий и мероприятия по повышению точности отверстий 69.7 KB
  Сверла. Сверла изготавливают из быстрор. Перовые сверла применяются при обр. часть пушечного сверла представ.
45885. Зенкеры. Назначение, технологические возможности зенкерования отверстий. Почему зенкерование обеспечивает более высокую точность обработки в сравнении со сверлением 111.52 KB
  Назначение технологические возможности зенкерования отверстий. Зенкеры применяются для увеличения диаметров цилиних отв. получений отв. Точность отверстий полученных зенкерованием составляет 1112 квалитет шерть R=2.
45886. Конструкция протяжек для протягивания отверстий и шпоночных пазов 81.42 KB
  Как обеспечивается соосность протяжки и отверстий от чего зависит точность и качество обработки отверстий протягиванием. Хвостовик воспринимает усилие протия и служит для закрепления протяжки в патроне станка. Длина шейки выберается с таким расчётам чтобы обеспечить необходимую длину протяжки до первого реж. Режущая часть явлся основной частью протяжки.
45887. Настроечные элементы 64.88 KB
  3 выше к ним относятся кондукторные втулки направляющие втулки. Кондукторные втулки прим. Кондукторные втулки бывают : постоянные быстросменные и сменные. Сменые втулки применяются при обработке одним инструментом но с учётом замены вследствии износа.
45888. Способы установки приспособлении на месте эксплуатации 87.32 KB
  Приспособления устанавливаются на столах элементах шпинделей и др. Чтобы быстро и точно установить на место эксплуатации на корпусе приспособления выполняются посадочные поверхности которые согласовываются с посадочным местом станка или другого места эксплуатации. Сравнительно легко обеспечивается точность расположения приспособления относительно оси шпинделя но при замене обработанной заготовки новой надо снимать приспособление со станка. 2Для установки в отверстие шпинделя на корпусе приспособления выполняется посадочная поверхность...
45889. Самоцентрирующие устройства 66.2 KB
  Самоцентрирующие устройства применяются для базирования отверстий и нар. В самоцентрирующих устройствах опорные поверхности подвижны и связаны между собой так что могут одновременно и с равным перемещением сближаться к оси устройства или удаляться от нее. По конструкции различают следующие самоцентрирующие зажимные устройства: призматические; плунжерные; цанговые; гидропластмассовые; мембранные; с тарельчатыми пружинами; 2х и 3х кулачковые патроны; рычажные.