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

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

Введение

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

1.1 Характеристика задачи

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

Приложение

Введение

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

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

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

1.1 Характеристика задачи

Цель:

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

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

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

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

Таблица 1.2. 1

Факты, образцы (условие выполнения действия)

Действие, консиквент

(логический вывод исходя из факта)

Поставщик проверенный и товар является качественным, а так же цена приемлемая

Можно сделать вывод о том, что данный поставщик нам подходит

Цена, предложенная данным поставщиком, чуть ниже чем у других поставщиков товара

Можно утверждать, что цена нас устраивает (цена приемлемая)

Товар, предлагаемый поставщиком имеет сертификаты качества или прошел государственные экспертизы

Скорее всего товар является качественным

Поставщик давно присутствует на рынке и хорошо себя зарекомендовал. Жалоб со стороны потребителей (заказчиков) в сторону поставщика не поступало.

Поставщик проверенный, добросовестный, хорошо выполняет свою работу.

Поставщик имеет рекомендации от других заказчиков, доставку товара производит в срок, товар в процессе транспортировки не получает дефектов

Поставщик хороший, жалоб со стороны заказчиков не поступало

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

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

Таблица 1.2. 2

Условие, образец

Действие, консиквент

Условие 1

Условие 2

Условие 3

Поставщик проверенный

Товар качественный

Цена приемлемая

Поставщик подходит

Поставщик давно на рынке

Жалоб на поставщика не было

Поставщик проверенный

Есть рекомендации от других заказчиков

Поставка производится в срок

Товар не имеет дефектов

Жалоб на поставщика не было

Товар сертифицирован

Товар прошел государственные экспертизы

Товар качественный

Цена чуть ниже чем у других поставщиков

Цена приемлемая

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

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

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

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

Рис. 2.1. 1

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

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

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

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

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

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

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

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

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

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

public struct DATA

{ public struct Yslovie { public string yslovie; public bool ActivE; }

public Yslovie yslovie1;

public Yslovie yslovie2;

public Yslovie yslovie3;

public string deistvie;

};

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

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

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

public DATA. Yslovie yslovie1 = new DATA. Yslovie ();

public DATA. Yslovie yslovie2 = new DATA. Yslovie ();

public DATA. Yslovie yslovie3 = new DATA. Yslovie ();

public DATA[] BD = new DATA[5];

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

public struct DATA

{ public struct Yslovie { public string yslovie; public bool ActivE; }

public Yslovie yslovie1;

public Yslovie yslovie2;

public Yslovie yslovie3;

public string deistvie;

};

public DATA. Yslovie yslovie1 = new DATA. Yslovie ();

public DATA. Yslovie yslovie2 = new DATA. Yslovie ();

public DATA. Yslovie yslovie3 = new DATA. Yslovie ();

public DATA[] BD = new DATA[5];

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

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

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

база знание

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

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

{ BD[0]. yslovie1. yslovie = «поставщик проверенный»; BD[0]. yslovie1. ActivE = false;

BD[0]. yslovie2. yslovie = «товар качественный»; BD[0]. yslovie2. ActivE = false;

BD[0]. yslovie3. yslovie = «цена приемлемая»; BD[0]. yslovie3. ActivE = false;

BD[0]. deistvie = «Поставщик подходит»;

BD[1]. yslovie1. yslovie = «поставщик давно на рынке»; BD[1]. yslovie1. ActivE = false;

BD[1]. yslovie2. yslovie = «жалоб на поставщика не было»; BD[1]. yslovie2. ActivE = false;

BD[1]. yslovie3. yslovie = null; BD[1]. yslovie3. ActivE = false;

BD[1]. deistvie = «поставщик проверенный»;

BD[2]. yslovie1. yslovie = «есть рекомендации от других заказчиков»; BD[2]. yslovie1. ActivE = false;

BD[2]. yslovie2. yslovie = «поставка производится в срок»; BD[2]. yslovie2. ActivE = false;

BD[2]. yslovie3. yslovie = «товар не получает дефектов в ходе транспатрировки»; BD[2]. yslovie3. ActivE = false;

BD[2]. deistvie = «жалоб на поставщика не было»;

BD[3]. yslovie1. yslovie = «товар сертифицирован»; BD[3]. yslovie1. ActivE = false;

BD[3]. yslovie2. yslovie = «товар прощел государственные экспертизы»; BD[3]. yslovie2. ActivE = false;

BD[3]. yslovie3. yslovie = null; BD[3]. yslovie3. ActivE = false;

BD[3]. deistvie = «товар качественный»;

BD[4]. yslovie1. yslovie = «цена чуть ниже чем у других поставщиков»; BD[4]. yslovie1. ActivE = false;

BD[4]. yslovie2. yslovie = null; BD[4]. yslovie2. ActivE = false;

BD[4]. yslovie3. yslovie = null; BD[4]. yslovie3. ActivE = false;

BD[4]. deistvie = «цена приемлемая»;

}

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

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

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

