Федеральное агентство по образованию Новомосковский институт (филиал) Государственного образовательного учреждения высшего профессионального образования «Российский химико-технологический университет имени Д.И. Менделеева» Кафедра Вычислительная техника и информационные технологии Курсовая работа по дисциплине Технологии программирования на тему: Разработка экспертной системы по определению оптимальной конфигурации ПК Новомосковск 2011 Введение Целью работы являлась разработка экспертной системы по определению оптимальной конфигурации персонального компьютера. Данное приложение разработано, чтобы облегчить задачу выбора персонального компьютера обычному пользователю ПК. В ходе выполнения курсовой работы проведено исследование предметной области. На основе результатов исследования разработаны структура экспертной системы, зависимость переменных, а также экспертная система. В результате, сократилось время выбора пользователем оптимальной (по соответствующим критериям) конфигурации персонального компьютера на основании выданных рекомендаций. Курсовая работа является итоговой работой по изучению курса «Технологии программирования». Конечной целью изучения курса является получение навыков работы в разработке экспертных систем. Задание выполнено с использованием языка Clips и операционной системы Microsoft Windows XP Professional SP3. Экспертные системы возникли как значительный практический результат в применении и развитии методов искусственного интеллекта - совокупности научных дисциплин, изучающих методы решения задач интеллектуального (творческого) характера с использованием ЭВМ. Область искусственного интеллекта имеет более чем сорокалетнюю историю развития. С самого начала в ней рассматривался ряд весьма сложных задач, которые, наряду с другими, и до сих пор являются предметом исследований: автоматические доказательства теорем, машинный перевод, распознавание изображений и анализ сцен, планирование действий роботов, алгоритмы и стратегии игр. Экспертная система - это набор программ, выполняющий функции эксперта при решении задач из некоторой предметной области. Экспертные системы выдают советы, проводят анализ, дают консультации, ставят диагноз. Практическое применение экспертных систем на предприятиях способствует эффективности работы и повышению квалификации специалистов. Главным достоинством экспертных систем является возможность накопления знаний и сохранение их длительное время. В отличие от человека к любой информации экспертные системы подходят объективно, что улучшает качество проводимой экспертизы. При создании экспертных систем возникает ряд затруднений. Это, прежде всего, связано стем, что заказчик не всегда может точно сформулировать свои требования к разрабатываемой системе. Также возможно возникновение трудностей чисто психологического порядка: при создании базы знаний системы эксперт может препятствовать передаче своих знаний, опасаясь, что впоследствии его заменят «машиной». Но эти страхи не обоснованы, так как экспертные системы не способны обучаться, они не обладают здравым смыслом, интуицией. Но в настоящее время ведутся разработки экспертных систем, реализующих идею самообучения. Также экспертные системы неприменимы в больших предметных областях и в тех областях, где отсутствуют эксперты. Причиной повышенного интереса, который экспертные системы вызывают к себе на протяжении всего своего существования, является возможность их применения к решению задач из самых различных областей человеческой деятельности. 1. Постановка задачи В данном курсовом проекте поставлена задача разработки программного комплекса, нацеленного на предоставление информации о комплектации персонального компьютера, и помощи рядовому пользователю в выборе комплектации ПК. Программный комплекс помогает принять решение о комплектации персонального компьютера, а также выдает пример собранной комплектации. Данная программа имеет 4 входных параметра, которые можно задавать и изменять по усмотрению пользователя, и тем самым изменять выходные параметры системы, а также получать пример комплектации ПК на основе введенных параметров. Входные данные системы: цели использования персонального компьютера; пределы стоимости выбрано конфигурации; фирма-изготовитель комплектующих; мобильность. Выходные данные включают: тип комплектации; ценовая категория; выводы вспомогательных сообщений; рекомендации и пример комплектации ПК. Минимальной конфигурации ПЭВМ Компьютер с процессором Pentium 233 МГц. Объём памяти 128 Мбайт ОЗУ Объём свободного места на жёстком 20Мбайт . Операционная система Microsoft Windows XP. Монитор VGA или более высокого разрешения. 2. Описание предметной области В настоящее время лидерами на ранке мобильных ПК являются Acer, ASUS, и Samsung. А лидерами на рынке комплектующих ПК являются ASUS, GigaByte, и INTEL. Рассмотрим каждый из них подробней. .1 Acer - тайваньская компания по производству компьютерной техники и электроники.разрабатывает и производит мониторы, концентраторы, коммуникаторы, дисководы, сетевые карты, клавиатуры, оперативную память, ноутбуки, проекторы. Выручка в 2006 г. - $11,156 млрд (рост в сравнении с 2005 г. - 16 %), чистая прибыль - $308,9 млн (рост 21 %). За 2006 год Acer отгрузила для продажи около 14 млн компьютеров - на 39 % больше, чем в 2005 году. Консолидированная прибыль корпорации Acer за 2007 г. - $14,07 млрд (рост 25 %). Итоговый результат включает прибыль за последние 2,5 месяца в 2007 г., полученные от дочерней компании Acer - Gateway (находится в полной собственности). Операционная прибыль корпорации за 2007 г. - $310,17 млн (рост - 30 %). Чистая прибыль - $394,65 млн В конце 2007 г. компания Acer подписала соглашение с Международным олимпийским комитетом, вступающее в силу в 2009 г. Согласно договору, компания станет спонсором зимних Олимпийских игр 2010 года в Ванкувере и Олимпийских игр 2012 года в Лондоне. По итогам 2007 г. лидируют на рынке ноутбуков - 31,2 % (ближайший конкурент - Asus, 25 %). Acer 3-й год подряд удерживает первую строчку по продажам ноутбуков в России. Основную часть продуктового портфеля корпорации в России составляют ноутбуки (60 % в I квартале 2008 г.) и настольные ПК (10 %). 2.2 ASUS Computer Inc. (обычно называется просто ASUS, NASDAQ: AKCZF, TWSE:2357) - расположенная на Тайване компания, производящая компьютерные компоненты, такие как материнские платы, графические карты, а также ноутбуки, мониторы, мобильные телефоны и оптические приводы. Название торговой марки ASUS происходит от слова Pegasus. В настоящее время ASUS продаёт материнских плат больше чем любая другая компания, достигнув цифры в 30 млн в 2004 году <http://ru.wikipedia.org/wiki/2004_%D0%B3%D0%BE%D0%B4>. Однако, в это число входит и продукция, прошедшая ребрендинг <http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B1%D1%80%D0%B5%D0 %BD%D0%B4%D0%B8%D0%BD%D0%B3>.также производит различные компоненты для продуктов других корпораций, включая Sony <http://ru.wikipedia.org/wiki/Sony> (PlayStation 2 <http://ru.wikipedia.org/wiki/PlayStation_2>), Apple Inc. <http://ru.wikipedia.org/wiki/Apple_Inc.> (iPod <http://ru.wikipedia.org/wiki/IPod>, iPod Shuffle <http://ru.wikipedia.org/wiki/IPod_shuffle>, MacBook), Alienware <http://ru.wikipedia.org/wiki/Alienware>, Falcon Northwest <http://ru.wikipedia.org/w/index.php?title=Falcon_Northwest&action=edit&redlink= 1>, Palm, Inc. <http://ru.wikipedia.org/wiki/Palm,_Inc.>, HP <http://ru.wikipedia.org/wiki/Hewlett-Packard>, и многие другие производители оборудования используют материнские платы ASUS в своих системах (c 2008 года <http://ru.wikipedia.org/wiki/2008_%D0%B3%D0%BE%D0%B4> вся вышеперечисленная продукция изготавливается на производственных мощностях Pegatron <http://ru.wikipedia.org/wiki/Pegatron> Corporation). Выручка компании в 2008 году - 22,9 млрд долл., чистая прибыль - 840 млн долл. .3 Samsung Samsung Group - промышленный концерн <http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%86%D0%B5%D1 %80%D0%BD> (группа компаний), один из крупнейших в Южной Корее <http://ru.wikipedia.org/wiki/%D0%AE%D0%B6%D0%BD%D0%B0%D1%8F_%D 0%9A%D0%BE%D1%80%D0%B5%D1%8F>, основанный в 1938 году <http://ru.wikipedia.org/wiki/1938> в единой Корее <http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D1%80%D0%B5%D1%8F>. На мировом рынке <http://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D1%80%D0%BE%D0%B2%D0 %BE%D0%B9_%D1%80%D1%8B%D0%BD%D0%BE%D0%BA> известен как производитель высокотехнологичных компонентов <http://ru.wikipedia.org/wiki/%D0%92%D1%8B%D1%81%D0%BE%D0%BA%D0 %B8%D0%B5_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0% BE%D0%B3%D0%B8%D0%B8>, телекоммуникационного оборудования, бытовой техники, аудио- и видео устройств. Samsung занимаtтся производством жёстких дисков <http://ru.wikipedia.org/wiki/%D0%96%D1%91%D1%81%D1%82%D0%BA%D0 %B8%D0%B9_%D0%B4%D0%B8%D1%81%D0%BA> (HDD), оперативной памяти <http://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1 %82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B0%D0%B C%D1%8F%D1%82%D1%8C>, SRAM <http://ru.wikipedia.org/wiki/SRAM> (в том числе и для производства чипов видеокарт и процессоров), жидкокристаллических мониторов <http://ru.wikipedia.org/wiki/%D0%96%D0%9A-%D0%BC%D0%BE%D0%BD%D 0%B8%D1%82%D0%BE%D1%80>, жидкокристаллических и плазменных телевизоров, мобильных телефонов стандартов GSM, CDMA, 3G и с поддержкой WiMAX, оборудования для IP-телефонии, ноутбуков <http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%83%D1%82%D0%B1%D1 %83%D0%BA>, принтеров <http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BD%D1%82%D0 %B5%D1%80>, МФУ <http://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D 1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0% B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%83%D1%81%D1%82 %D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE>, бытовой техники и т. д., развитием сетей беспроводной телекоммуникации третьего и четвертого поколения, WiMAX. .4 GigaByte Gigabyte Technology - тайваньская <http://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D0%B9%D0%B2%D0%B0%D0 %BD%D1%8C> компания по производству системных плат <http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0 %BC%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BB%D0%B0%D1%82%D0% B0>, видеокарт <http://ru.wikipedia.org/wiki/%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1% 87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BA%D0%B0%D1%80 %D1%82%D0%B0> и другой компьютерной техники. Основанная в 1986 году <http://ru.wikipedia.org/wiki/1986_%D0%B3%D0%BE%D0%B4> и представлявшая собой изначально группу исследователей и разработчиков, сегодня превратилась в мирового лидера рынка системных плат и графических ускорителей. К 2008 г. Gigabyte является холдингом, в состав которого входят: Gigabyte Technology - выпуск системных <http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0 %B8%D0%BD%D1%81%D0%BA%D0%B0%D1%8F_%D0%BF%D0%BB%D0% B0%D1%82%D0%B0> и графических <http://ru.wikipedia.org/wiki/%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1% 87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BF%D0%BB%D0%B0 %D1%82%D0%B0> плат для ПК; Gigabyte Communications <http://ru.wikipedia.org/wiki/Gigabyte_Communications> (основана в 2004 <http://ru.wikipedia.org/wiki/2004> г.) - производство коммуникаторов и смартфонов под маркой GSmart <http://ru.wikipedia.org/w/index.php?title=GSmart&action=edit&redlink=1> (с 2006 <http://ru.wikipedia.org/wiki/2006> г.). Стремясь к максимальному увеличению круга своих клиентов, GIGABYTE постоянно расширяет ассортимент своей продукции, в который к настоящему моменту входят самые разнообразные устройства, в том числе Ноутбуки <http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%83%D1%82%D0%B1%D1 %83%D0%BA> и настольные ПК <http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D1%81%D0%BE%D0 %BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BA%D0 %BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80>, решения для цифрового дома, серверы <http://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1 %80_%28%D0%B0%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0 %BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0% B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%29>, устройства связи, мобильные и портативные устройства. .5 INTEL Intel Corporation - американская <http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%B5%D0%B4%D0%B8%D0 %BD%D1%91%D0%BD%D0%BD%D1%8B%D0%B5_%D0%A8%D1%82%D0% B0%D1%82%D1%8B_%D0%90%D0%BC%D0%B5%D1%80%D0%B8%D0%BA %D0%B8> корпорация <http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D1%80%D0%BF%D0%BE%D1 %80%D0%B0%D1%86%D0%B8%D1%8F>, производящая широкий спектр электронных устройств и компьютерных <http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D 1%8E%D1%82%D0%B5%D1%80> компонентов, включая полупроводники <http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D1%83%D0%BF%D1 %80%D0%BE%D0%B2%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA>, микропроцессоры <http://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0 %BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80> , наборы системной логики (чипсеты <http://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D0%BF%D1%81%D0%B5%D1 %82>) и др. Штаб-квартира - в городе Санта-Клара <http://ru.wikipedia.org/wiki/%D0%A1%D0%B0%D0%BD%D1%82%D0%B0-%D 0%9A%D0%BB%D0%B0%D1%80%D0%B0>, штат Калифорния <http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BB%D0%B8%D1%84%D0 %BE%D1%80%D0%BD%D0%B8%D1%8F>, США <http://ru.wikipedia.org/wiki/%D0%A1%D0%A8%D0%90>.- крупнейший в мире производитель микропроцессоров, занимающий на 2008 год 75 % этого рынка. Основные покупатели продукции компании - производители персональных компьютеров Dell <http://ru.wikipedia.org/wiki/Dell> и Hewlett-Packard <http://ru.wikipedia.org/wiki/Hewlett-Packard>. Помимо микропроцессоров, Intel выпускает полупроводниковые компоненты для промышленного и сетевого оборудования. 3. Выбор среды разработки Среди множества оболочек экспертных систем следует выделить: Guru; Leonardo; Clips; Среди рассмотренных оболочек для создания экспертных систем выберем Clips, поскольку он позволяет создавать экспертные системы для платформ Windows. .1 Краткая информация о языке CLIPS Первоначально аббревиатура CLIPS была названием языка - С LanguageIntegratedProductionSystem (язык С, интегрированный с продукционными системами), удобного для разработки баз знаний и макетов экспертных систем. Теперь CLIPS представляет собой современный инструмент, предназначенный для создания экспертных систем (expertsystemtool). CLIPS состоит из интерактивной среды - экспертной оболочки со своим способом представления знаний, гибкого и мощного языка и нескольких вспомогательных инструментов. Сейчас, благодаря доброй воле своих создателей, CLIPS является абсолютно свободно распространяемым программным продуктом. Всем желающим доступен как сам CLIPS последней версии, так и его исходные коды. Официальный сайт CLIPS располагается по адресу: <http://www.ghg.net/clips/CLIPS.html>. Этот сайт поможет вам получить как сам CLIPS, так и всевозможный материал для его изучения и освоения (документацию, примеры, советы специалистов, исходные коды и многое другое). Сейчас на рынке доступно не так уж много экспертных оболочек (инструментов, предназначенных для создания экспертных систем). Несмотря на то, что CLIPS распространяется бесплатно, он весьма успешно конкурирует даже с самыми известными коммерческими проектами. Количество пользователей CLIPS растет из года в год. Об этом можно судить по активности посещения сайтов, форумов и конференций, посвященных CLIPS. Если вы еще не установили CLIPS на свой компьютер - возможно, самое время сделать это. А пока, для того чтобы лучше понять философию CLIPS, его возможности и особенности, погрузимся в историю создания этой системы. .2 Система обозначений Для описания синтаксиса различных команд и конструкций, рассматриваемых в ходе изложения, используется одна и та же система обозначений. Эта система обозначений состоит из трех различных типов текста, подлежащего вводу. Обозначения первого типа относятся к символам и знакам, которые должны быть введены точно так, как они показаны; к ним относятся любые текстовые надписи, не заключенные в пару знаков <>, [ ] или {}. Например, рассмотрим следующее описание синтаксиса: (example) Это описание синтаксиса означает, что конструкция (example) должна быть введена так, как показано. Точнее, вначале должен быть введен знак открывающей скобки (, затем буква е, после этого буквы х, a, m, р, l, е и, наконец, знак закрывающей скобки, ). Квадратные скобки, [ ], указывают, что содержимое в квадратных скобках является необязательным. Например, следующее описание синтаксиса показывает, что цифра 1, находящаяся в квадратных скобках, может не указываться: (example [1]) Таким образом, следующий результат ввода является совместимым с указан¬ным выше синтаксическим определением: (example) как и такой результат ввода: (example 1) Знаки "меньше" и "больше", вместе взятые, <>, указывают, что должна быть выполнена замена значением того типа, который обозначен содержимым, находя¬щимся внутри знаков <>. Например, следующее описание синтаксиса, в котором используются знаки "меньше" и "больше", показывает, что должна быть выпол¬нена замена действительным целочисленным значением: <integer> Продолжая синтаксиса: предыдущие (example примеры, <integer>) может укажем, быть что такое заменено описание следующими результатами ввода: (example 1) или: (example 5) или: (example -20) или многими другими результатами ввода, в которых содержатся знаки "(example ", за этими знаками следует целое число, а за ним знак ). Важно отметить, что пробелы, показанные в описании синтаксиса, также должны быть включены в результат ввода. Еще один вариант обозначения характеризуется использованием звездочки, *, которая следует за описанием. Такое обозначение показывает, что описание может быть заменено вхождениями указанного значения в количестве от нуля или больше. После каждого вхождения некоторого значения должны быть проставлены пробелы. Например, следующее описание синтаксиса: <integer>* может быть заменено таким результатом ввода: 1 или таким: 1 2 или таким: 12 3 или любым другим количеством разделенных пробелами целых чисел, или же вообще оставлено пустым. Описание, за которым следует знак "плюс", +, указывает, что вместо этого опи¬сания синтаксиса должно быть введено одно или несколько значений, заданных этим описанием. Необходимо отметить, что следующее описание синтаксиса: <integer>+ эквивалентно такому описанию синтаксиса: <integer> <integer>* Вертикальная черта, |, указывает на необходимость выбора одного или не¬скольких элементов, разделенных вертикальными чертами. Например, следующее описание синтаксиса:| none | some может быть заменено таким результатом ввода: all all или таким: none или таким: some 3.3 Резюме языка CLIPS Первым компонентом системы CLIPS являются факты. Факты формируются из полей, которые могут представлять собой символ, строку, целое число или число с плавающей точкой. Первое поле факта обычно используется для указания типа информации, хранимой в факте, и называется именем отношения. Для присваивания имен слотов конкретным полям факта, начиная с указанного имени отношения, используется конструкция deftemplate. Для определения фактов как начальных знаний служит конструкция deffacts. Вторым компонентом системы CLIPS являются правила. Каждое правило состоит из левой и правой части. Левая часть правила может рассматриваться как часть IF, а правая часть - как часть THEN. Правила могут иметь несколько шаблонов и действий. Третьим компонентом системы CLIPS является машина логического вывода. Правила, шаблоны которых удовлетворяются фактами (т.е. проверка шаблонов на соответствие фактам оканчивается успешно), активизируются, в результате чего активизированные правила помещаются в рабочий список правил. А наличие в системе CLIPS свойства релаксации исключает возможность постоянной активизации одних и тех же правил под действием уже воспринятых фактов. Кроме того, в настоящей главе дано вводное описание такого понятия, как переменные. Переменные используются для выборки информации от фактов и ограничения значений слотов при сопоставлении с шаблонами в левой части правила. Переменные могут сохранять адреса фактов, сопоставленных с шаблонами в левой части правила, что позволяет извлекать факты, связанные с шаблонами, в правой части правила. Если поле, с которым должно быть выполнено согласование, может иметь любое значение и его значение в дальнейшем не требуется в левой или в правой части правила, то вместо переменных могут использоваться однозначные подстановочные символы. Многозначные переменные и подстановочные символы согласовывать факты больше чем с одним полем в шаблоне. позволяют 4. Разработка экспертной системы Пользуясь редактором clipsedt.exe, сформируем базу знаний демонстрационной ЭС и сохранить ее в файле Config.clp. ЭС должна вырабатывать рекомендации рядовому пользователю ПК по выбору комплектации персонального компьютера в соответствии с заданными входными параметрами. Данная экспертная система будет иметь 4 входные переменные: ) Мобильность - важнейший параметр данной ЭС, так как он является определяющим в выборе 2 направлений: мобильные и стационарные. ) Цели использования ПК - определяющий параметр, разделяющий ЭС по направлениям использования персонального компьютера, а также по его стоимости (офисные ПК дешевле чем ПК, предназначенные для мультимедийных приложений). ) Пределы стоимости выбранной конфигурации - параметр, определяющий максимальное количество денег, которое может потратить пользователь на покупку персонального компьютера. ) Фирма-изготовитель - параметр, определяющий предпочтения пользователя в сторону той или иной фирмы-изготовителя комплектующих или мобильных систем. Обозначения переменных: mobile - мобильность. Имеет 2 значения: 0 - нет (стационарный ПК), 1 - да (мобильный ПК); firma - фирма-изготовитель. Имеет 5 параметров: 1 - Acer, 2 - ASUS, 3 Samsung, 4 - Gigabyte, 5 - INTEL; znach - назначение выбираемого персонального компьютера. Имеет 2 параметра: 1 - офисные ПК, 2 - мультимедийные приложения; cash - максимальная стоимость, которую может потратить пользователь на выбранный ПК (минимальная стоимость ПК по данному параметру - 6000, максимальная - 60000). Рисунок 1 - диаграмма зависимостей переменных. 5. Работа с экспертной системой C помощью редактора clipsedt.exe, или любого текстового редактора (например, NotePad++) создадим базу знаний экспертной системы, содержащую в себе правила, на основании которых экспертная система будет выдавать рекомендации по выбору конфигурации ПК пользователю ЭС. Исходный код экспертной системы имеет вид: (defrule data-input (initial-fact) => (printout t crlf " Основное назначение: ") (printout t crlf " 1 - Офисные ") (printout t crlf " 2 - Мультимедийные приложения и игры " crlf) (bind ?znach (read)) (assert (znach ?znach)) (printout t crlf " Мобильность (1 - да; 0 - нет): ") (bind ?mobile (read)) (assert (mobile ?mobile)) (printout t crlf " Фирма-изготовитель: ") (printout t crlf " 1 - Acer ") (printout t crlf " 2 - ASUS ") (printout t crlf " 3 - Samsung ") (printout t crlf " 4 - GigaByte ") (printout t crlf " 5 - INTEL " crlf) (bind ?firma (read)) (assert (firma ?firma)) (printout t crlf "Максимальная стоимость ПК: ") (bind ?cash (read)) (assert (cash ?cash)) ) (defrule R1 (mobile ?mobile) (firma ?firma) (test (and (= ?mobile 1)(= ?firma 1)) ) => (printout t crlf crlf "Вы выбрали раздел мобильных ПК (ноутбуки) фирмы Acer" crlf) (assert (type "Мобильные ПК Acer")) (assert (typecnst 1))) (defrule R2 (mobile ?mobile) (firma ?firma) (test (and (= ?mobile 1)(= ?firma 2)) ) => (printout t crlf crlf "Вы выбрали раздел мобильных ПК (ноутбуки) фирмы ASUS " crlf) (assert (type "Мобильные ПК ASUS")) (assert (typecnst 2))) (defrule R3 (mobile ?mobile) (firma ?firma) (test (and (= ?mobile 1)(= ?firma 3)) ) => проектирование экспертный комплектация компьютер (printout t crlf crlf "Вы выбрали раздел мобильных ПК (ноутбуки) фирмы Samsung " crlf) (assert (type "Мобильные ПК Samsung")) (assert (typecnst 3))) (defrule R4 (mobile ?mobile) (firma ?firma) (test (and (= ?mobile 1)(> ?firma 3)) ) => (printout t crlf crlf "Мобильные ПК данной фирмы не выпускаются. Выберите другую фирму-изготовитель для мобильного ПК" crlf) (assert (config "Выберите другую фирму-изготовитель для мобильного ПК"))) (defrule R5 (mobile ?mobile) (firma ?firma) (test (and (= ?mobile 0)(and (= ?firma 1)(= ?firma 3))) ) => (printout t crlf crlf "Стационарные ПК на основе мат.плат данной фирмы не выпускаются. Выберите другую фирму-изготовитель для стационарного ПК" crlf) (assert (config "Выберите другую фирму-изготовитель для стационарного ПК"))) (defrule R6 (mobile ?mobile) (firma ?firma) (test (and (= ?mobile 0)(= ?firma 2)) ) => (printout t crlf crlf "Вы выбрали раздел стационарных ПК на основе мат.плат фирмы ASUS " crlf) (assert (type "Стационарные ПК ASUS")) (assert (typecnst 4))) (defrule R7 (mobile ?mobile) (firma ?firma) (test (and (= ?mobile 0)(= ?firma 4)) ) => (printout t crlf crlf "Вы выбрали раздел стационарных ПК на основе мат.плат фирмы GigaByte " crlf) (assert (type "Стационарные ПК GigaByte")) (assert (typecnst 5))) (defrule R8 (mobile ?mobile) (firma ?firma) (test (and (= ?mobile 0)(= ?firma 5)) ) => (printout t crlf crlf "Вы выбрали раздел стационарных ПК на основе мат.плат фирмы INTEL " crlf) (assert (type "Стационарные ПК INTEL")) (assert (typecnst 6))) (defrule R9 (znach ?znach) (cash ?cash) (test (and (= ?znach 1)(and (>= ?cash 6000)(<= ?cash 21000))) ) => (printout t crlf crlf "Дешевый офисный ПК" crlf) (assert (money "Низкая ценовая категория")) (assert (moneycnst 1))) (defrule R10 (znach ?znach) (cash ?cash) (test (and (> ?znach 1)(and (> ?cash 21000)(<= ?cash 30000))) ) => (printout t crlf crlf "Хороший ПК" crlf) (assert (money "Средняя ценовая категория")) (assert (moneycnst 2))) (defrule R11 (znach ?znach) (cash ?cash) (test (and (= ?znach 2)(and (>= ?cash 30000)(<= ?cash 60000))) ) => (printout t crlf crlf "Хороший мультимедийный ПК" crlf) (assert (money "Высокая ценовая категория")) (assert (moneycnst 3))) (defrule R12 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 1)(= ?typecnst 1)) ) => (printout t crlf crlf "Вы выбрали мобильный ПК Acer низкой ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: Acer eMachines E525-902G16Mi <LX.N740C.003> CM900(2.2)/2048/160/DVD-RW/WiFi/Linux/15.6/2.53 кг." crlf) (assert (config "Мобильный ПК Acer дешевый"))) (defrule R13 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 1)(= ?typecnst 2)) ) => (printout t crlf crlf "Вы выбрали мобильный ПК ASUS низкой ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: <90OA1L-D42223-987E50AQ> ASUS Black Eee PC 1005P Atom N450(1.66)/2048/160/WiFi/cam/Win7St/10.1/1.27 кг." crlf) (assert (config "Мобильный ПК ASUS дешевый"))) (defrule R14 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 1)(= ?typecnst 3)) ) => (printout t crlf crlf "Вы выбрали мобильный ПК Samsung низкой ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: Samsung N150 <NP-N150-JA01> Atom N450(1.66)/1024/250/WiFi/BT/cam/Win7St/10.1/1.16 кг." crlf) (assert (config "Мобильный ПК Samsung дешевый"))) (defrule R15 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 1)(= ?typecnst 4)) ) => (printout t crlf crlf "Вы выбрали стационарный ПК ASUS низкой ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: Компьютер Asus Eee Box B1006 (90PE24C2112101A39CHZ) Black. Тип процессора: Intel Atom. Модель процессора: N270. Оперативная память: 2048 Мб. Объём жесткого диска: 160 Гб. Беспроводная связь WiFi. Операционная система Microsoft Windows Vista Home Basic ." crlf) (assert (config "Стационарный ПК ASUS дешевый"))) (defrule R16 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 1)(= ?typecnst 5)) ) => (printout t crlf crlf "Вы выбрали стационарные ПК Gigabyte низкой ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: Gigabyte G-MAX <SA4LB v2.0> (Socket478 <i845GL>, SVGA, LAN)." crlf) (assert (config "Стационарный ПК GigaByte дешевый"))) (defrule R17 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 1)(= ?typecnst 6)) ) => (printout t crlf crlf "Вы выбрали стационарные ПК INTEL низкой ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: Intel® Core™ i5 750 2,66 GHz, LGA1155/8MB-1333MHz,1Tb SATAII,4096Mb DDRIII,DVD-RW,Video PCI-E Radeon HD 5870 1024 mb DDR5,Card reader,БП 550W,Lan 10/100/1000." crlf) (assert (config "Стационарный ПК INTEL дешевый"))) (defrule R18 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 2)(= ?typecnst 1)) ) => (printout t crlf crlf "Вы выбрали мобильный ПК Acer средней ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: Acer Extensa 5635Z-442G16Mi <LX.EDV0C.045>T4400(2.2)/2048/160/DVD-RW/WiFi/cam/Linux/15.6/2.36 кг." crlf) (assert (config "Мобильный ПК Acer не дешевый"))) (defrule R19 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 2)(= ?typecnst 2)) ) => (printout t crlf crlf "Вы выбрали мобильный ПК ASUS средней ценовой категории." crlf) (printout t crlf crlf "Варианты <90NZKA2-10W124-5RD13AY> ПК: ASUS Turion K70AF X2 M520(2.3)/3072/320(5400)/DVD-RW/WiFi/cam/Win7HB/17.3/3.24 кг." crlf) (assert (config "Мобильный ПК ASUS не дешевый"))) (defrule R20 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 2)(= ?typecnst 3)) ) => (printout t crlf crlf "Вы выбрали мобильный ПК Samsung средней ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: Samsung R430 <NP-R430-JB01> i3 330M(2.13)/3072/320/DVD-RW/WiFi/cam/Win7HB/14/2.14 кг." crlf) (assert (config "Мобильный ПК Samsung не дешевый"))) (defrule R21 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 2)(= ?typecnst 4)) ) => (printout t crlf crlf "Вы выбрали стационарный ПК ASUS средней ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: <90PE3B-A11222-57049C0Q> ASUS Eee TOP Black ET2001B Atom N270(1.6)/1024/160/DVD-RW/WiFi/WinXP/19.6." crlf) (assert (config "Стационарный ПК ASUS не дешевый"))) (defrule R22 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 2)(= ?typecnst 5)) ) => (printout t crlf crlf "Вы выбрали стационарный ПК GigaByte средней ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: TA 3 (1.0) GIGABYTE™small form factor. VIA C3 800MHz. Gigabyte VIA CLE266 / 8235 chipset. 40W Power supply. Support DOM (Disk On Module), ATA Disk Module (optional). Front USB 2.0 port, Earphone. MIC IN. Dimension: 64(D) x 213 (W) x 234(H) mm." crlf) (assert (config "Стационарный ПК GigaByte не дешевый"))) (defrule R23 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 2)(= ?typecnst 6)) ) => (printout t crlf crlf "Вы выбрали стационарный ПК INTEL средней ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: Intel Core 2 Quad Q9400 2,66 GHz, LGA775/6MB-1333MHz,500 Gb,2048Mb DDRII,DVD-RW,Video PCI-E ATI Radeon HD5770 1024 mb,Card reader,Lan 10/100/1000" crlf) (assert (config "Стационарный ПК INTEL не дешевый"))) (defrule R24 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 3)(= ?typecnst 1)) ) => (printout t crlf crlf "Вы выбрали мобильный ПК Acer высокой ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: Acer Aspire 5942G-724G64Bi <LX.PMN02.032> i7 720QM(1.6)/4096/640/Blu-Ray/WiFi/BT/cam/Win7HP/15.6/3.07 кг" crlf) (assert (config "Мобильный ПК Acer дорогой"))) (defrule R25 (typecnst ?typecnst) (money ?money) (test (and (= ?moneycnst 3)(= ?typecnst 2)) ) => (printout t crlf crlf "Вы выбрали мобильный ПК ASUS высокой ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: ASUS G60VX <90NV3A-7F9282-1VDC306Y> P8700(2.53)/4096/500(5400)/DVD-RW/WiFi/BT/cam/Win7HP/16/3.28 кг" crlf) (assert (config "Мобильный ПК ASUS дорогой"))) (defrule R26 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 3)(= ?typecnst 3)) ) => (printout t crlf crlf "Вы выбрали мобильный ПК Samsung высокой ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: Samsung R580 <NP-R580-JS08> i7 620M(2.66)/4096/320/DVD-RW/GbLAN/WiFi/BT/cam/Win7HP/15.6/2.54 кг" crlf) (assert (config "Мобильный ПК Samsung дорогой"))) (defrule R27 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 3)(= ?typecnst 4)) ) => (printout t crlf crlf "Вы выбрали стационарный ПК ASUS высокой ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: ASUS Z8PE-D18 (RTL) Dual LGA1366 <i5520> PCI-E, SVGA+2xGbLAN SATA RAID E-ATX 18DDR-III" crlf) (assert (config "Стационарный ПК ASUS дорогой"))) (defrule R28 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 3)(= ?typecnst 5)) ) => (printout t crlf crlf "Вы выбрали стационарный ПК GigaByte высокой ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: STA/C GIGABYTE™ ultra slim size Thin Client solution. VIA C7 1.0G/1.5Ghz FANLESS processor with VIA CN700 chipset. Low power consumption. Quiet Fan Less Design. Easy installation design with flexible specification. Best Cost & Performance." crlf) (assert (config "Стационарный ПК GigaByte дорогой"))) (defrule R29 (typecnst ?typecnst) (moneycnst ?moneycnst) (test (and (= ?moneycnst 3)(= ?typecnst 6)) ) => (printout t crlf crlf "Вы выбрали стационарный ПК INTEL высокой ценовой категории." crlf) (printout t crlf crlf "Варианты ПК: Intel® Core™ i7 920 2,66 GHz, LGA1366/8MB-1066MHz BX80601920,1Tb,4096Mb DDRIII,DVD-RW,Video PCI-E Radeon HD 5870 1024mb,Card reader,550W,Lan 10/100/1000,Wi-fi" crlf) (assert (config "Стационарный ПК INTEL дорогой"))) После создания базы знаний, компилируем ее в приложении clipswin.exe, для этого запускаем данное приложение, «File - > Load Constracts…», выбираем файл Config.clp, и нажимаем «Открыть». Компилятор выведет сообщения о том что он открыл базу знаний и проверяет на наличие ошибок код. Для запуска ЭС нужно нажать «Execution - > Reset», затем «Execution - > Run». Введя необходимые входные параметры система выдаст пример комплектации ПК. Вывод В процессе выполнения курсовой работы была написана экспертная система, использование которой поможет с выбором комплектации персонального компьютера рядовому пользователю. ЭС - это набор программ, выполняющий функции эксперта при решении задач из некоторой предметной области. ЭС выдают советы, проводят анализ, дают консультации, ставят диагноз. Практическое применение ЭС на предприятиях способствует эффективности работы и повышению квалификации специалистов. Успешному выполнению данной работы способствовало грамотное решение по выбору среды разработки, а именно языку программирования, и аналогичной программе, по написанию экспертных систем - CLIPS. Так как система, претендующая называться экспертной, должна обладать знаниями. Эти знания, естественно, должны быть ориентированы на конкретную предметную область, и из этих знаний должно непосредственно вытекать решение проблемы. Именно поэтому знания в экспертных системах предполагают определенную организацию и интеграцию (отдельные факты, сведения должны каким-либо образом соотноситься друг с другом и образовывать между собой определенные связи). То есть знания должны быть соответствующе представлены. Это и объясняет успешность в написании экспертных систем. ЭС использует не только данных, но и знаний, а также специального механизма вывода решений и новых знаний на основе имеющихся. Знания в ЭС представляются в такой форме, которая может быть легко обработана на ЭВМ. В ЭС известен алгоритм обработки знаний, а не алгоритм решения задачи. Поэтому применение алгоритма обработки знаний может привести к получению такого результата при решении конкретной задачи, который не был предусмотрен. Более того, алгоритм обработки знаний заранее неизвестен и строится по ходу решения задачи на основании эвристических правил. Решение задачи в ЭС сопровождается понятными пользователю объяснениями, качество получаемых решений обычно не хуже, а иногда и лучше достигаемого специалистами. Список используемых источников 1. Джаррано Д., Райли Г. «Экспертные системы: принципы разработки и программирование. 4-е изд.» - М.: "Вильямс", 2007. - 1152 с.; . Джексон П. Введение в экспертные системы.: Пер. с англ.: Уч. пос. 624 с.: ил. - Изд. дом «Вильямс», 2001.; . Трофимов В. База данных+CLIPS=База знаний// C. 56-61 - N 10. - 2003. Компьютеры+программы.; 4. Частиков А. П., Гаврилова Т. А., Белов Д. Л. «Разработка экспертных систем. Среда CLIPS.» - СПб. : БХВ-Петербург, 2003. - 608с.: ил. ISBN 5-94157-248-4 <http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0 %B1%D0%BD%D0%B0%D1%8F:BookSources/5941572484>.