Разработка экспертной системы по выбору мобильного телефона

Автор: Пользователь скрыл имя, 03 Ноября 2014 в 19:20, курсовая работа

Краткое описание

Целью работы является разработка экспертной системы по подбору сотового телефона по определённым критериям на основании анализа запросов покупателя, и ее реализация в языке Object Pascal.
Исходя из поставленной цели, выделяют следующие задачи исследования:
1. Анализ информации о мобильных телефонах.
2. Изучение методов построения базы знаний.
3. Разработка модели построения базы знаний.
4. Изучение механизмов логического вывода.
5. Реализация экспертной системы в языке программирования Object Pascal, который используется в среде программирования Delphi

Оглавление

Введение 3
Глава 1. Экспертные системы 5
1.1 Основные понятия экспертной системы 5
1.2 Классификация и структура экспертных систем 6
1.3 Базы знаний и модели представления знаний 8
1.4. Механизмы логического вывода 11
Глава 2. Выбор среды разработки ЭС 13
2.1. Инструментальные средства проектирования и разработки экспертных систем 13
2.2. Оболочки экспертных систем 15
2.3. Языки программирования 17
2.4. Среда программирования Delphi 19
Глава 3. Предметная область ЭС 22
3.1. Понятие предметной области 22
3.2. Предметная область ЭС «Выбор мобильного телефона 24
Глава 4. Руководство пользователя ЭС «По выбору мобильного телефона» 27
Заключение 29
Список использованной литературы: 31
Приложение 32

Файлы: 1 файл

Курсовая работа по выбору моб.телефона.doc

— 1.38 Мб (Скачать)

Результаты разработанного проекта  в рамках определенной темы показали ее эффективность и работоспособность.

Необходимо отметить так же недостатки программы, к ним можно отнести малый объем базы знаний и простой дизайн, так как программа создавалась в учебных, а не коммерческих целях. Для внедрения данного проекта в работу необходимо значительно расширить количество параметров и их вариативность и разработать более привлекательный для пользователя дизайн.

Таким образом, можно считать правомерным и результативным достижение цели и решение задач данного исследования: разработка ЭС «Выбор мобильного телефона».

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список использованной литературы:

 

 

  1. Базы знаний интеллектуальных систем / Т.А.Гаврилова, В.Ф.Хорошевский – СПб: Питер, 2000 – 384 с.
  2. Болотова Л.С. Системы искусственного интеллекта: модели и технологии, основанные на знаниях: учебник / ФГБОУ ВПО РГУИТП; ФГАУ ГНИИ ИТТ "Информика". – М.: Финансы и статистика, 2012. – 664 с.: ил. ISBN 978-5-279-03530-4
  3. Гаскаров, Д. Б. Интеллектуальные информационные системы. – М.: Высшая школа, 2003.
  4. Джексон, П. Введение в экспертные системы / П. Джексон. – 3-е изд. – М., 2007.
  5. Минский М. Фреймы для представления знаний. - М.: Мир, 1979.
  6. Муромцев Д.И. Введение в технологию экспертных систем. СПб: СПб ГУ ИТМО, 2005.
  7. Справочник. Искусственный интеллект в 3-х книгах: системы общения и экспертные системы (книга 1-я), модели и методы (книга 2-я), программные и аппаратные средства (книга 3-я)
  8. Тельнов Ю.Ф. Интеллектуальные информационные системы в экономике. – Уч. пособие. – М.: Синтег, 1998. – 216 с.
  9. Убейко, В. Н. Экспертные системы.- М.: МАИ, 1992.
  10. Уроки Delphi начинающим с нуля. http://www.delphi-manual.ru/
  11. Флёнов М.Е. - Библия Delphi (3-е издание) - 2011.
  12. Ясницкий, Л. Н. Введение в искусственный интеллект. – М.: Академия, 2005.

 

Приложение

 

 

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, DB, ADODB, Buttons, jpeg,

DBCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

Image1: TImage;

ADOConnection1: TADOConnection;

