Разработка структуры базы знаний

 

Содержание


Введение

. Описание постановки задачи

.1 Характеристика задачи

.2 Определение фактов и действий

. Разработка структуры базы знаний

.1 Построение графа связей фактов

.2 Определение структуры базы знаний

.2.1 Требования к базе знаний

.2.2 Полученная структура записи базы знаний

.3 Представление структуры базы знаний на языке программирования С#

.3.1 Разработанная структура

.3.2 Описание структуры

. Описание функций инициализации и констатации фактов

.1 Описание функции инициализации

.1.1 Текст функции

.1.2 Описание входных данных

.1.3 Описание выходных данных

.2 Описание функции констатации фактов

.2.1 Текст функции

.2.2 Описание входных данных

.2.3 Описание выходных данных

.2.4 Граф-схема функции

Заключение

Приложение



Введение


Знание - это сила. Всем известное утверждение как никогда становится актуальным наше время, так как прогресс не стоит на месте и технологии постоянно развиваются. Вследствие чего становится затруднительным сделать логический вывод на основании тех или иных фактов(условий), для облегчения процесса установления вывода необходимо формализовать знания, упорядочить и представить в виде некой структуры, удобной для хранения и отображения информации.

За такую структуру можно принять Базу знаний, представляющую из себя набор фактов и действий, возникающий при утверждении того или иного условия.



1. Описание постановки задачи


.1 Характеристика задачи


Цель:

Необходимо разработать и реализовать модуль, для хранения базы знаний (содержит факты и действия), а так же процедур инициализации и констатации фактов.


.2 Определение фактов и действий


База знаний должна содержать факты и действия при выполнении данных фактов. Для формализации и лучшего восприятия информации приведем их в виде таблицы (см. таблица 1.2.1.)

Таблица фактов и действий


Таблица 1.2.1

Факты, образцы (условие выполнения действия)Действие, консиквент (логический вывод исходя из факта)Поставщик проверенный и товар является качественным, а так же цена приемлемаяМожно сделать вывод о том, что данный поставщик нам подходитЦена, предложенная данным поставщиком,чуть ниже чем у других поставщиков товараМожно утверждать, что цена нас устраивает (цена приемлемая)Товар,предлагаемый поставщиком имеет сертификаты качества или прошел государственные экспертизыСкорее всего товар является качественнымПоставщик давно присутствует на рынке и хорошо себя зарекомендовал. Жалоб со стороны потребителей (заказчиков) в сторону поставщика не поступало.Поставщик проверенный, добросовестный, хорошо выполняет свою работу.Поставщик имеет рекомендации от других заказчиков, доставку товара производит в срок, товар в процессе транспортировки не получает дефектовПоставщик хороший, жалоб со стороны заказчиков не поступало

Упростим полученную таблицу, для этого разобьем факты на составляющие и формализуем их (см. таблица 1.2.2.).

Упрощенная таблица фактов и действий


Таблица 1.2.2

Условие, образецДействие, консиквентУсловие 1Условие 2Условие 3Поставщик проверенныйТовар качественныйЦена приемлемаяПоставщик подходитПоставщик давно на рынкеЖалоб на поставщика не былоПоставщик проверенныйЕсть рекомендации от других заказчиковПоставка производится в срокТовар не имеет дефектовЖалоб на поставщика не былоТовар сертифицированТовар прошел государственные экспертизыТовар качественныйЦена чуть ниже чем у других поставщиковЦена приемлемая


2. Разработка структуры базы знаний


.1 Построение графа связей фактов


Для определения необходимой структуры базы знаний, построим граф (см.Рис.2.1.1.) отображения зависимостей фактов приведенных в таблице (см. таблица 1.2.2.)


Граф связей фактов

Рис.2.1.1


.2 Определение структуры базы знаний


.2.1 Требования к базе знаний

Исходя донных таблицы (см.таблица1.2.2.) и графа (см.Рис.2.1.1.) можно определить структуру базы знаний:

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

.Запись должна содержать факты (образцы) и действия (консиквенты)

