Разработка алгоритма работы интеллектуальной информационной системы "Расчет меню"

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



























Тема: Разработка алгоритма работы интеллектуальной информационной системы

Пояснительная записка к курсовой работе

По дисциплине: Интеллектуальные информационные системы























Екатеринбург

2006

	
ПОСТАНОВКА ЗАДАЧИ



Предположим, мы решили облегчить жизнь всем женщинам России и помочь им в составлении меню на семейный ужин. Предположим, каждая женщина знает, какие и сколько (примерно) продуктов у нее есть дома в холодильнике. При составлении меню ей приходится помнить о предпочтениях каждого члена своей семьи (но не обязательно строго им следовать). Также она должна помнить, что она уже готовила на ужин в недалеком прошлом. И, наконец, при составлении меню ей следует учитывать семейные традиции, необходимость здорового образа жизни, длительность и сложность приготовления ужина, свою усталость и еще Бог знает, что.

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



ИССЛЕДОВАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ



Перед тем как начать, что-либо проектировать, нужно изучить предметную область и понять, что у нас есть и с чем мы будем работать. Для этого составим себе маленькую схему работы.

перед тем как использовать интеллектуальную систему ее надо сначала создать (или создать что-то похожее на ИИС)

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

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

Представим себе, что, в конечном счете, хочет получить от нас женщина :

- это должна быть система, которая при определенных (заданных) параметрах должна «сказать» ей, что лучше всего приготовить на ужин именно в данный вечер.

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

1 - Основной параметр – ПРОДОЛЖИТЕЛЬНОСТЬ ВАРКИ. Мы все понимаем то, что ей гораздо приятнее поговорить 2 часа с подругой по телефону, чем 30 минут провести у плиты!

2 – Второй параметр – УСТАЛОСТЬ – благодаря которому, муж вообще может обойтись без ужина.

3 – Третий – ПОЛЕЗНОСТЬ. А вам до сих пор не говорили, что овощная запеканка намного полезнее сочных котлет, которые к тому же портят ее фигуру.

4 – Четвертый – НАЛИЧИЕ ПРАЗДНИКА. Если он есть в этот день, то можно даже помочь ей, так как для такого ужина она обычно очень старается. 

5 – «СТЕПЕНЬ ВКУСНОСТИ» ДЛЯ МУЖА

6 – «СТЕПЕНЬ ВКУСНОСТИ» ДЛЯ ДОЧЕРИ

7 – «СТЕПЕНЬ ВКУСНОСТИ» ДЛЯ СЫНА и т. д. в зависимости от количества домочадцев в семье (в нашем примере будет сын и дочь).

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

8 – восьмой. РАДИ СЕБЯ/СЕМЬИ. Будем добры и понятливы к женщинам и оставим этот показатель специально для них. Ведь даже мы (мужчины), когда делаем что-то для «для семьи», мы делаем это:

- потому что нам просто всамим этого хочется;

- потому что это будет приятно или полезно для семьи.

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



название параметра

1

2

3

4

5

Продолжительность варки

15 мин

30 мин

45 мин

60 мин

1,5 часа

Усталость

полна энергии

готова к труду

средней паршивости

немного устала

устала вдрызг

Полезность

обязательно полезно

полезно

средне

вредно

но хочется

вредно

Праздник

есть праздник

нет праздника







Вкусность: муж

очень вкусно

вкусно

средне

невкусно

но поест

его не спрашивают

Вкусность: дочь

очень вкусно

вкусно

как обычно

невкусно

совсем невкусно

Вкусность: сын

очень вкусно

вкусно

как обычно

невкусно

совсем невкусно

ради себя / семьи

себе

семье









ВОЗМОЖНЫЕ ВАРИАНТЫ РЕШЕНИЙ



Задумавшись над решением великой проблемы «есть или не есть», что-то сподвигнуло нас на целых два варианта решения этой задачи. Попробуем проанализировать каждый из них и понять как с наименьшими затратами нашего драгоценного времени создать наиболее оптимальную систему для наших любимых женщин.

Решение первое.

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

Поясним понятие «код блюда». Допустим, что, приготовив сегодня борщ, она следовала следующим принципам: 

- у нее было более 2 часов свободного времени;

- у нее сегодня выходной, поэтому даже под вечер она еще готова потрудиться;

- на полезность она не обратила внимание, так как борщ не вреден, не полезен;

- сегодня не праздник, поэтому не было нужды особо напрягаться;

- она знала, что мужу он очень нравиться;

- дети вообще в лагере их мнение она не учла;

- она сказала ему, что сделала это только ради него;

Отсюда обращаясь к таблице, получаем «код борща» - 52321002. Конечно, борщ она могла бы приготовить и при других обстоятельствах. Но вся суть как раз в том и заключается, чтобы записать в базу как можно больше таких вариантов. В этом и будет заключаться процесс обучения программы. Если представить себе что у женщины хватит терпения целый год каждый вечер записывать все коды приготовленных блюд, то уже на следующий год будет большая вероятность того что, выбрав какие либо параметры она получит вариант, который она когда-то уже использовала на практике. 

