Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архив1 / docx58 / Наша вторая Лаба

.docx
Скачиваний:
26
Добавлен:
01.08.2013
Размер:
23.1 Кб
Скачать

Министерство образования и науки Российской Федерации

Государственное образовательное учреждение высшего профессионального образования

Новгородский государственный университет имени Ярослава Мудрого

Институт электронных и информационных систем

Кафедра информационных технологий и систем

«Создание системы накопления знаний. Исследование системы накопления знаний»

Лабораторная работа по дисциплине «Экспертные системы»

Отчет.

Принял:

_______ Михайлов Д.В.

«____» _________ 2012 г.

Выполнили:

студенты гр. 9311

_______Дроздов К.А.

_______Спиридонов М.В.

_______Гусева М.С.

«____» _________ 2012 г.

Великий Новгород

2012

Цель работы: приобрести умения и навыки реализации пополняемой базы знаний в динамической памяти ЭВМ. Приобрести навыки и умения в использовании созданной базы знаний при проведении экспертизы.

Задание:

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

Преобразовать знания в виде суждений, полученных от эксперта

С использованием написанной программы реализовать полученные списки в памяти ЭВМ.

2. Написать программу обеспечивающую проведение экспертизы на основе информации хранящейся в созданной базе знаний.

Разработанная программа должна обеспечивать выполнение функций:

1)Ввод исходных данных

2)Обработка правил

3)Вывод заключения

Предметная область:

Категория

Характеристика

Legkovaya

Gonochnaya

Sportivnaya

Простота эксплуатации

+

-

-

Приемлимая стоимость

+

-

-

Продвинутый тюнинг

-

+

-

Небольшой вес

-

+

-

Мощность двигателя

350 л.с.

-

-

+

Гиперкар

-

-

+

Также каждая машина имеет свои собственные особенности, благодаря которым она стала известной:

Legkovaya:

Renault Duster

4х4

Renault Latitude

Седан бизнес класса

Renault Logan

5 лет гарантии

Renault Fluence

кредит на 2 года

Gonochnaya:

Kepler Motion

Ограниченное производство

BMW 335i

Продвинутый тюнинг

BMW M3

Небольшой вес

Sportivnaya:

Honda Integra

Производитель Honda Motor Company

Mercedes-Benz SLR McLaren

Гиперкар

Пример знаний: в результате работы и ввода в систему накопленных знаний мы получили следующую структуру:

Пример:

Legkovaya? – Нет

Gonochnaya? - Нет

Sportivnaya? – Да

Мощность двигателя 350 л.с.? – Нет

Гиперкар? – Да

Результат – «Mercedes-Benz SLR McLaren»

Ещё, в ходе работы, программа пополняет систему знаний.

Листинг программы:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace ES2lab