.Факт состоит не более чем из трех частей

.Каждая часть должна содержать поле, отвечающее за текущее состояние данной части образца (констатация свершения (часть активна либо часть не активна)).


2.2.2 Полученная структура записи базы знаний

Исходя предъявленных требований, получаем структуру следующего вида (см. Рис.2.2.1.)


Структура записи в базе знаний

Условие 1Условие 2Условие 3ДействиеусловиеактивностьусловиеактивностьусловиеактивностьРис.2.2.2.1


Где:

Условие 1,Условие 2, Условие 3 - составные части образца (в поле «условие» хранится сам факт, а в поле «активность» хранится текущее состояние факта).

Приведем конкретный пример записи базы знаний.

Поставщик проверенный, товар является качественным и цена приемлемая, а значит поставщик нам подходит. Данная запись в базе знаний будет выглядеть следующим образом (см. Рис.2.2.2.2.)


Пример записи

Условие 1Условие 2Условие 3Поставщик подходитПоставщик проверенныйактивноТовар качественныйактивноЦена приемлемаяактивноРис.2.2.2.2


.3 Представление структуры базы знаний на языке программирования С#


.3.1 Разработанная структура

struct DATA

{ public struct Yslovie { public string yslovie; public bool ActivE;}Yslovie yslovie1;Yslovie yslovie2;Yslovie yslovie3;string deistvie;

};


.3.2Описание структуры

Структура DATA содержит в своем составе четыре элемента (yslovie1, yslovie2, yslovie3, deistvie), а элементы yslovie1, yslovie2 и yslovie3 являются объектами структуры Yslovie, и содержат поля yslovie и ActivE. Поле yslovie содержит факт, поле ActivE содержит состояние факта.

База знаний представляет собой последовательность записей структурой DATA, для создания базы необходимо добавить определение объектов yslovie1, yslovie2 и yslovie3, и создать объект записей структуры DATA. Для этого необходимо добавить следующие строки:

DATA.Yslovie yslovie1 = new DATA.Yslovie();DATA.Yslovie yslovie2 = new DATA.Yslovie();DATA.Yslovie yslovie3 = new DATA.Yslovie();DATA[] BD = new DATA[5];


Итоговое представление базы знаний на языке программирования C# будет выглядеть следующим образом:

struct DATA

{ public struct Yslovie { public string yslovie; public bool ActivE;}Yslovie yslovie1;Yslovie yslovie2;Yslovie yslovie3;string deistvie;

};DATA.Yslovie yslovie1 = new DATA.Yslovie();DATA.Yslovie yslovie2 = new DATA.Yslovie();DATA.Yslovie yslovie3 = new DATA.Yslovie();DATA[] BD = new DATA[5];



3. Описание функций инициализации и констатации фактов


.1 Описание функции инициализации


Функция инициализации представляет собой последовательный набор операций, направленных на занесение фактов и действий в базу знаний.

база знание

3.1.1 Текст функции

void инициализация_БД()

{ BD[0].yslovie1.yslovie = "поставщик проверенный"; BD[0].yslovie1.ActivE = false;[0].yslovie2.yslovie = "товар качественный"; BD[0].yslovie2.ActivE = false;[0].yslovie3.yslovie = "цена приемлемая"; BD[0].yslovie3.ActivE = false;[0].deistvie = "Поставщик подходит";[1].yslovie1.yslovie = "поставщик давно на рынке"; BD[1].yslovie1.ActivE = false;[1].yslovie2.yslovie = "жалоб на поставщика не было"; BD[1].yslovie2.ActivE = false;[1].yslovie3.yslovie = null; BD[1].yslovie3.ActivE = false;[1].deistvie = "поставщик проверенный";[2].yslovie1.yslovie = "есть рекомендации от других заказчиков"; BD[2].yslovie1.ActivE = false;[2].yslovie2.yslovie = "поставка производится в срок"; BD[2].yslovie2.ActivE = false;[2].yslovie3.yslovie = "товар не получает дефектов в ходе транспатрировки"; BD[2].yslovie3.ActivE = false;[2].deistvie = "жалоб на поставщика не было";[3].yslovie1.yslovie = "товар сертифицирован"; BD[3].yslovie1.ActivE = false;[3].yslovie2.yslovie = "товар прощел государственные экспертизы"; BD[3].yslovie2.ActivE = false;[3].yslovie3.yslovie = null; BD[3].yslovie3.ActivE = false;[3].deistvie = "товар качественный";[4].yslovie1.yslovie = "цена чуть ниже чем у других поставщиков"; BD[4].yslovie1.ActivE = false;[4].yslovie2.yslovie = null; BD[4].yslovie2.ActivE = false;[4].yslovie3.yslovie = null; BD[4].yslovie3.ActivE = false;[4].deistvie = "цена приемлемая";

}