ADOTable1: TADOTable;

DataSource1: TDataSource;

ComboBox1: TComboBox;

Label4: TLabel;

ComboBox2: TComboBox;

Label5: TLabel;

ComboBox3: TComboBox;

Label6: TLabel;

Edit1: TEdit;

ComboBox4: TComboBox;

Label7: TLabel;

ComboBox5: TComboBox;

Label8: TLabel;

ComboBox6: TComboBox;

Label9: TLabel;

ComboBox7: TComboBox;

Label10: TLabel;

ComboBox8: TComboBox;

Label11: TLabel;

ComboBox9: TComboBox;

Label12: TLabel;

ComboBox10: TComboBox;

Label13: TLabel;

Label14: TLabel;

ComboBox11: TComboBox;

Label15: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Label16: TLabel;

Label17: TLabel;

ComboBox12: TComboBox;

Label18: TLabel;

ComboBox13: TComboBox;

Label19: TLabel;

procedure BitBtn2Click(Send er: TObject);

procedure ComboBox1Change(Send er: TObject);

procedure ComboBox2Change(Send er: TObject);

procedure ComboBox3Change(Send er: TObject);

procedure ComboBox4Change(Send er: TObject);

procedure ComboBox5Change(Send er: TObject);

procedure ComboBox6Change(Send er: TObject);

procedure ComboBox7Change(Send er: TObject);

procedure ComboBox8Change(Send er: TObject);

procedure ComboBox9Change(Send er: TObject);

procedure ComboBox10Change(Send er: TObject);

procedure BitBtn3Click(Send er: TObject);

procedure ComboBox11Change(Send er: TObject);

procedure ComboBox12Change(Send er: TObject);

procedure Edit2Change(Send er: TObject);

procedure Edit3Change(Send er: TObject);

procedure FormActivate(Send er: TObject);

procedure ComboBox13Change(Send er: TObject);

private

{ Private declarations }

public

{ Public declarations }

end ;

var

Form1: TForm1;

//обозначение

a31:string; // переменная для фильтрации  а31=а11+а12+итд

a11:string;  // переменная для каждого поля фильтрации

a12:string;  // переменная для каждого поля фильтрации

a13:string;  // переменная для каждого поля фильтрации

a14:string;  // переменная для каждого поля фильтрации

a15:string;  // переменная для каждого поля фильтрации

a16:string;  // переменная для каждого поля фильтрации

a17:string;  // переменная для каждого поля фильтрации

a18:string;  // переменная для каждого поля фильтрации

a19:string;  // переменная для каждого поля фильтрации

a20:string;  // переменная для каждого поля фильтрации

a21:string;  // переменная для каждого поля фильтрации

a22:string;  // переменная для каждого поля фильтрации

a23:string;  // переменная для каждого поля фильтрации

a51:string;

a52:integer;

a61:integer;

a62:integer;

a71:string;

a72:string;

a00:integer;  // переменная для длины строки

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.BitBtn2Click(Send er: TObject);

var

s:string;

begin

a61:=0;

a62:=0;

if  a71<>'' then            // Преобразование текста при наборе диапазона Цены в числовой формат

a61:=strtoint(a71);

if  a72<>'' then

a62:=strtoint(a72);

if  (a62=0) and (a61<>0) then   // При условии задания начального диапазона верхний формирутся на максимум

a62:=999999;

begin

Adotable1.Filtered:=False;       //Отключаем фильтрацию тем самым  приводим бд в исходное состояние

adotable1.First;                  //Читаем с 1 записи таблицы

while adotable1.Eof<>true do     //Цикл для прочтения файла от начала до конца

begin                               //при завершение цикла переходим на переменную для фильтрации

adotable1.edit;                 //Редактирум поле признак поля  диапозона Цены записываем 0

adotable1.FieldValues['Цана']:='0';

adotable1.Post;

if  strtoint(adotable1.Fields[33].AsString)>=a61 then    // проверяем диапазон