Имя объекта/элемента

тип

Допустимые значения/элементы в составе

BD[]

struct DATA

yslovie1, yslovie1, yslovie1, deistvie

yslovie1, yslovie2, yslovie3

struct Yslovie

yslovie, ActivE

yslovie

string

А-я, A-z и символы разделители

ActivE

bool

true/false

deistvie

string

А-я, A-z и символы разделители

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

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

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

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

3.2. 1Текст функции

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

{ switch (i)

{ case 1: if (BD[0]. yslovie1. ActivE == true) BD[0]. yslovie1. ActivE = false;

else BD[0]. yslovie1. ActivE = true; break;

case 2: if (BD[0]. yslovie2. ActivE == true) BD[0]. yslovie2. ActivE = false;

else BD[0]. yslovie2. ActivE = true; break;

case 3: if (BD[0]. yslovie3. ActivE == true) BD[0]. yslovie3. ActivE = false;

else BD[0]. yslovie3. ActivE = true; break;

case 4: if (BD[1]. yslovie1. ActivE == true) BD[1]. yslovie1. ActivE = false;

else BD[1]. yslovie1. ActivE = true; break;

case 5: if (BD[1]. yslovie2. ActivE == true) BD[1]. yslovie2. ActivE = false;

else BD[1]. yslovie2. ActivE = true; break;

case 6: if (BD[1]. yslovie3. ActivE == true) BD[1]. yslovie3. ActivE = false;

else BD[1]. yslovie3. ActivE = true; break;

case 7: if (BD[2]. yslovie1. ActivE == true) BD[2]. yslovie1. ActivE = false;

else BD[2]. yslovie1. ActivE = true; break;

case 8: if (BD[2]. yslovie2. ActivE == true) BD[2]. yslovie2. ActivE = false;

else BD[2]. yslovie2. ActivE = true; break;

case 9: if (BD[2]. yslovie3. ActivE == true) BD[2]. yslovie3. ActivE = false;

else BD[2]. yslovie3. ActivE = true; break;

case 10: if (BD[3]. yslovie1. ActivE == true) BD[3]. yslovie1. ActivE = false;

else BD[3]. yslovie1. ActivE = true; break;

case 11: if (BD[3]. yslovie2. ActivE == true) BD[3]. yslovie2. ActivE = false;

else BD[3]. yslovie2. ActivE = true; break;

case 12: if (BD[3]. yslovie3. ActivE == true) BD[3]. yslovie3. ActivE = false;

else BD[3]. yslovie3. ActivE = true; break;

case 13: if (BD[4]. yslovie1. ActivE == true) BD[4]. yslovie1. ActivE = false;

else BD[4]. yslovie1. ActivE = true; break;

case 14: if (BD[4]. yslovie2. ActivE == true) BD[4]. yslovie2. ActivE = false;

else BD[4]. yslovie2. ActivE = true; break;

case 15: if (BD[4]. yslovie3. ActivE == true) BD[4]. yslovie3. ActivE = false;

else BD[4]. yslovie3. ActivE = true; break;

}}};

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

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

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

Имя объекта/элемента

тип

Допустимые значения/элементы в составе

BD[]

struct DATA

yslovie1, yslovie1, yslovie1, deistvie

yslovie1, yslovie2, yslovie3

struct Yslovie

yslovie, ActivE

yslovie

string

А-я, A-z и символы разделители

ActivE

bool

true/false

deistvie

string

А-я, A-z и символы разделители

i

int

0−15

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

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

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

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

Заключение

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

Приложение 1

Текст модуля

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Text;

namespace data_base