.1.2 Описание входных данных

Функция принимает в качестве входных данных непосредственно базу знаний и значения фактов и действий. Представим входные данные в виде таблицы (см. Таблица 3.1.1.1.)


Таблица 3.1.2.1 Входные данные

Имя объекта/элементатипДопустимые значения/элементы в составеBD[]struct DATAyslovie1, yslovie1, yslovie1,deistvieyslovie1, yslovie2, yslovie3struct Yslovie yslovie,ActivEysloviestringА-я,A-z и символы разделителиActivEbooltrue/falsedeistviestringА-я,A-z и символы разделители

.1.3 Описание выходных данных

Функция, в качестве выходных данных возвращает базу знаний с занесенными в нее значениями фактов и действий. Выходные данные можно представить в виде таблицы(см. Таблица 3.1.1.1.).


3.2 Описание функции констатации фактов


Функция предназначена для установления активности, при свершении того либо иного факта. В ней реализован принцип сопоставления полученного факта с фактами находящимися в базе знаний и при установлении соответствия функция ставит «статус» true.


.2.1Текст функции

void Констотация_факта(int i)

{ switch (i)

{ case 1: if (BD[0].yslovie1.ActivE == true) BD[0].yslovie1.ActivE = false;BD[0].yslovie1.ActivE = true; break;2: if (BD[0].yslovie2.ActivE == true) BD[0].yslovie2.ActivE = false;BD[0].yslovie2.ActivE = true; break;3: if (BD[0].yslovie3.ActivE == true) BD[0].yslovie3.ActivE = false;BD[0].yslovie3.ActivE = true; break;4: if (BD[1].yslovie1.ActivE == true) BD[1].yslovie1.ActivE = false;BD[1].yslovie1.ActivE = true; break;5: if (BD[1].yslovie2.ActivE == true) BD[1].yslovie2.ActivE = false;BD[1].yslovie2.ActivE = true; break;6: if (BD[1].yslovie3.ActivE == true) BD[1].yslovie3.ActivE = false;BD[1].yslovie3.ActivE = true; break;7: if (BD[2].yslovie1.ActivE == true) BD[2].yslovie1.ActivE = false;BD[2].yslovie1.ActivE = true; break;8: if (BD[2].yslovie2.ActivE == true) BD[2].yslovie2.ActivE = false;BD[2].yslovie2.ActivE = true; break;9: if (BD[2].yslovie3.ActivE == true) BD[2].yslovie3.ActivE = false;BD[2].yslovie3.ActivE = true; break;10: if (BD[3].yslovie1.ActivE == true) BD[3].yslovie1.ActivE = false;BD[3].yslovie1.ActivE = true; break;11: if (BD[3].yslovie2.ActivE == true) BD[3].yslovie2.ActivE = false;BD[3].yslovie2.ActivE = true; break;12: if (BD[3].yslovie3.ActivE == true) BD[3].yslovie3.ActivE = false;BD[3].yslovie3.ActivE = true; break;13: if (BD[4].yslovie1.ActivE == true) BD[4].yslovie1.ActivE = false;BD[4].yslovie1.ActivE = true; break;14: if (BD[4].yslovie2.ActivE == true) BD[4].yslovie2.ActivE = false;BD[4].yslovie2.ActivE = true; break;15: if (BD[4].yslovie3.ActivE == true) BD[4].yslovie3.ActivE = false;BD[4].yslovie3.ActivE = true; break;

}}};