if  strtoint(adotable1.Fields[33].AsString)<=a62 then    // проверяем диапазон

begin

adotable1.edit;

adotable1.FieldValues['Цана']:='1';    // при условии диапазона Цены ставим 1

adotable1.Post;

end ;

adotable1.Next;  //Переход на начало цикла

end ;

end ;

a00:=0;

a31:='';   //  формируем переменную для  фильтрации

if  a11<>'' then

a31:=a31 + a11 + ' and ';

if  a12<>'' then

a31:=a31 + a12 + ' and ';

if a13<>'' then

a31:=a31 + a13 + ' and ';

if a14<>'' then

a31:=a31 + a14 + ' and ';

if a15<>'' then

a31:=a31 + a15 + ' and ';

if a16<>'' then

a31:=a31 + a16 + ' and ';

if a17<>'' then

a31:=a31 + a17 + ' and ';

if a18<>'' then

a31:=a31 + a18 + ' and ';

if a19<>'' then

a31:=a31 + a19 + ' and ';

if a20<>'' then

a31:=a31 + a20 + ' and ';

if a21<>'' then

a31:=a31 + a21 + ' and ';

if a22<>'' then

a31:=a31 + a22 + ' and ';

if a23<>'' then

a31:=a31 + a23 + ' and ';

if a61+a62<>0 then             // Проверяем заданный диапазон или нет

begin

a31:=a31+'Цана='+ '1';    //Добавляем диапазон  к фильтрацию

a00:=1;

end

else

//В результате  получаем а31 на конце с полем 'and' длиной 5знаков

begin            //для этого длину строки и Удаляем последние 5 символов

a00:=length(a31); // подсчет символов

delete(a31,a00-4,5); //Удаляем последние 5 символов

end ;

if a00=0 then

s:= ' Для  работы Экспертной Системы должен  быть выбран хотя бы один  из параметров!!!';

edit1.Text:=s;

edit1.Visible:=True;   // делаем невидимым edit1

if a00<>0 then

edit1.Text:='';

if a00=0 then       // проверяем есть ли данные для фильтрации если a00=0,

Adotable1.Filtered:=False; //то БД приводится   в исходное  состояние

Adotable1.Filtered:=true;

Adotable1.Filter:=a31;

begin

a52:=0;

adotable1.First;

while adotable1.Eof<>true do   //Реализуем счётчик  подсчёта отфильтрованных записей  по

begin                            // по схеме цикла с условным переходом

a52:=a52+1;

adotable1.Next;     //Переход на начало цикла

end ;

end ;

Form2.Edit1.Text:=inttostr(a52);  // на вывод кол-ва телефонов на форме2

if a00<>0 then    // если длина строки не пустая, т.е выбран параметр, то

form1.Hide;      //скрываем форму1

if a00<>0 then    // если длина строки не пустая, т.е выбран параметр, то

form2.ShowModal; //отображаем форму2

if a00=0 then     // если длина строки пустая, т.е не выбран параметр, то

form1.Show;      //отображаем форму1

if a00=0 then     // если длина строки пустая, т.е не выбран параметр, то

form2.Hide;      //скрываем форму2

end ;                           // формируем переменные по выпадаещему списку

procedure TForm1.ComboBox1Change(Send er: TObject);

begin

a11:='Производитель='+ QuotedStr(combobox1.Text);   // Записываем  в переменную а11  и т.д а12...а22

if combobox1.Text='' then

a11:='';

end ;

procedure TForm1.ComboBox2Change(Send er: TObject);

begin

if combobox2.Text='Да' then

a12:='[FM радио]='+ QuotedStr('есть');

if combobox2.Text='Нет' then

a12:='[FM радио]='+ QuotedStr(combobox2.Text);

if combobox2.Text='' then

a12:='';

end ;

procedure TForm1.ComboBox3Change(Send er: TObject);

begin

a13:='Цвет='+ QuotedStr(combobox3.Text);

if combobox3.Text='' then

a13:='';

end ;

procedure TForm1.ComboBox4Change(Send er: TObject);

