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

Посмотреть архив целиком

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














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

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

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












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

2006

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


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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

1

2

3

4

5

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

15 мин

30 мин

45 мин

60 мин

1,5 часа

Усталость

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

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

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

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

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

Полезность

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

полезно

средне

вредно

но хочется

вредно

Праздник

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

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




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

очень вкусно

вкусно

средне

невкусно

но поест

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

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

очень вкусно

вкусно

как обычно

невкусно

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

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

очень вкусно

вкусно

как обычно

невкусно

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

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

себе

семье





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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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






Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.