.2.2 Описание входных данных

Функция принимает в качестве входных данных непосредственно базу знаний и значения фактов и действий, а также идентификатор установленного пользователем факта. Представим входные данные в виде таблицы(см. Таблица 3.2.2.1.)


Таблица 3.2.2.1 Входные данные

Имя объекта/элементатипДопустимые значения/элементы в составеBD[]struct DATAyslovie1, yslovie1, yslovie1,deistvieyslovie1, yslovie2, yslovie3struct Yslovie yslovie,ActivEysloviestringА-я,A-z и символы разделителиActivEbooltrue/falsedeistviestringА-я,A-z и символы разделителиiint0-15


3.2.3 Описание выходных данных


Функция, в качестве выходных данных возвращает базу знаний с занесенными в нее значениями активности фактов. Выходные данные можно представить в виде таблицы(см.стр.5 Таблица 3.1.1.1.).


.2.4 Граф-схема функции


Граф-схема. Функция констатации фактов


Заключение


В ходе выполнения курсовой работы был разработан модуль, представляющий из себя описание структуры «базы знаний», а так же включающий в себя функции инициализации записей базы знаний и констатации фактов.



Приложение 1


Текст модуля

System;System.Collections.Generic;System.ComponentModel;System.Data;System.Text;data_base

{class DatA

{ public struct DATA

{ public struct Yslovie { public string yslovie; public bool ActivE;}Yslovie yslovie1;Yslovie yslovie2;Yslovie yslovie3;string deistvie;

};DATA.Yslovie yslovie1 = new DATA.Yslovie();DATA.Yslovie yslovie2 = new DATA.Yslovie();DATA.Yslovie yslovie3 = new DATA.Yslovie();DATA[] BD = new DATA[5];void инициализация_БД()

{ BD[0].yslovie1.yslovie = "поставщик проверенный"; BD[0].yslovie1.ActivE = false;[0].yslovie2.yslovie = "товар качественный"; BD[0].yslovie2.ActivE = false;[0].yslovie3.yslovie = "цена приемлемая"; BD[0].yslovie3.ActivE = false;[0].deistvie = "Поставщик подходит";[1].yslovie1.yslovie = "поставщик давно на рынке"; BD[1].yslovie1.ActivE = false;[1].yslovie2.yslovie = "жалоб на поставщика не было"; BD[1].yslovie2.ActivE = false;[1].yslovie3.yslovie = null; BD[1].yslovie3.ActivE = false;[1].deistvie = "поставщик проверенный";[2].yslovie1.yslovie = "есть рекомендации от других заказчиков"; BD[2].yslovie1.ActivE = false;[2].yslovie2.yslovie = "поставка производится в срок"; BD[2].yslovie2.ActivE = false;[2].yslovie3.yslovie = "товар не получает дефектов в ходе транспатрировки"; BD[2].yslovie3.ActivE = false;[2].deistvie = "жалоб на поставщика не было";[3].yslovie1.yslovie = "товар сертифицирован"; BD[3].yslovie1.ActivE = false;[3].yslovie2.yslovie = "товар прощел государственные экспертизы"; BD[3].yslovie2.ActivE = false;[3].yslovie3.yslovie = null; BD[3].yslovie3.ActivE = false;[3].deistvie = "товар качественный";[4].yslovie1.yslovie = "цена чуть ниже чем у других поставщиков"; BD[4].yslovie1.ActivE = false;[4].yslovie2.yslovie = null; BD[4].yslovie2.ActivE = false;[4].yslovie3.yslovie = null; BD[4].yslovie3.ActivE = false;[4].deistvie = "цена приемлемая";

}void Констотация_факта(int i)

{ switch (i)

{1: if (BD[0].yslovie1.ActivE == true) BD[0].yslovie1.ActivE = false;BD[0].yslovie1.ActivE = true; break;2: if (BD[0].yslovie2.ActivE == true) BD[0].yslovie2.ActivE = false;BD[0].yslovie2.ActivE = true; break;3: if (BD[0].yslovie3.ActivE == true) BD[0].yslovie3.ActivE = false;BD[0].yslovie3.ActivE = true; break;4: if (BD[1].yslovie1.ActivE == true) BD[1].yslovie1.ActivE = false;BD[1].yslovie1.ActivE = true; break;5: if (BD[1].yslovie2.ActivE == true) BD[1].yslovie2.ActivE = false;BD[1].yslovie2.ActivE = true; break;6: if (BD[1].yslovie3.ActivE == true) BD[1].yslovie3.ActivE = false;BD[1].yslovie3.ActivE = true; break;7: if (BD[2].yslovie1.ActivE == true) BD[2].yslovie1.ActivE = false;BD[2].yslovie1.ActivE = true; break;8: if (BD[2].yslovie2.ActivE == true) BD[2].yslovie2.ActivE = false;BD[2].yslovie2.ActivE = true; break;9: if (BD[2].yslovie3.ActivE == true) BD[2].yslovie3.ActivE = false;BD[2].yslovie3.ActivE = true; break;10: if (BD[3].yslovie1.ActivE == true) BD[3].yslovie1.ActivE = false;BD[3].yslovie1.ActivE = true; break;11: if (BD[3].yslovie2.ActivE == true) BD[3].yslovie2.ActivE = false;BD[3].yslovie2.ActivE = true; break;12: if (BD[3].yslovie3.ActivE == true) BD[3].yslovie3.ActivE = false;BD[3].yslovie3.ActivE = true; break;13: if (BD[4].yslovie1.ActivE == true) BD[4].yslovie1.ActivE = false;BD[4].yslovie1.ActivE = true; break;14: if (BD[4].yslovie2.ActivE == true) BD[4].yslovie2.ActivE = false;BD[4].yslovie2.ActivE = true; break;15: if (BD[4].yslovie3.ActivE == true) BD[4].yslovie3.ActivE = false;BD[4].yslovie3.ActivE = true; break;

}

}

};

}



