50139

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

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

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

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

Русский

2014-01-16

67 KB

4 чел.

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

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

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


 

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

26038. Особенности замещение государственных должностей 43.5 KB
  Особенности замещение государственных должностей По действующему законодательству государственные должности государственной службы замещаются путем назначения. Правом на замещение вакантной должности гражданской службы обладают гражданские служащие граждане которые соответствую установленным законодательством Российской Федерации о государственной гражданской службе квалификационным требованиям к вакантной должности. К числу квалификационных требований относятся: требования к стажу государственной службы или стажу работы по специальности...
26039. Цели и задачи реформирования и развития системы государственной службы 50.5 KB
  Цели и задачи реформирования и развития системы государственной службы. Основные цели и задачи реформирования системы государственной службы Российской Федерации были сформулированы в Концепции реформирования системы государственной службы Российской Федерации утвержденной Президентом РФ 15 августа 2001 году. В соответствии с Концепцией созданы основы единой системы гос. В процессе реформирования гос.
26040. Общая структура триггеров 13.24 KB
  Информационные сигналы поступают на входы A и В ЛУ и преобразуются в сигналы поступающие на внутренние входы S и R ЯП. Управляющие сигналы на асинхронный триггер воздействуют непосредственно с началом своего появления на их входах а в синхронных только с приходом сигнала на входе C.
26041. Простые триггеры 20.11 KB
  Схема простейшего триггера построенного на инверторах В этой схеме может быть только два состояния на выходе Q присутствует логическая единица и на выходе Q присутствует логический ноль. Если логическая единица присутствует на выходе Q то на инверсном выходе будет присутствовать логический ноль который после очередного инвертирования подтверждает уровень логической единицы на выходе Q. И наоборот если на выходе Q присутствует логический ноль то на инверсном выходе будет присутствовать логическая единица.
26042. JK-триггеры 14.14 KB
  Подобно RSтриггеру в JKтриггере входы J и K это входы установки выхода Q триггера в состояние 1 или 0. Однако в отличие от RSтриггера в JKтриггере наличие J=K=1 приводит к переходу выхода Q триггера в противоположное состояние. Условие функционирования JKтриггера описывается функцией: Рисунок 51 JKтриггеры: а асинхронные; б тактируемые фронтом. Триггер JKтипа называют универсальным потому что на его основе с помощью несложных коммутационных преобразований можно получить RS и Ттриггеры а если между входами J и K включить...
26043. D-триггеры 13.79 KB
  Характеристическое уравнение триггера: Qn1=Dn. Оно означает что логический сигнал Qn1 повторяет значение сигнала установленное на входе триггера в предшествующий момент времени. Благодаря включению элемента D1 на входы RSтриггера поступают разнополярные сигналы Рисунок 47а поэтому запрещённое состояние входных сигналов исключено но время задержки распространения сигнала элемента D1 должно быть меньше чем у элементов D2 и D3 tзд. В приведённой выше схеме Dтриггера вследствие задержки распространения сигналов сигнал на выходе Q...
26044. Счётные триггеры 18.55 KB
  Функционирование триггера определяется уравнением: Из уравнения следует что Ттриггер каждый раз изменяет своё состояние на противоположное с приходом на счётный вход Т очередного тактирующего импульса длительностью tи. Этому способствует наличие перекрёстных обратных связей с выходов триггера на входы элементов D1 и D2. Для надёжной работы триггера с целью сохранения информации о предыдущем состоянии триггера в момент его переключения в схему вводят элементы задержки имеющие время задержки tз tи. Сигнал на этом входе разрешает при V=1...
26045. Сумматоры, их схемы 98.69 KB
  Сумматоры их схемы В цифровой вычислительной технике используются одноразрядные суммирующие схемы с двумя и тремя входами причём первые называются полусумматорами а вторые полными одноразрядными сумматорами. приведена таблица истинности полусумматора на основании которой составлена его структурная формула в виде СДНФ Основными параметрами характеризующими качественные показатели логических схем являются быстродействие и количество элементов определяющее сложность схемы. Быстродействие определяется суммарным временем задержки сигнала...
26046. Программированные логические матрицы(ПЛЦ) 14.64 KB
  Программированные логические матрицыПЛЦ Основная идея работы ПЛМ заключается в реализации логической функции представленной в СДНФ дизъюнктивной нормальной форме. В схеме ПЛМ приведенной на рисунке 1 ранг терма ограничен количеством входов и равен четырем количество термов тоже равно четырем. В реально выпускавшихся микросхемах программируемых логических матриц ПЛМ количество входов было равно шестнадцати максимальный ранг минтерма 16 количество термов равно 32 и количество выходов микросхемы 8. Следует отметить что полная...