{

public class DatA

{ public struct DATA

{ public struct Yslovie { public string yslovie; public bool ActivE; }

public Yslovie yslovie1;

public Yslovie yslovie2;

public Yslovie yslovie3;

public string deistvie;

};

public DATA. Yslovie yslovie1 = new DATA. Yslovie ();

public DATA. Yslovie yslovie2 = new DATA. Yslovie ();

public DATA. Yslovie yslovie3 = new DATA. Yslovie ();

public DATA[] BD = new DATA[5];

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

{ BD[0]. yslovie1. yslovie = «поставщик проверенный»; BD[0]. yslovie1. ActivE = false;

BD[0]. yslovie2. yslovie = «товар качественный»; BD[0]. yslovie2. ActivE = false;

BD[0]. yslovie3. yslovie = «цена приемлемая»; BD[0]. yslovie3. ActivE = false;

BD[0]. deistvie = «Поставщик подходит»;

BD[1]. yslovie1. yslovie = «поставщик давно на рынке»; BD[1]. yslovie1. ActivE = false;

BD[1]. yslovie2. yslovie = «жалоб на поставщика не было»; BD[1]. yslovie2. ActivE = false;

BD[1]. yslovie3. yslovie = null; BD[1]. yslovie3. ActivE = false;

BD[1]. deistvie = «поставщик проверенный»;

BD[2]. yslovie1. yslovie = «есть рекомендации от других заказчиков»; BD[2]. yslovie1. ActivE = false;

BD[2]. yslovie2. yslovie = «поставка производится в срок»; BD[2]. yslovie2. ActivE = false;

BD[2]. yslovie3. yslovie = «товар не получает дефектов в ходе транспатрировки»; BD[2]. yslovie3. ActivE = false;

BD[2]. deistvie = «жалоб на поставщика не было»;

BD[3]. yslovie1. yslovie = «товар сертифицирован»; BD[3]. yslovie1. ActivE = false;

BD[3]. yslovie2. yslovie = «товар прощел государственные экспертизы»; BD[3]. yslovie2. ActivE = false;

BD[3]. yslovie3. yslovie = null; BD[3]. yslovie3. ActivE = false;

BD[3]. deistvie = «товар качественный»;

BD[4]. yslovie1. yslovie = «цена чуть ниже чем у других поставщиков»; BD[4]. yslovie1. ActivE = false;

BD[4]. yslovie2. yslovie = null; BD[4]. yslovie2. ActivE = false;

BD[4]. yslovie3. yslovie = null; BD[4]. yslovie3. ActivE = false;

BD[4]. deistvie = «цена приемлемая»;

}

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

{ switch (i)

{

case 1: if (BD[0]. yslovie1. ActivE == true) BD[0]. yslovie1. ActivE = false;

else BD[0]. yslovie1. ActivE = true; break;

case 2: if (BD[0]. yslovie2. ActivE == true) BD[0]. yslovie2. ActivE = false;

else BD[0]. yslovie2. ActivE = true; break;

case 3: if (BD[0]. yslovie3. ActivE == true) BD[0]. yslovie3. ActivE = false;

else BD[0]. yslovie3. ActivE = true; break;

case 4: if (BD[1]. yslovie1. ActivE == true) BD[1]. yslovie1. ActivE = false;

else BD[1]. yslovie1. ActivE = true; break;

case 5: if (BD[1]. yslovie2. ActivE == true) BD[1]. yslovie2. ActivE = false;

else BD[1]. yslovie2. ActivE = true; break;

case 6: if (BD[1]. yslovie3. ActivE == true) BD[1]. yslovie3. ActivE = false;

else BD[1]. yslovie3. ActivE = true; break;

case 7: if (BD[2]. yslovie1. ActivE == true) BD[2]. yslovie1. ActivE = false;

else BD[2]. yslovie1. ActivE = true; break;

case 8: if (BD[2]. yslovie2. ActivE == true) BD[2]. yslovie2. ActivE = false;

else BD[2]. yslovie2. ActivE = true; break;

case 9: if (BD[2]. yslovie3. ActivE == true) BD[2]. yslovie3. ActivE = false;

else BD[2]. yslovie3. ActivE = true; break;

case 10: if (BD[3]. yslovie1. ActivE == true) BD[3]. yslovie1. ActivE = false;

else BD[3]. yslovie1. ActivE = true; break;

case 11: if (BD[3]. yslovie2. ActivE == true) BD[3]. yslovie2. ActivE = false;

else BD[3]. yslovie2. ActivE = true; break;

case 12: if (BD[3]. yslovie3. ActivE == true) BD[3]. yslovie3. ActivE = false;

else BD[3]. yslovie3. ActivE = true; break;

case 13: if (BD[4]. yslovie1. ActivE == true) BD[4]. yslovie1. ActivE = false;

else BD[4]. yslovie1. ActivE = true; break;

case 14: if (BD[4]. yslovie2. ActivE == true) BD[4]. yslovie2. ActivE = false;

else BD[4]. yslovie2. ActivE = true; break;

case 15: if (BD[4]. yslovie3. ActivE == true) BD[4]. yslovie3. ActivE = false;

else BD[4]. yslovie3. ActivE = true; break;

}

}

};

}

Приложение 2

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

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

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

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

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

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

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

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

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

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

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

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

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

Имя объекта/элемента

тип

Допустимые значения/элементы в составе

BD[]

struct DATA

yslovie1, yslovie1, yslovie1, deistvie

yslovie1, yslovie2, yslovie3

struct Yslovie

yslovie, ActivE

yslovie

string

А-я, A-z и символы разделители

ActivE

bool

true/false

deistvie

string

А-я, A-z и символы разделители

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

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

ПоказатьСвернуть
Заполнить форму текущей работой