{

public partial class Form_main : Form

{

public string[,] arrayNameAndSign = new string[100, 2];

public int counterItem = 0;

public int k = 0;

public string[] arrCategory = new string[100];

public string[,] arrayNnS = new string[1000, 2];

public int cI;

public int z = 0;

public Form_main()

{

InitializeComponent();

int cCI = 0;

string newCCC = null;

StreamReader searchC = new StreamReader("d:\\category.txt");

while ((newCCC = searchC.ReadLine()) != null)

{

arrCategory[cCI] = newCCC;

cCI++;

}

searchC.Close();

//for (int i = 0; i < cCI; i++)

//{

// int counter = 0;

// string newNS = null;

// StreamReader searchQ = new StreamReader("d:\\" + arrCategory[i] + ".txt");

// {

// do

// {

// newNS = searchQ.ReadLine();

// if (newNS != null)

// {

// string[] buf = newNS.Split(':');

// for (int ii = 0; ii <= 1; ii++)

// {

// arrayNnS[counter, ii] = buf[ii];

// }

// //comboBox_editName.Items.Add(arrayNameAndSign[counter, 0]);

// counter++;

// }

// }

// while (newNS != null);

// cI++;

// }

// searchQ.Close();

//}

}

//------------------------------------------------------------------------------------------------------------------------------

//poisk ------------------------------------------------------------------------------------------------------------------------

private void button_search_Click(object sender, EventArgs e)

{

panel_add.Enabled = false;

panel_search.Enabled = true;

panel_edit.Enabled = false;

button_search.Enabled = false;

button_addNew.Enabled = true;

button_edit.Enabled = true;

}

private void button_again_Click(object sender, EventArgs e)

{

textBox_searchResult.Text = null;

label_searchSign.Text = null;

cI = 0;

z = 0;

}

private void button_yes_Click(object sender, EventArgs e)

{

cI++;

}

private void button_no_Click(object sender, EventArgs e)

{

cI++;

}

//------------------------------------------------------------------------------------------------------------------------------

// dpbavlenie novogo -----------------------------------------------------------------------------------------------------------

private void button_addNew_Click(object sender, EventArgs e)

{

panel_search.Enabled = false;

panel_add.Enabled = true;

panel_edit.Enabled = false;

button_addNew.Enabled = false;

button_search.Enabled = true;

button_edit.Enabled = true;

}

private void button_add_Click(object sender, EventArgs e)

{

StreamWriter writerNew = new StreamWriter("d:\\" + comboBox_categoryAdd.Text + ".txt", true);

writerNew.WriteLine("");

writerNew.Write(textBox_nameAdd.Text + ":" + textBox_signAdd.Text);

writerNew.Close();

textBox_signAdd.Text = null;

textBox_nameAdd.Text = null;

}

//------------------------------------------------------------------------------------------------------------------------------

//redaktirovanie ---------------------------------------------------------------------------------------------------------------

private void button_edit_Click(object sender, EventArgs e)

{

panel_search.Enabled = false;

panel_add.Enabled = false;

panel_edit.Enabled = true;

button_addNew.Enabled = true;

button_search.Enabled = true;

button_edit.Enabled = false;

comboBox_editName.Enabled = false;

int counter = 0;

string newCategoryComboBoxAddItem = null;

StreamReader categoryComboBoxAdd = new StreamReader("d:\\category.txt");

while ((newCategoryComboBoxAddItem = categoryComboBoxAdd.ReadLine()) != null)

{

comboBox_editCategory.Items.Add(newCategoryComboBoxAddItem);

counter++;

}

categoryComboBoxAdd.Close();

}

private void button_editCategoryOk_Click(object sender, EventArgs e)

{

comboBox_editCategory.Enabled = false;

comboBox_editName.Enabled = true;

int counter = 0;

string newNameComboBoxAddItem = null;

StreamReader categoryComboBoxAdd = new StreamReader("d:\\" + comboBox_editCategory.Text + ".txt");

////string bb = categoryComboBoxAdd.ReadLine();

do

{

//string b = categoryComboBoxAdd.ReadLine();

newNameComboBoxAddItem = categoryComboBoxAdd.ReadLine();

if (newNameComboBoxAddItem != null)

{

string[] buf = newNameComboBoxAddItem.Split(':');

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

{

arrayNameAndSign[counter, i] = buf[i];

}

comboBox_editName.Items.Add(arrayNameAndSign[counter, 0]);

counter++;

}

//newNameComboBoxAddItem = categoryComboBoxAdd.ReadLine();//

}

////while ((newNameComboBoxAddItem = categoryComboBoxAdd.ReadLine()) != null);

while (newNameComboBoxAddItem != null);

counterItem = counter;

categoryComboBoxAdd.Close();

}

private void button_editNameOk_Click(object sender, EventArgs e)

{

//comboBox_editName.Enabled = false;

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

{

if (comboBox_editName.Text == arrayNameAndSign[i, 0])

{

textBox_editSign.Text = arrayNameAndSign[i, 1];

k = i;

}

}

}

private void button_editUse_Click(object sender, EventArgs e)

{

if ((comboBox_editName.Text != null) & (comboBox_editCategory.Text != null) & (textBox_editSign.Text != null))

{

comboBox_editCategory.Enabled = true;

comboBox_editName.Enabled = false;

comboBox_editName.Items.Clear();

comboBox_editName.Text = null;

arrayNameAndSign[k, 1] = textBox_editSign.Text;

textBox_editSign.Text = null;

StreamWriter Edit = new StreamWriter("d:\\" + comboBox_editCategory.Text + ".txt", false);

Edit.Write("");

Edit.Close();

StreamWriter saveEdit = new StreamWriter("d:\\" + comboBox_editCategory.Text + ".txt", true);

saveEdit.Write(arrayNameAndSign[0, 0] + ":" + arrayNameAndSign[0, 1]);

for (int i = 1; i < counterItem; i++)

{

saveEdit.WriteLine("");

saveEdit.Write(arrayNameAndSign[i, 0] + ":" + arrayNameAndSign[i, 1]);

}

saveEdit.Close();

}

}

//------------------------------------------------------------------------------------------------------------------------------

}

}

Вывод: В ходе лабораторной работы мы изучили методы накопления знаний и программно реализовали программу для накопления знаний.

Была разработана программа для экспертизы в нашей предметной области и для вывода заключения на основе вводимых данных.

Соседние файлы в папке docx58