Автор работы: Пользователь скрыл имя, 29 Мая 2012 в 23:13, практическая работа
Целью выполнения практической работы по курсу «Системы искусственного интеллекта» является написание программы экспертной системы для любой предметной области, близкой исполнителю.
Существуют различные способы предоставления знаний в экспертных системах и соответственно различные методы построения базы знаний и логического вывода.
Один из возможных методов работы с ненадёжной, неопределенной информацией основанный на применении теории вероятностей, называется байесовский.
Введение…………………………………………………………………………………………………………………………………………..……3
База знаний.……………………………………………………………………………………………………………………………………..……4
Описание предметной области……………………………………………………………………………………………………..……..4
Признаки и их значения………………………………………………………………………………………………………………………..4
Список вопросов …………………………………..………………………………………………………………………………………………4
Байесовский подход………………………………………………………………………………………………………………………………5
Расчёт вероятностей……………………………………………………………………………………………………………………………...5
Таблица вероятностей..………………………………………………………………………………………………………………………...6
Разработка Экспертной системы………………………………………………………………………………………………………...7
Взвешивание ответа пользователя..…………………………………………………………………………………………………..…8
Механизм логического вывода…………………………………………………………………………………………………………….9
Опыты……………..………...…………………………………………………………………………………………………………………………10
Заключение………………………………………………………………………………………………………………………………………….12
Список литературы………………
listBox1.Items.Clear();
if (checkBox1.Checked)
for (float j = 1; j > -0.01; j -= (float)0.01)
{
for (int i = 0; i < ish; i++)
{
if (ver[i] >= j && ver[i]< (j + 0.01) ) listBox1.Items.Add(ver[i] + " - " + gipotez[i]);
}
}
else for (int i = 0; i < ish; i++)
{
listBox1.Items.Add(ver[i] + " - " + gipotez[i]);
}
}
private void button2_Click(object sender, EventArgs e)
{
refresh();
}
private void button3_Click(object sender, EventArgs e)
{
make();
}
private void button4_Click(object sender, EventArgs e)
{
Otmena.Add((float[])ver.Clone(
for (int i = 0; i < ish; i++)
{
if (yes[i, t] != 0)
{
if (yes[i, t] == 2) yes[i, t] = 0;
ver[i] = (ver[i] * yes[i, t]) / (ver[i] * yes[i, t] + no[i, t] * (1 - ver[i]));
}
}
listBox2.Items.Add(voprosi[t] + " - Да");
vse();
}
private void button5_Click(object sender, EventArgs e)
{
Otmena.Add((float[])ver.Clone(
for (int i = 0; i < ish; i++)
{
if (no[i, t] != 0 || yes[i, t] == 1)
{
if (yes[i, t] == 2) yes[i, t] = 0;
ver[i] = (ver[i] * (1 - yes[i, t])) / (ver[i] * (1 - yes[i, t]) + (1 - no[i, t]) * (1 - ver[i]));
}
}
listBox2.Items.Add(voprosi[t] + " - Нет");
vse();
}
public void vse()
{
t += 1;
if (t == ish)
{
textBox1.Text = "Всё!";
button4.Enabled = false;
button5.Enabled = false;
button6.Enabled = false;
label7.ResetText();
}
else { textBox1.Text = voprosi[t]; label7.Text = (t + 1).ToString(); }
refresh();
}
private void button6_Click(object sender, EventArgs e)
{
vse();
}
private void checkBox1_CheckedChanged(objec
{
refresh();
}
private void listBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control == true && e.KeyCode == Keys.C) Clipboard.SetText(listBox1.
}
private void button2_Click_1(object sender, EventArgs e)
{
ver = Otmena[Otmena.Count - 1];
Otmena.RemoveAt(Otmena.Count - 1);
listBox2.Items.RemoveAt(
refresh();
}
}
}