Функциональная схема программы




Теоретические выкладки по используемым структурам данных и типам алгоритмов

Постановка задачи (тема курсовой работы)

Разработать экспертную систему по выбору программного обеспечения для ПК пользователя. Входные данные:

-цели использования ПК;

-доступные ресурсы ПК;

-пределы стоимости требуемых приложений.

 

Выбор языка разработки

 

Разработка программы велась на строго типизированном объектно-ориентированном языке программирования Delphi, так как это эффективная система программирования, ориентированная на так называемую "быструю разработку". В основе систем быстрой разработки (Rapid Application Development – среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий. Производительность программиста при использовании RAD-систем фантастическая.

Так же для создания базы данных, где хранится вся информация о программном обеспечении, использовалась СУБД MSAccess.

Выбор используемых структур и компонентов

В программе для удобства пользователя и наглядности на форме используются компоненты следующих типов: TEdit, TComboBox, TLabel, TButton, TListBox, TRichEdit, TDBLookupListBox, TBevel, TPopupMenu.

Для соединения БД, созданной в Microsoft Access, с Delphi используются следующие компоненты: TADOQuery, TDataSource, TADOConnection.

Выбор алгоритма.

Экспертные системы рассматриваются совместно с базой знаний, которая в данной работе создана в СУБД MS Access. Так как выбор оптимального ПО зависит от конкретного пользователя и может варьироваться в зависимости от входных данных, то в основе программы будет использоваться нечеткая логика, то есть программа будет выводить возможные результаты с коэффициентом приемлемости того или иного приложения.

Основные задачи и структуры программы

Задачи, решаемые при проектировании

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

· реализация пользовательского интерфейса;

· решение программной части задачи:

o реализация базы знаний;

o реализация программного модуля, взаимодействующего с базой знаний.

Структура базы знаний

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

Таблица, которая включает цели использования ПО:

Ключевой столбец (id_purpose) имеет связь с общей таблицей (soft_purpose).

 

В каждом значении id_purpose записаны идентификаторы программ, которые относятся к данному типу ПО.

Таблица ПО:

Таблица содержит информацию о названии, цене, а также о подходящем процессоре, количестве оперативной и видеопамяти и других ресурсах. Последний столбец определяет важность программы при выводе конечного результата. Значения в столбцах «processor», «ram», «video», «other» присваивают программе тот или иной ресурс, необходимого для её работы. Данные значения хранятся в компоненте TComboBox программы в Delphi.

 

2.3 Реализация программного модуля, для работы с базой данных

 

Для связи базы данных и программы Delphi используются следующие элементы – .

ADOConnection обеспечивает подключение к базе данных; Для того, чтобы подключиться к БД Access необходимо прописать следующую команду:

adoconnection1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + getcurrentdir() + '\db.mdb;

DataSource представляет собой источник данных, который обеспечивает связь между набором данных и компонентами отображения и редактирования данных; Чтобы подключить данный компонент с ADOQuery необходимо в инспекторе объектов в свойстве DataSet установить компонент ADOQuery.

ADOQuery используется для выполнения запросов просмотра данных или изменения данных. Для соединения данного компонента с ADOConnection необходимо в свойстве Connection установить этот компонент.

 


Функциональная схема программы

Функциональная схема программы представлена на рисунке 1.

Начало
Ввод данных
  Интерфейс
Получено событие ввода данных

 

 


Заполните все поля
Нет

 

 

Да

Условие ввода цели

Цель не выбрана
Нет

 


 

Вычисление коэффициента
Да

 

Вывод результатов на экран
Конец

 


Рисунок 1 – Функциональная схема программы


 
4 Анализ и обоснование выбора алгоритма решения

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

Одним из основных методов представления знаний в экспертных системах являются продукционные правила, позволяющие приблизиться к стилю мышления человека. Любое правило продукций состоит из посылок и заключения. Возможно наличие нескольких посылок в правиле, в этом случае они объединяются посредством логических связок И, ИЛИ. Обычно продукционное правило записывается в виде: «ЕСЛИ (посылка) (связка) (посылка)… (посылка) ТО (заключение)».

Главным же недостатком продукционных систем остается то, что для их функционирования требуется наличие полной информации о системе.

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

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

Именно поэтому был выбран алгоритм с использованием нечёткой логики.


Пример использования нечеткой логики в программе:

listbox1.Items.Clear; // очистка листбокса, в который выводится подобранное ПО adoquery2.First; // переходим к первой записи в наборе ПО

count:= 0; // количество подобранных программ изначально устанавливаем в ноль

// заносим все ПО, которое подходит по цене

for i:= 1 to adoquery2.RecordCount do

begin

// если ПО стоит не больше, чем всего выделено, тогда добавляем его в массив mas

if (adoquery2.Fields[2].AsFloat <= strtofloat(edit1.Text)) {and (adoquery2.Fields[2].AsFloat <> 0)} then

begin

count:= count + 1; // увеличиваем количество ПО на 1

mas[count, 1]:= adoquery2.Fields[1].AsString; // название ПО

mas[count, 2]:= adoquery2.Fields[2].AsString; // его стоимость

mas[count, 3]:= floattostr((get_processor_koeff(combobox1.ItemIndex + 1, adoquery2.Fields[3].AsInteger) *

get_ram_koeff(combobox2.ItemIndex + 1, adoquery2.Fields[4].AsInteger) *

get_video_koeff(combobox3.ItemIndex + 1, adoquery2.Fields[5].AsInteger) *

get_other_koeff(combobox4.ItemIndex + 1, adoquery2.Fields[6].AsInteger) +

get_priority_koeff(adoquery2.Fields[7].AsInteger) / 3) / 2); // общий коэффициент

// общий коэффициент определяется путем умножения всех коэффициентов друг на друга и усредняется с коэффициентом важности

end;

adoquery2.Next; // переход к след. записи в наборе ПО

end;



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: