Работа с экспертной системой
⇐ ПредыдущаяСтр 2 из 2 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 "Варианты ПК: ASUS Eee PC 1005P <90OA1L-D42223-987E50AQ> Black 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 "Варианты ПК: ASUS K70AF <90NZKA2-10W124-5RD13AY> Turion 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 "Варианты ПК: ASUS Eee TOP ET2001B <90PE3B-A11222-57049C0Q> Black 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. Так как система, претендующая называться экспертной, должна обладать знаниями. Эти знания, естественно, должны быть ориентированы на конкретную предметную область, и из этих знаний должно непосредственно вытекать решение проблемы. Именно поэтому знания в экспертных системах предполагают определенную организацию и интеграцию (отдельные факты, сведения должны каким-либо образом соотноситься друг с другом и образовывать между собой определенные связи). То есть знания должны быть соответствующе представлены. Это и объясняет успешность в написании экспертных систем. ЭС использует не только данных, но и знаний, а также специального механизма вывода решений и новых знаний на основе имеющихся. Знания в ЭС представляются в такой форме, которая может быть легко обработана на ЭВМ. В ЭС известен алгоритм обработки знаний, а не алгоритм решения задачи. Поэтому применение алгоритма обработки знаний может привести к получению такого результата при решении конкретной задачи, который не был предусмотрен. Более того, алгоритм обработки знаний заранее неизвестен и строится по ходу решения задачи на основании эвристических правил. Решение задачи в ЭС сопровождается понятными пользователю объяснениями, качество получаемых решений обычно не хуже, а иногда и лучше достигаемого специалистами.
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|