Кроме того, систему всегда можно будет пополнять новыми данными. Допустим, она выбрала какие-то параметры, которые не предоставили ей ответа, тогда она заведет новый код блюда, ведь ей все равно придется готовить . Или другой вариант – она получила ответ с возможным вариантом, но в последний момент решила сама приготовить что-то другое. Тогда она просто дополнит систему новым блюдом с такими же параметрами и в следующий раз она уже получит целых два варианта на свой запрос! 

Такая ИИС будет представлять собой компьютерную программу, написанную, к примеру, на Delphi, которая по возможности будет работать не только на персональном компьютере, но и на КПК или СмартФонах. Благо современные технологии программирования (особенно NET) позволяют воссоздать любые мечты. И тогда наши любимые жены еще по дороге домой смогут прикинуть для себя, что им предстоит приготовить и заодно, напомнить нужно ли по пути заскочить в магазин за продуктами, которых возможно нет дома.

Представим алгоритмы обучения и использования программы в виде блок-схем.

Реализация первого примера.

Разработаем (как говорилось выше) форму для работы с программой. 

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

Итак, вид нашего окна для работы с ИИС будет выглядеть так (рис 1).





Рис. 1 - Рабочее окно программы


Вся работа с программой на момент обучения будет сводиться к простому выбору «параметров» приготовления блюда, записи его названия и нажатия кнопки «ЗАПИСАТЬ». После этого новая запись будет сохранена в файле «до лучших времен». 

Немного о логике работы программы:

Программа работает по принципу реляционной базы данных. Файл для хранения данных представляет собой файл MS Access, в котором находиться всего одна таблица, содержащая три поля: Код блюда, Название блюда, дата записи. Приложение Delphi работает с базой по технологии ADO, записывая и выбирая из базы нужные записи. 

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

Весь интерфейс программы я старался сделать наиболее «доброжелательным» к женщинам, снабдил некоторыми шутками и подсказками. Например если после того как женщина ничего не найдет в базе на свой запрос появиться сообщение (рис 2), которое быстро должно не дать ей огорчиться и заставит ее улыбнуться!





Рис. 2 - Окно с веселым сообщением


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

Решение второе.

	Смысл работы такой программы напомнил мне логику работы недавно изученной среды разработки ИИС Lota+. Ее «программы» основаны на том же принципе – накопление опыта путем первичного обучения и записи результатов в файл. Дальнейшее использование представляет собой выбор параметров из представленного меню и получения в конце некоторого результата. 

	Интерфейс программы будет как на рис 3. Среда предоставляет пользователю (в нашем случае нашим дорогим женщинам) довольно скудный интерфейс.

	



Рис. 3 - Окно выбора параметров будущего блюда



Последовательность обучения данной программы будет проходить примерно в том же духе, как и в предыдущем варианте – долго и нудно. Правда, здесь появиться еще одна трудность для пользователя. Это связано с тем, что работа в программе Lota+ требует первоначального обучения пользователя, так как режим обучения программы без определенных знаний пользователя просто невозможен. 

На рис 4. представлена работа программы в момент выбора параметров для будущего ужина. И если вдруг женщина после прохождения всех пунктов меню и выбора определенных параметров вдруг обнаружит оставшийся претендент – он и будет решением поставленной ею задачи. Т.е. тем самым блюдом, удовлетворяющим всем выбранным ей самой определенных параметров. На рис 5. изображен такой случай.





Рис. 4 - Программа в момент выбора параметров блюда





Рис. 5 - Программа в момент получения результата


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

В этом есть и свое преимущество – после выбора параметров в прошлом варианте программа требовала сначала нажать кнопку поиска, чтобы узнать есть ли какой-нибудь результат. А тут пользователь сразу может увидеть, как количество вариантов все время уменьшается и в конечном итоге - результат либо есть, либо нет – это видно сразу!!!



4. АНАЛИЗ РЕЗУЛЬТАТОВ ПЕРВОГО И ВТОРОГО РЕШЕНИЯ





Самостоятельная программа?

Отсутствие первичного обучение пользователя

Удобство интерфейса

Обучение и использование в одном цикле

Переносимость базы знаний

Первый вариант

да

Да

Да

Нет

Да 

Второй вариант

Нет (нужна Lota+)

Нет

Нет

Да

Нет



Как видно из сравнения первый вариант решения наиболее оптимален. И к тому же такие старые программы как Lota+ (16-битная программа) возможно уже не будут поддерживаться в новейших операционных системах. 

Из этого следует только одно – нужно выбирать первый вариант и срочно начинать рассказывать женщинам о великой полезности этой программы на благо всей семьи. Дабы они с большим удовольствием и неподдельным оптимизмом начали обучать эту систему. А нам, мужчинам остается только молиться, чтобы наша программа не наскучила им хотя бы в течение года, дабы пожать плоды наших (ладно ее) стараний . И да прибудет с нами Бог.


ВЫВОДЫ



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

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