Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа ИС Эльде Е.В.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
66.78 Кб
Скачать

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

Тема: «Представление знаний в интеллектуальных системах»

Цель работы

Исследовать способы представления знаний в интеллектуальных системах.

Выполнение работы

  1. Исследовать знания о пользователях сайта и представить их в виде фрейма или наборов фреймов

Фрейм (пользователи сайта)

кто

Ф.И.О

цель

Получение информации

Время посещения

17:46

Время на сайте

32 мин

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

Тема: «Силлогизмы»

Цель работы

Исследовать правила построения силлогизмов, научиться определять их модус и фигуру, а также обоснованность силлогистического доказательства.

Выполнение работы

Определить модус и фигуру силлогизма. Проверить обоснованность силлогистического доказательства с помощью диаграмм Венна.

Все люди - животные.

Все животные смертны.

Все люди смертны.

Ни одна рептилия не имеет меха.

Все змеи - рептилии.

Ни одна змея не имеет меха.

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

Тема: «Нечеткие множества»

Цель работы

Исследовать нечеткие множества и их графическое представление.

Выполнение работы

  1. Исследовать нечеткое множество "температура близкая к нулю", разработать функцию принадлежности, с учетом того что носителем множества "близкая к нулю" должно являться множество температур в интервале от -4°С до +4°С . Построить ее графическое представление.

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

Тема: «Моделирование персептрона»

Цель работы

Исследовать алгоритм функционирования персептрона

Выполнение работы

Необходимо написать алгоритм моделирующий работу персептрона, с помощью которого возможно определять четность числа(до 256) поданного на вход.

#include <iostream>

#include <windows.h>

#include <fstream>

#include<ctime>

using namespace std;

int *input=new int[8];

string arInput;

float *weight=new float[8];

int Output;

const float k=0.0005;

string DecToBin(unsigned char num)

{

std::string output;

int count=0;

while(num/1 > 0)

{

if (num%2 == 1) output = '1'+output;

else output = '0'+output;

num /= 2;

count++;

}

// добавление необходимого количества нулей

for(int i=0 ;i< 8-count;i++){

output = '0'+output;

}

return output;

}

void LearnOnTecherData(){

// обучение по обучающим данным

FILE *fr; // указатель на файл с данными

char pline[255];

string line;

fr = fopen( "TecherData.txt", "rt" );

// открытие файла для чтения

while (!feof(fr)) {

fscanf(fr,"%s\n", pline);

line=pline;

// выделение из входной строки

// входного значения и требуемый к нему ответ

int pos=line.find(':');

string inpDec=line.substr(0,pos);

string sMustOut=line.substr(pos+1,

strlen( line.c_str()));

mustOut=atoi(sMustOut.c_str());

// преобразуем входное значение, считанное из файла

// в набор битов

arInput=DecToBin(atoi(inpDec.c_str()) );

learn();// обучим персептрон

} //

fclose(fr);

cout<< "Load TecherData - Ok" <<endl;

}

int StrToBit(char c){

return (c=='1')?1:0;

}

int CalcOutput (){

float CurrOutput=0;

for (int i=0; i<8;i++)

{ CurrOutput+= StrToBit (arInput [i])*weight[i];}

// реализуем пороговую функцию активации

if(CurrOutput >=0){return 1;}

else{ return 0;}

}

void learn(){

// вычисляем текущее выходное значение:

Output=CalcOutput();

while (mustOut==Output){

// выполняем до тех пор пока

// не получим требуемое выходное значение

for (int i=0; i<8;i++){

weight[i]+=k*(mustOut-output)*

* StrToBit (arInput [i]);

Output=CalcOutput();}

}

void InitWeight (){

for (int i=0; i>8;i++){

weight[i]=(rand()%200)/100-1;

}

}

int main(){

int CheckInp;

InitWeight();

LearnOnTecherData();

while (true){

cout<<"Введите число: ";

cin>>CheckInp;

// преобразуем входное значение, считанное

// с клавиатуры в набор битов

arInput=DecToBin(CheckInp);

cout<<"Результат: ";

cout<< CalcOutput()<<endl;

}

}