Приложение 2


Руководство программиста


П.2.1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ МОДУЛЯ

Модуль предназначен для определения и хранения базы знаний (записей содержащих информацию о фактах (образцах) и действиях (консиквентов)).

П.2.2. УСЛОВИЯ, НЕОБХОДИМЫЕ ДЛЯ РАБОТЫ МОДУЛЯ

Для работы модуля необходимо:

.Установленный компилятор для языка программирования C#

.Программа, написанная на языке программирования C#, содержащая команды обращения к модулю и команды обработки данных модуля.

П.2.3. ХАРАКТЕРИСТИКИ МОДУЛЯ

Разработанный модуль предназначен для внедрения в программные продукты, написанные на языке C#.Модуль служит для хранения, инициализации и обработки информации (хранения базы знаний).

П.2.4. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ

П.2.4.1. Описание входных данных

Модуль может принимает в качестве входных данных измененные значения базы знаний. Представим входные данные в виде таблицы (см. Таблица 2.4.1.1.)


Таблица 2.4.1.1. Входные данные

Имя объекта/элементатипДопустимые значения/элементы в составеBD[]struct DATAyslovie1, yslovie1, yslovie1,deistvieyslovie1, yslovie2, yslovie3struct Yslovie yslovie,ActivEysloviestringА-я,A-z и символы разделителиActivEbooltrue/falsedeistviestringА-я,A-z и символы разделителиП.2.4.2. Описание выходных данных

Модуль, в качестве выходных данных может возвращать базу знаний с занесенными в нее значениями образцов и консиквентов. Выходные данные можно представить в виде таблицы (см. Таблица 2.4.1.1.).



Содержание Введение . Описание постановки задачи .1 Характеристика задачи .2 Определение фактов и действий . Разработка структуры базы знаний

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