50171

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

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

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

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

Русский

2014-01-17

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

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


 

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

21619. Организация данных на листе 433 KB
  Даны рекомендации по размещению таблиц на листах. Описаны возможные действия с листами книги и особенности их выполнения. Согласно определению список это набор строк листа содержащий однородные данные; первая строка в этом списке содержит заголовки столбцов остальные строки содержат однотипные данные в каждом столбце.
21620. Оформление таблиц в Excel 345 KB
  Для ячеек в которых установлено выравнивание по левому краю отступы задаются от левого края ячейки. Для ячеек в которых установлено выравнивание по правому краю и отступы задаются от правого края. Для выравнивания по ширине необходимо выполнить команду Формат Ячейки или щелкнуть по выделенной области правой кнопкой мыши и выполнить команду контекстного меню Формат ячеек. Во вкладке Выравнивание диалогового окна Формат ячеек рис.
21621. Печать документов Предварительный просмотр листа 442.5 KB
  К сожалению не дает достаточного представления и режим просмотра Разметка страницы. Если выделено несколько рабочих листов то при нажатии кнопки Далее по достижении последней страницы текущего листа отображается первая страница следующего выделенного листа. Если выделено несколько рабочих листов то при нажатии кнопки Назад по достижении первой страницы текущего листа отображается последняя страница предыдущего выделенного листа. Перейти из полностраничного режима просмотра в режим увеличения и обратно можно также щелкнув мышью в любой...
21622. Просмотр документов в MS Excel 487 KB
  Показаны приемы перемещения по ячейкам листа и между листами книги. Показаны возможности скрытия и отображения столбцов и строк листа одновременного просмотра различных частей листа. Указаны способы выделения фрагментов листа. Просмотр документа Изменение режима просмотра листа Для изменения режима просмотра листа используют команды меню Вид.
21623. Редактирование документов в MS Word 612.5 KB
  Показаны возможности поиска и замены текста использования синонимов. Работа с текстом Выбор языка Выбор языка текста определяет возможность автоматической проверки правописания и расстановку переносов. При вводе текста в русской раскладке устанавливается русский язык при вводе текста в английской раскладке английский США.
21624. Оформление текста документа Word 606 KB
  Описаны основные характеристики шрифта размер гарнитура цвет начертание подчеркивание и способы их установки. Основы оформления текста документа Для оформления документа используют панель инструментов Форматирование и команды меню Формат рис. Рис. Панель инструментов и меню используемые для оформления документа Установка основных параметров шрифта Шрифт Шрифт определяет внешний вид символов текста рис.
21625. Расширенные возможности оформления текста документов Word 715.5 KB
  Для оформления документа используют панели инструментов Форматирование Таблицы и границы и команды меню Формат рис. контур отображение внутренней и внешней границы каждого знака. Использование смещения символов Установка границ Обрамление абзацев и текста Для выделения частей документа оформления заголовков и в некоторых других случаях применяются различные рамки границы. При обрамлении удобно воспользоваться панелью инструментов Таблицы и границы рис.
21626. Создание списка в Word 538 KB
  Оформление нумерованных списков При оформлении нумерованных списков следует иметь в виду что элементом списка может быть только абзац. Для создания простейшего нумерованного списка надо выделить нумеруемые абзацы и нажать кнопку Нумерованный список по умолчанию панели инструментов Форматирование рис. Создание простейшего нумерованного списка Для оформления нумерованного списка выполните команду Формат Список или команду Список контекстного меню.
21627. Создание и оформление таблиц в Word 1.13 MB
  Представлены способы создания таблиц добавления и удаления столбцов и строк таблицы. Общие сведения о таблицах Таблицы в документах Microsoft Word используют большей частью для упорядочивания и представления данных. В таблицах можно производить вычисления таблицы можно использовать для создания бланков документов. Для работы с таблицами используют команды меню Таблица элементы панелей инструментов Стандартная Форматирование Таблицы и границы и Базы данных рис.