begin

a14:='[Тип корпуса]='+ QuotedStr(combobox4.Text);

if combobox4.Text='' then

a14:='';

end ;

procedure TForm1.ComboBox5Change(Send er: TObject);

begin

a15:='[Сенсорный экран]='+ QuotedStr(combobox5.Text);

if combobox5.Text='' then

a15:='';

end ;

procedure TForm1.ComboBox6Change(Send er: TObject);

begin

a16:='[Поддержка двух SIM карт]='+ QuotedStr(combobox6.Text);

if combobox6.Text='' then

a16:='';

end ;

procedure TForm1.ComboBox7Change(Send er: TObject);

begin

a17:='[MP3 плеер]='+ QuotedStr(combobox7.Text);

if combobox7.Text='' then

a17:='';

end ;

procedure TForm1.ComboBox8Change(Send er: TObject);

begin

a18:='Wi-Fi='+ QuotedStr(combobox8.Text);

if combobox8.Text='' then

a18:='';

end ;

procedure TForm1.ComboBox9Change(Send er: TObject);

begin

a19:='Bluetooth='+ QuotedStr(combobox9.Text);

if combobox9.Text='' then

a19:='';

end ;

procedure TForm1.ComboBox10Change(Send er: TObject);

begin

a20:='[3G]='+ QuotedStr(combobox10.Text);

if combobox10.Text='' then

a20:='';

end ;

procedure TForm1.BitBtn3Click(Send er: TObject);

begin

Form1.Close;

end ;

procedure TForm1.ComboBox11Change(Send er: TObject);

begin

a21:='Цена='+ QuotedStr(combobox11.Text);

if combobox11.Text='' then

a21:='';

end ;

procedure TForm1.ComboBox12Change(Send er: TObject);

begin

a22:='[Разрешение экрана]='+ QuotedStr(combobox12.Text);

if combobox12.Text='' then

a22:='';

end ;

procedure TForm1.ComboBox13Change(Send er: TObject);

begin

a23:='[емкость аккумулятора]='+ QuotedStr(combobox13.Text);

if combobox13.Text='' then

a23:='';

end ;

procedure TForm1.Edit2Change(Send er: TObject);

begin

a71:=form1.Edit2.text;  // Записываем в переменную а71, то что ввели в поле edit2

end ;

procedure TForm1.Edit3Change(Send er: TObject);

begin

a72:=form1.Edit3.text;  // Записываем в переменную а72, то что ввели в поле edit3

end ;

procedure TForm1.FormActivate(Send er: TObject);

begin

edit1.Visible:=false;  //Изначально делаем невидимым edit1

end ;

end .

______________________________________________________________________________

 

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, ExtCtrls, DBCtrls, DB, ADODB, Grids, DBGrids;

type

TForm2 = class(TForm)

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

ADOConnection1: TADOConnection;

ADOTable1: TADOTable;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

procedure BitBtn1Click(Send er: TObject);

procedure BitBtn2Click(Send er: TObject);

procedure DBGrid1CellClick(Column: TColumn);

private

{ Private declarations }

public

{ Public declarations }

end ;

var

Form2: TForm2;

implementation

uses Unit1, Unit3;

{$R *.dfm}

procedure TForm2.BitBtn1Click(Send er: TObject);

begin

form2.Close;

form1.show;

end ;

procedure TForm2.BitBtn2Click(Send er: TObject);

begin

Form1.Close;

Form2.Close;

end ;

 

procedure TForm2.DBGrid1CellClick(Column: TColumn);

begin

//Form3.ShowModal;

form3.Image1.Picture.LoadFromFile(Form1.adoTable1.FieldByname('Фото').AsString);

Form3.ShowModal;

end ;

end .

______________________________________________________________________________

 

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls;

type

TForm3 = class(TForm)

Image1: TImage;

private

{ Private declarations }

public

{ Public declarations }

end ;

var

Form3: TForm3;

implementation

{$R *.dfm}

end .


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