Коммерциялық емес акционерлік қоғам

Коммерциялық емес акционерлік қоғам

АЛМАТЫ ЭНЕРГЕТИКА ЖӘНЕ БАЙЛАНЫС УНИВЕРСИТЕТІ

Компьютерлік технологиялар  кафедрасы

 

 

ЖАСАНДЫ ЗЕРДЕ ЖҮЙЕЛЕРІ

5В070400 – Есептеу техникасы және бағдарламалық қамтамасыз ету мамандығының бакалавр бағыты бойынша оқитын студенттерінің курстық жұмыстарын орындауға арналған әдістемелік нұсқаулық. 

 

 

Алматы  2013

Құрастырушы: Ахметова М. Жасанды зерде жүйелері. 5В070400 – Есептеу техникасы және бағдарламалық қамтамасыз ету мамандығының бакалавр бағыты бойынша оқитын студенттерінің курстық жұмыстарын орындауға арналған әдістемелік нұсқаулық.  -АЭжБУ.  Алматы, 2013 - 29 б.

 

Әдістемелік нұсқаулықта курстық жұмыстарды орындауға арналған мысалдар қарастырылған. Әдістемелік нұсқаулық 5В070400 – Есептеу техникасы және бағдарламалық қамтамасыз ету мамандығының барлық оқу түрінің  студенттеріне арналған.

Без.10,  5 Кесте, әдеб.көрсеткіші. – 20 атау.

 

Пікір беруші: аға оқытушы Елеуқұлов Е.Р.

 

Алматы энергетика және байланыс университетінің 2012 жылғы  жоспары бойынша басылды.

 

   ©    «Алматы энергетика және байланыс университетінің»   КЕАҚ,    2013ж.          

 

Кіріспе

«Жасанды зерде жүйелері» пәні  студенттердің зердеге негізделген іздеудің әдістерін оқып үйренуіне бағытталған. Бұл пәнде жасанды зерде есептерінің жүйеленуі және күйлер кеңістігінде, есептерді бөлшектеу кеңістігіндегі әдістермен қатар предикаттарды есептеуді пайдаланатын әдістер қарастырылады. Білімдерге негізделген жүйелерді басқару құрамдас бөліктерін жобалағанда туындайтын маңызды мәселелер қатарына шешімді іздеу әдістерін, яғни шығару стратегияларын табу жолдарын жатқызуға болады. Сондықтан курстық жобаны орындағанда студент осы жұмыста қойылған мәселені түсініп, пайдаланатын құралдарды игеру дағдысын көрсете білуі қажет.  Әдістемелік нұсқаулықта іздеу әдістерінің жолдары мен ПРОЛОГ және ЛИСП тілдерінде программалау дағдылары көмегімен жобаны дайындау мысалдары берілген. Сарапшы жүйе көмегімен  шешілетін көптеген қолданбалы есептер бар. Сарапшы жүйе дегеніміз  адам-маманды белгілі бір салада ауыстыра алатын компьютерлік программа. Сарапшы жүйелерді жобалау үшін адам-маманның болуы міндетті.   Сарапшы жүйе құрамы жүйенің орындауға тиісті негізі функцияларын анықтап береді: жүйе пайдаланушымен адам тілінде сөйлесіп, адамша ұсыныс жасап, өз шешімін адам тілінде түсіндіріп, өз құрамындағы білімдерін адам баласы білімін қалай толықтырады, сондай тәсілмен толықтырып, өзіндегі ескі білімдерді де адам сияқты жөндейді. Ақпараттық технологиялар мамандарының алдына қойылатын маңызды мәселелердің бірі сарапшы жүйелерді жобалау, оның бөліктерін құру дағдысын меңгеру және СЖ жобалау саласындағы жаңалықтарды бағалай білу мәселесі. Әдістемелік нұсқаулықта білімді бейнелеу үлгілері келтіріледі және осы үлгілер бойынша білім қорын құру мысалдары қарастырылады.  Жасанды зерде тілдері функционалдық және логикалық программалауға негізделген. Ол мәселе сипатын баяндау тәсілімен беретін ЛИСП және ПРОЛОГ тілдерінде құрылады. Курстық жобаны орындау нәтижесінде  студент мыналарды: функционалдық және логикалық программалау тілдерінде программаларды құруға; ЛИСП және ПРОЛОГ тілдерінде программалық нысандардың мәнін оқып, түсінуге; ЛИСП және ПРОЛОГ программаларын құрғанда рекурсия механизмін пайдалана білуді; Жасанды Зерде есептерінің әртүрлі әдістермен шешетін деректер құрылымын пайдаланатын программаларды құруды және өзгертуді үйреніп, біледі.

Сонымен курстық жобада мынандай: пәннің негізгі мәселелері қарастырылған бөлімдері бар  курстық жоба жайлы жалпы мағлұматтар, курстық жобаны орындауға қажетті негізгі кезеңдер, курстық жоба есебінің және оның тапсырмасының құрылымы, сала аумағының сипаты,  жеке тапсырмалар және курстық жобаны орындауға арналған мысалдар сияқты бөлімдер болуы қажет. 

 

1 Курстық жоба жайлы жалпы мағлұматтар

 

1.1 Курстық жобаның негізгі бөлімдері

 

Курстық жобада компьютерде қарапайым пайдаланушыдан бастап маман пайдаланушыға арналған есептер шешіледі. Курстық жобаға кіретін негізгі бөлімдерге мыналар жатады:

1)                     Жасанды Зердеге кіріспе.

2)                     Сарапшы жүйелерге кіріспе.

3)                     Іздеу стратегиялары.

4)                     Күйлер кеңістігінің іздеу әдістері.

5)                     Есепте кеңістігінің іздеу әдістері.

6)                     Предикаттарды есептеу кеңістігінің іздеу әдістері.

7)                     Эвристикалық әдістер.

8)                     Білімдерді пайдалану үлгілері.

9)                     Логикалық үлгі.

10)                Продукциялық үлгі.

11)                Фреймдік үлгі.

12)                Семантикалық желі үлгісі.

13)                Табиғи тілді түсіну.

14)                Нейрон желісінің әдістері.

15)                Машиналық үйрену әдістері.

Курстық жоба жеке берілген тапсырма бойынша орындалады. Онда мына мәселелер келтірулері керек:

1)                     Сала мәселесінің жалпы сипаты.

2)                     Сала мәселесінің функциялары.

3)                     Пайдаланылатын құжаттар.

4)                     Шектеулер.

5)                     Шығу есебінің формасы.

Курстық жобаның басында студент сала мәселесінің жалпы сипатын талдауы қажет,  шешілетін есепте сала мәселесінің  қандай функциясы іске асады соны анықтау қажет, жеке берілген тапсырма бойынша орындалауына қажетті  басқа да параметрлерді анықтау керек.  Жүргізілген талдаулар нәтижесінде мәселенің қойылуы және есептің алгоритмделуі, бақылау мысалын құру және есептің компьютердегі іске асырылуы болады.

Курстық жобаны орындау нәтижесінде оның соңғы есебі құрылады. Онда жобаның барлық кезеңдерінде орындалған жұмыстар, программа кодалары бар қосымша-листингілер келтіріледі. Курстық жобаны қорғау презентациялық материалдар көмегімен орындалады.

 

1.2 Курстық жобаның негізгі кезеңдерінің мазмұны

 

Курстық жобаны  атқару үдерісі кезінде мынандай жұмыс кезеңдері орындалады.

1)     Сала мәселесінің жалпы сипаты, ену ақпаратының сипаттамалары,  шектеулер, іске асырылуға тиісті функциялар.

2)     Ену құжаттарының сипаттары, шығу мағлұматтарының формалары және компьютерге шығатын нәтиже де  анықталған есеп мәселесін қоюды орындау.

3)     Сала мәселесінің білімдері және деректер сипаттары анықталған  ақпараттық талдауларды және қажет болса, деректер қоры құрылымын құруды орындау.

4)     Сарапшы жүйелерді жобалағанда білімдерді пайдалану үлгісін анықтау, егер ойын программаларын құру қажет болса деректер қалыбы мен құрылымын анықтау.

5)     Сыртқы формаларды анықтау: суреттер, мәтін, графика. Құжаттардың нақты типтері жеке тапсырма мәтіндерінде келтіріледі.

6)     Пайдаланушы қолданбасының интерфейсі құрылады:  сұқбаттар, фондық түр, хабарлар, кеңестер, басқа қолданбаларға, Интернетке  және т.б. шығу.

7)     Логикалық және функционалдық программалау тілдерін таңдау және негіздеу.

8)     Бақылау мысалын және олардың кілт сөздерін  құру.

9)     Бақылау мысалы негізінде компьютер программасын құру. 

10)  Пайдаланушыға, жүйелік программалаушыға, жүйелік әкімкерге нұсқаулықтар құру.

11)  Курстық жобаны  орындап болған соң белгілі бір қорытындылар жасау.

 

1.3 Курстық жоба есебінің құрылымы

 

Пән бойынша курстық жоба орындау қарастырылған. Тақырыптар жеке. Тақырыпты таңдау студенттің өз еркімен болады, бірақ топта бір тақырыпты екі студент таңдай алмайды.

Курстық жобаны орындау есеп берумен аяқталады. Есеп беру есебі АЭжБУ фирмалық стандарты бойынша орындалып, өз құрамында принскриндермен бірге төмендегі бөліктерді ұстауы қажет:

1)     Бас парақ (мысал 1 кестеде келтірілген).

2)     Жұмыс мақсаты мен тапсырмасы.

3)     Тараулары мен мазмұны.

4)     Кіріспе.

5)     Жұмыстың сипаты.

6)     Негізгі бөлім.

7)     Графикалық бөлім.

8)     Орындалған жұмыс нәтижесі (тапсырманың әр бабы бойынша түсіндірмесі бар принскриндер).

9)     Қорытынды.

10)Әдебиеттер тізімі (мысал 2 кестеде келтірілген).

11)Қосымшалар (программа листингілері).

 

Курстық жобаның бас парағының мысалы

1кесте

Коммерциялық емес акционерлік қоғам

Алматы энергетика және байланыс университеті

Компьютерлік технологиялар кафедрасы

 

 

КУРСТЫҚ ЖОБА

 

«Жасанды Зерде Жүйелері» пәні  бойынша

 «Күйлер кеңістігінде іздеу әдісімен зерделік есепті шешу» тақырыбына

 

Орындаған: БВТ- 09 тобының

студенті Кубен Г.

Жетекші: доц. Ахметова М.А

 

Алматы 2013

 

 

Әдебиеттер тізімі мысалы

2 кесте

Әдебиеттер тізімі

1.     Братко И.  Программирование на языке ПРОЛОГ для искусственного интеллекта.- М: Мир 1990г.

2.     Логическое программирование http: //ru.wukipedia.org/wiki/   

3.   Доорс Дж. И др. ПРОЛОГ- язык программирования будущего /Пер.с англ. – М.: Финансы и статистика, 1990. - 144 с.

4.       Хъювенен Э., Сеппянен Й. Мир ЛИСПа В 2-х т. Т.1: Введение в язык ЛИСП и функциональное программирование. Пер. С финск. – М.:Мир, 1990. – 447с.

 

 

1.4 Курстық жобаға тапсырма

 

Курстық жобаға тапсырма құрамында мыналар болады:

1)     Сала мәселесінің сипаты.

2)     Жеке тапсырма негізінде орындалуға тиісті курстық жоба мәтіні. 

Курстық жоба күйлер кеңістігінде, есептерді бөлшектеу кеңістігіндегі әдістер және предикаттарды есептеуді пайдаланатын әдістердің алгоритмдерін  қолданып шешілетін есептерге арналған. Сарапшы жүйелерді құрғанда білімдерді пайдалану үлгілері қолданылады. Ондай үлгілерге: логикалық үлгі, продукциялық үлгі, фреймді пайдаланатын үлгі, семантикалық желі үлгісі жатады. Программалық құрал есебінде функционалдық және логикалық программалау тілдерінің бірін, мысалы ЛИСП, Хаскелл және ПРОЛОГ тілдерін таңдап алуға болады.

«Жасанды Зерде Жүйелері» пәні бойынша курстық жобалауда біз бірнеше тақырыптар ұсынамыз.  Студент таңдап алған тақырыбын курстық жоба жетекшісімен келісіп алуы қажет.   Төменде сала аумағының мәселесін сипаттау келтірілген. 

 

2 Сала мәселесін сипаттау

 

«Жасанды Зерде Жүйелері» пәні бойынша курстық жобаны орындағанда мысал ретінде осы пәндегі екі бағытты мысалдарды қарастырамыз. Оларға: іздеу әдісін таңдау арқылы ойын программасын құру және белгілі бір сауа аумағына қатысты сарапшы жүйе құру сияқты мәселелер жатады. 

 

2.1 Іздеу әдісін таңдау арқылы ойын программасын құрудың сипаты

 

Бұл саладағы мысалда мынандай: Кіріспе, Есеп сипаты, Мәселені қою, Есепті шешу мазмұнының жалпы сипаты, Есепті шешуде қолданылатын әдістер, Іздеу әдісін таңдау сияқты бөлімдер болуы керек.

Кіріспе. Білімдерге негізделген жүйенің басқару компоненталарын жобалағанда ондағы іздеу әдістерін, яғни шығару стратегиясын таңдау маңызды мәселе қатарына жатады. Таңдап алынған іздеу әдісіне байланысты қолданылатын ережелердің іске қосылуы да анықталады. Таңдау процедурасы іздеу бағытын және оны іске асыру жолдарын анықтайды. Ойын программалары математикалық «ойын теориясы» зерттеулерінен  бөлек қарастырылған. Бұл екі бағыттың мақсаттары да әртүрлі [1]. Ойынның математикалық талдауында таза ойыншы стратегиясы зерттеледі. Ал программалауда ойыншы мақсатын әрекеттер көмегімен басқаруға тырысады. Ойын программасын құру үшін ең алдымен ойын құрылымын, яғни құрылымның өзін құратын ұғымдарды анықтау қажет. Ойын құрылымы іздеу әдістерімен тікелей байланысты болады. Мәселені шешудің екі тұрпаты бар: Бейнелеу және іздеу. Дегенмен әзірге жасанды зерде саласында есепті қоюдың және оны қалыптастырудың жалпыға бірдей әдіснамасы жасалмаған. Дегенмен мәселені қоюға арналған жолдар бар.  Енді әртүрлі іздеу әдістерін қарастырайық. Біз қарастыратын мысал атауы «Қасқыр, ешкі және қырыққабат». Оған кеңістіктегі күй бойынша іздеу әдістерін қолданамыз.

 

Есеп сипаты. Мысал есебінде «Қасқыр, ешкі және қырыққабат» деген классикалық ойын түрін таңдадық, өйткені  ойын программасының іздеу тәсілдерін түсіндіруге ол ыңғайлы. Ойынның сөзбен сипаты былайша сипатталады : Шаруа өзен арқылы мына жануарларды өткізуі қажет:

1)     Қасқырды.

2)     Ешкіні.

3)     Қырыққабатты.

Дегенмен, қайыққа тек бір шаруа және бір қасқыр немесе бір ешкі немесе бір қырыққабат сияды. Бірақ егер қасқырды ешкімен немесе ешкіні қырыққабатпен қалдырса олар бірін-бірі жеп қояды.  Шаруа өз жүгін өзеннің арғы бетіне түгел аман есен қалай жеткізуі керек?

Мәселені қою. Осы «Қасқыр, ешкі және қырыққабат»  деген есепке кеңістіктегі күй бойынша іздеу әдістерін қолдана отырып, программа жасап оны жөндеу қажет.

 

2.2 Есеп алгоритмін құру.

 

Есепті шешу мазмұнының жалпы сипаты. Бұл есепті шешудің екі жолы бар:

1)  Ешкіден бастаймыз. Шаруа алдымен ешкіні басқа жағаға апарады, қайтып келіп қасқырды қайығына салып алып, оны тағы осы жағаға әкеледі де, оны сонда қалдырып, ешкіні қайығына салып алады.  Ешкіні басқа жағаға қайта әкеліп оны сонда қалдырып, қырыққабатты қасқырдың жанына апарады. Содан соң ол қайта ешкі қалған жағаға қайтып одан ешкіні салып алады да жағалауға қайтып келеді. Осы әрекеттер нәтижесінде шаруа өз мақсатына жетеді.

2)  Екінші жолында шаруа тағы ешкіден бастайды. Содан соң қырыққабатты алып, оны ешкі жағалауына апарады, бірақ оны ешкімен қалдырмайды, қырыққабатты салып алып қайтадан қасқыр жағасына келеді. Одан ол қасқырды салып алып ешкіні қалдырады. Бұл жағдайда да, ары беру жүру саны алдыңғыдай  (жеті) болады.

Есепті шешуде қолданылатын әдістер. Бұл есепті шешуде әдебиеттерде көрсетілгендей «Мура автоматының графы» деп аталатын әдіс қолданылып жүр [2]. Сөзбен бейнелеуден кестелер, графтар, тәсімдер сипатына өту үшін біз ойын күйлерін мынанадай кодалауды ұсынамыз: төрт екілік разрядттарды бөлейік. Әр разряд өзеннің қай жағында аталған жануарлар орналасатынын білдіреді. Егер  разрядта 1 болса, онда жануар оң (бастапқы) жағада, егер 0 болса – екінші жағада. Оны бейнелеуге мына 1 суретті пайдаланайық:

Барлығы оң

жағалауда

Барлығы

сол

жағалауда

 
http://habrastorage.org/storage/habraeffect/cf/05/cf054ad716d22c5d51af3c8e69e81473.png


1 сурет - Ойынның бастапқы күйі

 

Есептің шартында көрсетілгендей шаруаның қарауынсыз бірге бола алмайтындар: Ешкі және қырыққабат; Ешкі және қасқыр.

Демек, келесі төрт күй жеңілетін күйге жатады:

 

ешкі

 

қасқыр

 

қырыққабат

 

 

шаруа

 
http://habrastorage.org/storage/habraeffect/96/03/9603a6c0751d138b7419b3f096523f19.png
2 сурет - Ойынның жеңілетін күйі

 

Енді біз есептің сөзбен берілген бейнелеуінен оның графикалық сипатына – графқа көшеміз.  Бұл күрделі емес. Бастапқы күйді Сст деп белгілейік – осы күйден ойын басталады да, осымен аяқталады. Және де «СТАРТ» деген батырма автоматты «0000» күйінен  «1111» күйіне келтіреді.  Мынаған көңіл аударыңыз, біз осылайша шығу сөздерін кодалаймыз, ал күйлерді басқаша кодтау қажет.  Демек шығу сөздерін қалыптастыратын комбинациялық тәсімді енгізу қажет. Шаруа және басқа жануарлардың әрекеттерін басқару үшін  төрт (3 кестені қара) ену сөздері қажет:

3 кесте

a1

Шаруа ешкіні апарады

a2

Шаруа қасқырды апарады

a3

Шаруа қырыққабатты апарады

a4

Шаруа басқа жағаға барады

 

Осылайша ену және шығу сөздері айтылды және күйлер белгіленді.  Енді  Мур автоматының графын қолданамыз. Күйлерді былайша белгілейміз:

1)     Нөл күйінен ойын бастапқы күйіне кез келген сөз келгенде өтеді.

2)     Ал шаруа ешкіні бірінші өткізгенде (а1) ойын ары қарай жалғасады да, басқаша болса (а2, а3, а4) бәрін басынан бастау қажет. Осы екі фактіні графта (3 суретті қара) бейнелейік:

 

http://habrastorage.org/storage/habraeffect/1c/52/1c52381b652c9e010e25fa346d363d7a.png

3 сурет - Бастапқы күй графы

 

Одан ары қарай ой тұжырымдайық:

1)     Егер енуге а2 немесе а3 сөздерін берсек, онда шаруа қасқырды да, ешкіні де алып жүре алмайды, сондықтан ойын күйі өзгермейді. Бірақ ол ешкіні қайтадан алып қайтады, сондықтан ойын бастапқы күйіне қайтып келеді.

2)     Демек, жалғыз шығуы бар күй шаруаның басқа жағаға қайтуы. Осыны 4 суретке қосамыз:

http://habrastorage.org/storage/habraeffect/6d/a7/6da774446a34b1fdc140f36535867cd8.png
4 сурет - Шығуы бар күй графы


         Енді қарсы жағаға кімді апару керектігін таңдау қажет: қырыққабатты немесе қасқырды.  Екі вариантты да қарастырса жаман болмас еді (5 суретте  қарауға оңай болуы үшін, күйлер жағдайының бір бөлігі ғана көрсетілген):


http://habrastorage.org/storage/habraeffect/cb/5a/cb5a4fce079a27a15e396ce9a1a30c63.png

5 сурет - Екі вариантты күй графы

 

Енді осы ауысудан соң оң жақ жағалауда кімнің қалатыны белгілі болады, онда не қырыққабат немесе қасқыр қалады.  Егер ой тұжырымдарын осы бағытта жалғастыра берсек, біз мынандай қарапайым тәсімге келеміз: көрсетілген 3, 4, 5 және 8 күйлерінде шаруа басқа жағаға кеткенде ешкі  қараусыз қырыққабатпен немесе қасқырмен қалады, ол ойын аяқталуына әкеліп соғады.  Немесе қажетсіз күйлер кестесіне көз салсаңыз осы күйлерге өткенде ойын аяқталады (2 суретті қара).

 

http://habrastorage.org/storage/habraeffect/d2/4d/d24da17d5e4e72c6d806478ee3536f26.png

6 сурет - Ең соңғы күй графы

 

Енді өту/шығу кестелерін  4 кестеде бейнелейік:

4 кесте

шығу

 
http://habrastorage.org/storage/habraeffect/bd/5c/bd5c836cecf598abe73abb78499d5384.png

 

Іздеу әдісін таңдау. Күйлер кеңістігін пайдаланып есепті сипаттау үшін біз ең алдымен бұл есептегі күй деген не соны анықтап алуымыз қажет.  Осы күйлер кеңістігіндегі күйлердің сипатын анықтау үшін оны қандай қалыппен сипаттаймыз, соны анықтау мәселедегі маңызды кезеңдер қатарына жатады.  Жалпы жағдайда күйлерді сипаттауға айнымалыларды анықтайтын кез келген құрылымдар жарай береді. Бұндай құрылымдарға: таңбалар қатары, векторлар, екі өлшемді массивтер, ағаштар, тізімдер сияқты қалыптарды жатқызуға болады. Операторлар. Есептегі іздеу әдістерін талдаудан бұрын осы есепке қатысты күй және оператор ұғымдарын кеңінен зерттеп алу қажет. Есептің операторы бір күйді екінші түрге түрлендіреді. Сондықтан оларды күйлер жиындарында анықталған функциялар есебінде қарауға болады. Функциялар өз мәндерін осы жиыннан анықтап отырады. Сонымен белгілі бір есепті күйлер кеңістігінде бейнелеу үшін мына ұғымдарды анықтап, белгілеу қажет: а) күйлер сипатының қалыбын, әсіресе бастапқы күй қалыбын анықтау; б) операторлар жиыны мен олардың сипатталған күйлерге ететін әсерін анықтау; в) мақсатты күй сипатының қасиетін анықтау.

Толық қарау әдісі.  Жайылып іздеу.  Жайылып іздеуде төбелер қалай құрылды солай ашылады.  Жайылып іздеу әдісіне жататын  іске асыру механизмі немесе тізімдерді өңдеу тәсілі ретінде программалау алгоритмдерінде «кезек» механизмі таңдалып алынады.

Тереңнен іздеу.  Бұл әдісте ең алдымен ең соңғы құрылған төбелер ашылады. Төбелерді ашу процессі дегеніміз осы төбеге операторлар жиынын қолдануды айтамыз.

Эвристикалық әдіс. Егер  шешім іздегенде белгілі бір формула немесе алгоритм болмаса, онда бір ережеге сүйеніп шешім ізделеді де, осы ережені - эвристика деп атайды. Мұндай эвристиканы пайдаланатын программаны жазу үшін адам-маманның ойлау механизмін зерттеу қажет. Ол үшін оны бақылау, интьервью жазу, статистикалық деректер жинау арқылы алу керек. Көптеген эвристикалық программалар сол салаға қатысты адам-маман ой тұжырымдарымен шешуге жететін тиімді жолдарды іске асырады. Мұндай эвристиканы жүйелеп, белгі бір қалыпқа келтіру үшін, сарапшы адамның іс-әрекетін зерттеу қажеттігі туады. Яғни, адамның ойлау психологиясын зерттеп, оның ойлау деңгейіне белгілі бір түрде тәжірибелер жасау қажет. Бұл тәсілдер тобына алдыңғы екі тәсілден басқа жолдардың барлығы кіреді. Яғни кеңістіктегі күйлерді белгілі бір қалыптармен өрнектеу арқылы мақсатты күйді іздеуде қолданылатын кез келген алгоритм жолдарын осы топқа жатқызуға болады [3].  Біз өз мәселемізге  тереңнен іздеу әдісін таңдап алдық. Программалау жолдарын қысқарту мақсатында тізімдер өз түйіндерімен кері тәртіпте берілген. Шешімді қалыптастыру үшін жергілікті шешім деп аталатын параметрды қолданамыз, ол циклдарды тану үшін қажет.  Бұл аталған тәсіл қысқа мысалдар үшін тиімді. Бірақ жалпы жағдайда, бұтақтары шексіз болатын ағаштар үшін программаның тоқтап қалуына әкеледі. Ол циклдарды өзінен алып тастайды, сондықтан ол шешімнің қысқа жолын таңдауға мүмкіндік береді. Мысалы, ұстамайды(жағдайы_2, өткен)) деп аталатын предикат циклдарды өзінен алып тастайды сондықтан алгоритм сенімді деп айтуға болады. Күйлерді толығынан қарап шығу біз ештеңені қалдырмай қажетті шешімді табатынымызды білдіреді. Осындай алгоритмге сәйкес келетін (5 кестені қара) программа шығуының бір бөлігін келтірейік.  Екі бос қатардан соң әртүрлі шешімдер кездесіп тұрады. Күйлер кері тәртіпте шығарылады, оларды тура түрде де жазу мүмкіндігі бар, бірақ ол нақты іс жүзіндегідей бола қоймайды.   

 

Циклдау болмайтын қарапайым тереңнен іздеу

5 кесте

 

ҚАСҚЫР

 

 

ЕШКІ

 

ҚЫРЫҚҚАБАТ

 

ШАРУА

 

сол жағы

 

сол жағы

 

сол жағы

 

сол жағы

 

сол жағы

 

 

ОҢ ЖАҚ

сол жағы

 

 

ОҢ ЖАҚ

сол жағы

 

 

ОҢ ЖАҚ

сол жағы

 

сол жағы

 

сол жағы

 

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

сол жағы

 

сол жағы

 

 

ОҢ ЖАҚ

сол жағы

 

 

ОҢ ЖАҚ

сол жағы

 

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

сол жағы

 

 

ОҢ ЖАҚ

сол жағы

 

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

сол жағы

 

сол жағы

 

сол жағы

 

сол жағы

 

сол жағы

 

 

ОҢ ЖАҚ

сол жағы

 

 

ОҢ ЖАҚ

сол жағы

 

 

ОҢ ЖАҚ

сол жағы

 

сол жағы

 

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

сол жағы

 

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

сол жағы

 

сол жағы

 

сол жағы

 

 

ОҢ ЖАҚ

сол жағы

 

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

сол жағы

 

 

ОҢ ЖАҚ

сол жағы

 

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

 

ОҢ ЖАҚ

 

 «Дөрекі» деп аталатын итерациялық тереңдеу. Шексіз(циклдық емес) мағынасы жоқ, тармақтардан өтпеу үшін іздеу тереңдігін шектеу қажет. Дегенмен, осы шекті алдын ала орнату мәселесінде қиындықтар туады. Егер қойылатын шек өте төмен болса (яғни, шешімнің кез келген жолына қарағанда) онда іздеу сәтсіз аяқталады. Бұл қиындықты жеңу үшін іздеу тереңдігін итеративті орындауға болады. Ол үшін іздеу тереңдігі мәнін өзгертуді ең төменгі деңгейден (мысалы, 0) бастап, одан соң барлық шешімдер табылғанша көбейтіп отыру қажет.

Программалау тілін таңдау және жобаны іске асыру.

Программа Python тілінде жазылған және ол логикалық SWI-prolog жүйесін қолданған.  Ондағы  pyswip модулін пайдалана отырып, swi-prolog жүйесін Python тілінен алу мүмкіндігі бар. Біз үшін  prolog тілін кез келген тіл аумағымен қосу өте қызықты болды. Сондықтан біз Python тілін таңдададық. Бұл қызықты болуымен қатар пайдалы да, өйткені логикалық программалау Python тілінің мүмкіндіктерін кеңейтеді. Программа соңынан ПРОЛОГ тіліндегі программаға айналатын қатарлар жиын түрінде берілген [4]. 

 

2.3 Сарапшы жүйелерді сипаттау

 

Бұл саладағы мысалда мынандай: Кіріспе, Есеп сипаты, Мәселені қою, Есепті шешу мазмұнының жалпы сипаты, Есепті шешуде қолданылатын білімдердің үлгілері, Іздеу әдісін таңдау сияқты бөлімдер болуы керек.

Кіріспе. Сарапшы жүйе (СЖ) дегенiмiз - белгiлi бiр сала мәселелерiн  шешуде сарапшы-маман адамды ауыстыра алатын жасанды жүйе. Бұл жүйе жөнiндегi зерттеулердiң мақсаты, құрылымы қиын есептердi шығарғанда сапасы мен тиiмдiлiгi жағынан адам тапқан шешiмнен кем түспейтiн нәтижеге жететiн компьютерлiк программалар жасау. Яғни, әңгiме сарапшы-адамның интеллектуалдық еңбегiн автоматтандыру жайында болмақ. Сарапшы жүйедегi программалардың жасанды зерде тарауларындағы басқа бағыттардан ерекшелейтін қасиеттерiне мыналарды жатқызамыз: бұл жүйедегi программалар құрылымы қиын, iс жүзiнде маңызы бар, шешiм жолын табуы қиын есептердi шығаруға қолданылады; жүйе өзiнiң тапқан шешiмi туралы түсiнiгiн пайдаланушыға сапалы деңгейде түсiндiрiп бере алуы керек. Бұл оның сандармен жұмыс iстейтiн алгоритмдерден ерекшелiгi;  табылған шешiм өзiнiң сапасы мен тиiмдiлiгi жағынан адам тапқан шешiмнен кем болмауы керек; маманмен пiкiр алысуы арасында өзiндегi бар бiлiмдi үнемi толықтырып отыратын қасиетi болуы қажет. Осы теориялық қағидаларға байланысты сарапшы жүйе құрамында бiрнеше бөлiктер бар: бiлiм қоры, жұмысшы зердесi, басқару құралы, пайдаланушыға түсiнiктi болуын қамтамасыз ету бөлiгi, бiлiмдi ала бiлу бөлiгi, түсiндiру бөлiгi  [5]. СЖ қолданылатын саланың біріне денсаулық диагностикасын жатқызамыз. Талдаулар деректері мен аурудың сыртқы белгілерін біріктіре және қосымша ақпараттарды пайдалана отырып, СЖ адам-маманның — мысалы емдеуші дәрігер немесе дәрігер-диагноз қоюшының ой тұжырымдарын қайталау арқылы  диагноз қояды. Аурудың алдын алу оны емдегенге қарағанда тез және оңай екенін әркім біледі. Қазіргі денсаулық саласы экологиялық қиын мегаполис жағдайында өз жұмысында екі негізге тірек артады – диагностика және алдын алу. Диагностикалық  программалар  – бұл қазіргі алдын-алу медицинасының ең танымал бағыты. Дәрігер клиникалық материалдардың ауқымды көлемімен жұмыс істейді. Сондықтан ол көптеген қателер де жасауы мүмкін. Осының бәрі автоматтандырылған диагностикалық жүйелерді құру қажеттілігін тудырып отыр. Біздің курстық жобада осындай диагностикаға арналған, соның ішінде жүйке ауруларының алдын-алуға арналған СЖ қарастырылған. Жоба  - «дәрігер-невропатолог» жұмысын автоматтандыру мәселесіне арналған.

Мәселе сипаты. Мысал ретінде біз «дәрігер-невропатолог» жұмысын  қарастырдық. Жүйке аурулары  - қазіргі заман адамының нағыз дерті десе де болады. Шын мәнінде «хроникалық шаршау синдромы» деп аталатын терминде «неврастения» деп аталатын ауру жасырылған. Осы және жүйке ауруларының басқа түрлерін де жеңу мүмкіндіктері бар. Оны қалай жеңуді білу үшін оның алдын -алу қажет. Ал қазіргі заманғы алдын-алу шаралары мен диагностика ауруды жеңудегі бірінші қадам. Диагноз жекелеген қан тамырлары мен күре тамырлада болатын белгілерді анықтаудан басталады. Ең алдымен аурудың атеросклероз деген түріне аорта деп аталатын күре тамыр шалдығады, әсіресе оның белгілі бір бөлігі. Атеросклероздың ең көп тараған түріне  - «инфаркт миокарда» деп аталатын түрі жатады. Диагнозды  стеноз белгілерінің бір-бірімен астасқан түрлері болғанда қояды, немесе жүрек тамырларының не оның күре тамырының ақауларында да қояды. Ол өз жасынан көп кәрі көрінетін адамдарда, тұқым қуалышылығы бар адамдарда кездеседі. Сонымен қатар риск (тәуекел) белгілерін де есепке алу қажет.   

Мәселені қою. Осы «дәрігер-невропатолог» деген салаға қатысты білімдерді пайдалану үлгілері мен әдістерін қолдана отырып, программа жасап оны жөндеу қажет.

Есепті шешу мазмұнының жалпы сипаты. СЖ құруда оны жасаудың белгілі бір технологиясы қалыптасқан. Ол алты кезеңді қамтиды. Оларға: ұқсастыру (идентификация), концептуалдау, қалыптастыру (формализация), орындау, тесттеу, іс жүзінде пайдалану кіреді. Идентификация кезеңінде шешілуге қажетті мәселе, мақсаттар, ресурстар, мамандар, пайдаланушы категориялары анықталады. Осы кезеңде шешілетін есеп, жобаға қатысушы адамдар, олардың атқаратын қызметтері көрсетіледі. Ал концептуалдау кезеңінде сала аумағының мазмұнды талдауы жүргізіледі, онда қолданылатын ұғымдар мен олардың өзара қарым-қатынастары анықталады, есепті шешуге қажетті әдістер таңдалып алынады. Содан соң қалыптастыру кезеңінде пайдаланылатын барлық білімдер түрлері анықталады, негізгі ұғымдар қалыпқа келтіріледі, білімдерді таратылу тәсілдері бейнеленеді, жүйе жұмысы үлгіленеді, тұрақталған ұғымдар жүйесінің мақсаттарға сәйкестігі тексеріледі, білімдерді пайдалану және өзгерту тәсілдері мен шешу әдістері анықталады. Ал орындау кезеңінде маман адам жүйенің білім қорын білімдермен толтырады. Тесттеу кезеңінде  сарапшы маман (және білім инженері) сұқбаттық  және түсіндіру құралдарын пайдалана отырып, интербелсенді режимінде СЖ білгірлігін тексереді. Тестілеу үдерісі  жүйе білгірлігі белгілі бір деңгейге жеткенде тоқтатылады. Ол деңгейді сарапшы маман адам анықтайды. Енді іс жүзінде пайдалану кезеңінде жүйенің соңғы пайдаланушыларға жарамдылығы тексеріледі.   

Есепті шешуде қолданылатын білімдердің үлгілері. Сарапшы жүйелерді құрғанда білімдерді пайдалану үлгілері қолданылады. Ондай үлгілерге: логикалық үлгі, продукциялық үлгі, фреймді пайдаланатын үлгі, семантикалық желі үлгісі жатады.  «Продукциялық жүйе» деп аталатын ұғымға қазіргі уақытта нағыз ғылыми түсініктеме беру қиын. Көбінде продукциялық жүйе деп - С-деген хабарлар құрылымына әсер ететін ұйымдастырылған немесе жекеше түрдегі программа жиындарының белгілі-бір әдіспен ұйымдастырылған есептеу іс барысын айтамыз. Бұл программалар: орындалу шарты С-құрылымына деген кейбір талап-тілектерден тұрса, ал іс-әрекет - осы талаптар орындалған жағдайда,  істелуге тиісті жұмысты білдіреді. Жалпы жағдайда продукция деп мынадай өрнекті айтамыз: (i);  Q;  P;  A => B;   N  мұндағы  (i) - продукция аты, Q - продукцияны қолдану аймағы,  P-продукция ядросын қолдану деңгейі,  A => B - продукция ядросы, N - продукция аяқталғаннан кейінгі орындалуға тиісті жағдайлар.  Продукцияның негізгі элементі оның ядросы болып табылады. Продукция талдау секвенция белгісінің екі жағында тұрған А мен В-ны қабылдайтын мәндеріне байланысты болады. Егер А “шын” мағнасында болса, онда В-да “шын” мағынасын қабылдап іске қосылады. Продукцияның негізгі элементі болатын оның ядросын атқару қызметіне байланысты бірнеше топтарға бөлуге болады [6].

Іздеу әдісін таңдау. Шығару механизмі – ол жұмысшы зердесінде бар деректер мен білімдер негізінде жаңа білімдерді шығара алатын тұжырымдау механизмі. Ол үшін дедуктивттік логикалық қорытынды шығару немесе фреймдер желісі мен семантикалық торлар желісінде пайдаланылатын іздеу механизмдері бар программалық іске асырылған механизмдер қолданылады.  Продукциялық жүйелерде мақсаттан бастап іздеу (таңдаудың тура әдісі) және деректерден бастап іздеу әдістері қолданылады.  Біз өз мысалымыз үшін тура таңдау әдісін пайдаландық. 

 

3 Курстық жобаны орындау мысалы

 

3.1 Ойын программасын орындау мысалы

 

Python программасын  geneated.pl  файлына жазамыз. Біз оны ПРОЛОГ интерпретаторына береміз, және шешімді query  функциясын шақыру арқылы аламыз. Есепті шешу үшін тек ПРОЛОГ өз тілін пайдаландық. Бізге Python + ПРОЛОГ мыналарды береді:

1)     ПРОЛОГ-программасын сыртынан басқару мүмкіндігі бар.

2)     Параметрлер сырттан беріледі.

3)     Біздің қолымызда ПРОЛОГпен жұмыс істейтін қолданба емес, қолданбаны құруға арналаған аспап бар.

4)     Python тілінде қатарлармен өте ыңғайлы түрде жұмыс істеуге болады, онда кеңейтулердің көптеген түрлері бар, және оған логикалық программалауды қосыңыз, сіз өте қуатты құралды аласыз.  

5)     Көптілді жүйелерді құруда тәжірибе жинақтауға болады.

Біз программаны бірде бір ағылшын сөзін қоспастан, тек орыс тілінде жазуды ұйғардық, бірақ ол үшін не() деген сөзді ағылшынның not() сөзіне ауыстырдық. Программаның кейбір бөліктері мен олардың кілт сөздерін  келтірдік.

Қосымша функциялар

def consultFromString(string, prologEngine):

 

3    ## В данной системе нет необходимости

4    ## ставить точку в конце каждого утверждения.

5    ## Потому разобьем строку по символу '.' и составим

6    ## список из утверждений.

7    ##

8    ## Передаем системе swiprolog каждый содержит этого списка.

9    ## Согласно разбиению последний содержит списка пустая строка.

10 ##

11 ## Ее мы НЕ передаем системе swi-prolog.

12 ## об этом гласит "[:-1]"

13 ##

14 ## К сожалению мы не можем передать список целиком,

15 ## потому что система swi-prolog отдельно обрабатывает каждое утверждение.

16  

17 for str in string.split('.')[: — 1]:

18 prologEngine.assertz(str)

19  

20 def ne2not(string):

21 ## Для того чтобы,

22 ## не было смеси

23 ## заменим в программе 'not()' на 'не()'

24 ## признаем что это нарушение стандарта,

25 ## но многие prolog системы и без того

26 ## бессовестно его нарушают

27 ## При скармливании ПРОЛОГ—программы, интерпретатору,

28 ## придется совершить обратное преобразование.

29  

30 not_string = 'not('

31 ne_string = 'не('

32  

33 if(ne_string in string):

34        result = string.replace(ne_string, not_string)

35        return result

36 return string

Іздеу

1  ## Опишем функции Python для каждого вида поиска

2   

3  from time import *

4    # для точного замера времени

5   

6  def depthSearch(situation, prologEngine):

7   t1 = clock()

8    results = list(prologEngine.query(

9                                 '''поиск_в_глубину( %s, Pешение );;%(situation)))

10   t2 = clock()

11   pretty_print(results, 'ПРОСТОЙ_ПОИСК_В_ГЛУБИНУ_БЕЗ_

ЗАЦИКЛИВАНИЯ', t2 - t1);

12                       

13                      def iterativeDepeeng_1(situation, prologEngine):

14   t1 = clock()

15    results = list(prologEngine.query(

16    ”’итеративное_углубление_грубое( %s, Pешение )’”%(situation)))

17    t2 = clock()

18    pretty_print(results, 'ИТЕРАТИВНОЕ_УГЛУБЛЕНИЕ_(ГРУБОЕ)',t2 -t1);

19     

20    def iterativeDepeeng_2(situation, prologEngine):

21    t1 = clock()

22    results = list(prologEngine.query(

23    '''итеративное_углубление_изящное( %s, Pешение )’”%(situation)))

24    t2 = clock()

25    pretty_print(results, 'ИТЕРАТИВНОЕ_УГЛУБЛЕНИЕ_(ИЗЯЩНОЕ)',t2 - t1);

26     

27    def breadthSearch(situation, prologEngine):

28    t1 = clock()

29    results = list(prologEngine.query(

30    '''поиск_в_ширину( %s, Pешение )’”%(situation)))

31    t2 = clock()

32    pretty_print(results, 'ПОИСК_В_ШИРИНУ',t2 - t1);

Жұмысшы бөлігі

1  from pyswip import Prolog

2    ## импортируем из pyswip класс Prolog

3   

4         if(_____ name____ == '____ main   '):

5    # Выполняем в пространсве имен_______ main___

6   

7    ## сформируем строку, содержащую

8    ## программу на ПРОЛОГе

9   

10   programString = string_With_Prolog_Std_Lib \

11    + bankConditionString \

12  + boardConditionString \

13    + depthSearchString \

14   + iterativeDepeengString_1 \

15   + iterativeDepeengString_2 \

16   + breadthSearchString \

17                       

18    ## переведем нашу строку с 'русского' на стандарт языка

19    ## всего лишь заменив все вхождения слова 'не' не слово 'not'

20                       

21    prologString = ne2not(programString)

22                       

23     ## запишем эту строку на всяий случай в файл,

24     ## этот файл можно будет запустить в системе SwiProlog

25                       

26    preambul = '''%% для SWI-prolog

27                      %% Эта программа была сгенерирована автоматически

28                      %% не пытайтесь ее редактировать

29                      %% запросы задавать в виде:

30                      %% было(Положение), поиск_в_глубину( Положение, Pешение ).

31                      %% было(Положение), итеративное_углубление_грубое( Положение, Pешение ).

32                      %% было(Положение), итеративное_углубление_изящное( Положение, Pешение

).

33                      %% было(Положение), поиск_в_ширину( Положение, Pешение ).

34                       

35     '''

36                       

37    fileWithPrologString = open('geneated.pl', 'w')

38    fileWithPrologString.write(preambul + prologString)

39   fileWithPrologString.close()

40                       

41   ## ТУТ НАЧИНАЕТСЯ ВОЛШЕБСТВО

42                       

43   ## Создадим объект класса Prolog (из pyswip)

44   prologEngine = Prolog()

45                       

46   ## отдадим строку с программой интерпертатору ПРОЛОГа

47   consultFromString(prologString, prologEngine)

48                       

49   ## Опишем начальную ситуацию

50   situation = "[берег_1,^^берег_1,^^берег_1,^^берег_1]"

51                       

52   ## Произведем 'ПРОСТОЙ ПОИСК В ГЛУБИНУ БЕЗ ЗАЦИКЛИВАНИЯ'

53   depthSearch(situation, prologEngine)

54                       

55   ## Произведем 'ИТЕРАТИВНОЕ УГЛУБЛЕНИЕ (ГРУБОЕ)'

56   iterativeDepeeng_1(situation, prologEngine)

57                       

58   ## Произведем 'ИТЕРАТИВНОЕ УГЛУБЛЕНИЕ (ИЗЯЩНОЕ)'

59   iterativeDepeeng_2(situation, prologEngine)

60                       

61   ## Произведем 'ПОИСК В ШИРИНУ'

62   breadthSearch(situation, prologEngine)

 

3.2 Сарапшы жүйелерді құру мысалы

 

Құрылатын сарапшы жүйенің білім қорында пациент пен дәрігер-невропатолог арасында болатын сұқбат бар. Мысал ретінде білім қорындағы бір ереженің түрін келтірейік  (7 суретті қара).

 

 

7 сурет - Продукциялық жүйе ядросының графы

 

Продукциялық жүйе ядросының формулалық түрі мынандай: А1 ЖƏНЕ А2 ЖƏНЕ А3  Þ В1 ,  мұндағы  A1-  бас ауруының белгісі, А2 – көздің қызаруы, А3- ұйқы бұзылуы, В1 – «сақина(мигрень)» деген ауру түрі. Программаның жалпы қисыны мынандай: пациент негізгі сұқбатта берілетін сұрақтарға жауап берген соң, оның жауаптары  «диагнозды алу» батырмасына қосақталған процедураға беріледі де, онда білім қорында талдаулар жүргізіледі.

 

 

8 сурет - Пайдаланушы мен жүйе сұқбат терезесі

 

Сонымен бірге пациент кеңестер алады және өз диагнозын қайталап сұрап алуына болады. Енді диагностикаға бару үшін  сіз негізгі экранға қайтадан барасыз да оны басасыз. Пайдаланушы мен жүйе арасындағы сұқбат терезесі 8 суретте келтірілген. Пайдаланушы симптом түрін таңдап алады да, «Получить Диагноз» батырмасын басады. Содан соң диагноз түрі көрсетілген жаңа терезе ашылады (9 суретті қара).  Одан сіз өз диагнозыңызды білесіз. Сіз сонымен қатар «Рекомендации» батырмасын басу арқылы ауруды емдеу жөнінде кеңестер де алуыңызға болады. Егер сіз өзіңізге қойылған диагнозды түсінбесеңіз, онда «Почему у меня такой диагноз?» деген батырманы басасыз (10 суретті қара). Егер сіз  өз симптом түрін қате енгізсеңіз, онда диагоностика басына қайтадан барасыз. Ол үшін  «Вернуться к началу диагностики» деген батырманы басасыз. Сіз кез-келген уақытта жүйеден шығуыңызға болады. Ол үшін «Выход» батырмасын немесе программаның кез-келген терезесінде бар, оң жақ жоғарғы бұрышта орналасқан қызыл крестті бассаңыз болды сіз жүйеден шығасыз.   

 

 

9 сурет - Диагноз терезесі

 

 

10 сурет - Диагнозды қайтадан сұрау терезесі

 

Аталған мысалда жобаны іске асыру құралы есебінде Дельфий программалық ортасы таңдалып алынған. Сондықтан біз мысал ретінде бақылау ережелерін іске асыратын  программаның кейбір бөліктерін ғана келтірдік.  Білім қорындағы басқа ережелер осыған ұқсас үлгіленеді.

 «Дәрігер-невропатолог сарапшы жүйесі» есебінің листинг мысалы.

procedure TForm2.BitBtn1Click(Sender: TObject);

begin

Form3.Show;

Form2.Close;

Form3.ClientWidth:=361;

Bolezni[1]:='У Вас первые признаки мигрени.';

Bolezni[2]:='У Вас первые признаки неврастении.';

Bolezni[3]:='Атеросклероз сосудов головного мозга.';

Bolezni[4]:='Ваш диагноз не точен. Вам следует пройти обследование.';

Simptomi[1]:='Высокое давление';

Simptomi[2]:='Резкие головные боли';

Simptomi[3]:='Покраснение глаз';

Simptomi[4]:='Расстройство сна';

Simptomi[5]:='Нервозность';

Simptomi[6]:='Потливость и сухость во рту';

Simptomi[7]:='Ослабление внимания';

Simptomi[8]:='Головокружения';

Simptomi[9]:='Слабость';

 //Бірінші ауру түрінің ережесі

 if  ((Radiogroup2.ItemIndex=0)  and  // основные симптомы

 (Radiogroup3.ItemIndex=0) and (Radiogroup4.ItemIndex=0))

and   ((Radiogroup8.ItemIndex=0) or (Radiogroup8.ItemIndex=-1)

  or (Radiogroup8.ItemIndex=1))   //побочные симптомы

and   ((Radiogroup9.ItemIndex=0) or (Radiogroup9.ItemIndex=-1)

  or (Radiogroup9.ItemIndex=1))  //побочные симптомы

and  ((Radiogroup1.ItemIndex=-1)or (Radiogroup1.ItemIndex=1)) and

  ((Radiogroup5.ItemIndex=-1) or (Radiogroup5.ItemIndex=1)) and

  ((Radiogroup6.ItemIndex=-1)or (Radiogroup6.ItemIndex=1))  and

   ((Radiogroup7.ItemIndex=-1) or (Radiogroup7.ItemIndex=1))

then  Form3.Edit1.Text:=Bolezni[1]

 else

// Екінші ауру түрінің ережесі

 if  ((Radiogroup4.ItemIndex=0)  and  // основные симптомы

 (Radiogroup5.ItemIndex=0) and (Radiogroup6.ItemIndex=0))and

  (Radiogroup7.ItemIndex=0)

and   ((Radiogroup8.ItemIndex=0) or (Radiogroup8.ItemIndex=-1)

  or (Radiogroup8.ItemIndex=1))   //побочные симптомы

and   ((Radiogroup9.ItemIndex=0) or (Radiogroup9.ItemIndex=-1)

  or (Radiogroup9.ItemIndex=1))  //побочные симптомы

and   ((Radiogroup3.ItemIndex=0) or (Radiogroup3.ItemIndex=-1)

  or (Radiogroup3.ItemIndex=1))  //побочные симптомы

and  ((Radiogroup1.ItemIndex=-1) or (Radiogroup1.ItemIndex=1)) and

  ((Radiogroup2.ItemIndex=-1)or(Radiogroup2.ItemIndex=1))

then  Form3.Edit1.Text:=Bolezni[2]

else

//Үшінші ауру түрінің ережесі

begin

if  ((Radiogroup1.ItemIndex=0)  and  // основные симптомы

 (Radiogroup2.ItemIndex=0) and (Radiogroup4.ItemIndex=0))and

  (Radiogroup7.ItemIndex=0)

and   ((Radiogroup8.ItemIndex=0) or (Radiogroup8.ItemIndex=-1)

  or (Radiogroup8.ItemIndex=1))   //побочные симптомы

and   ((Radiogroup3.ItemIndex=0) or (Radiogroup3.ItemIndex=-1)

  or (Radiogroup3.ItemIndex=1))  //побочные симптомы

and   ((Radiogroup9.ItemIndex=0) or (Radiogroup9.ItemIndex=-1)

  or (Radiogroup9.ItemIndex=1))  //побочные симптомы

and  ((Radiogroup5.ItemIndex=-1) or (Radiogroup5.ItemIndex=1)) and

  ((Radiogroup6.ItemIndex=-1)or(Radiogroup6.ItemIndex=1))

  then  Form3.Edit1.Text:=Bolezni[3] 

else

      Form3.Edit1.Text:=Bolezni[4];

end;

end;

 

4 Пайдаланушыға, жүйелік программалаушыға, жүйелік әкімгерге нұсқаулықтар құру

 

Егер жоба ойын программасына арналса, онда нұсқаулықтар қарапайым пайдаланушыға, жүйелік программалаушыға арналып жазылады. Егер жоба сарапшы жүйелерді жобалауға арналып құрылса, онда ол қарапайым пайдаланушыға, жүйелік программалаушыға, жүйелік әкімгерге, осы саланың маманы пайдаланушысына арналып жазылады. 

 

5 Курстық жобаның қорытынды бөлімін құру

 

5.1 Зерделік есептердің қорытынды бөлімін құру

 

Курстық жобаның негізгі кезеңдерін орындап болған соң, студент шешілген мәселе жайында белгілі бір қорытындылар жазуы керек. Қорытындыда курстық жобада қарастырылған сұрақтардың бәрі қамтылуы қажет. Ойын программалары бойынша онда қойылған мәселедегі проблемадан бастап, программалау тілін таңдау негіздемесіне дейін белгілі бір түйіндемелер болуы керек.  Сонымен бірге қорытындыда есепті шешудегі әдістер, іске асыру алгоритмі, жобадан кейінгі алынған нәтижелер жайлы да мәліметтер болуы қажет. Мысалы «Қасқыр, ешкі және қырыққабат»  есебіндегі қорытындыны келтірейік.

Қорытынды. Ойын программасын программалағанда ойыншының әрекетін ойын тәсілдерімен береді. Ойын программасын  жазу үшін  ойын құрылымын құру, яғни, құрылымның өзін құратын ұғымдарды анықтау қажет. Ал ойын құрылымы іздеу әдістеріне байланысты. Ойын программасының мысалы ретінде біз классикалық «Қасқыр, ешкі және қырыққабат» ойынын таңдадық. Оны шешу үшін  «Граф автомата Мура» деген тәсілді қолдандық. Ал оны орындау үшін Python және  ПРОЛОГ симбиозын пайдаландық.  Ол бізге әртүрлі іздеу түрлеріндегі уақытты шамалауға мүмкіндік берді. Біз бірнеше парадигма программаларының бір-бірімен қосылу тәжірибесін жинақтадық. Сонымен бірге біз шығаруды өзіміз басқардық, оны файлға емес, әртүрлі түске бояу арқылы терезенің мәтіндік бөлігіне бағыттадық. ПРОЛОГ — программалаудың логикалық түрі. Бұл парадигманы, егер сіз басқа тілді білмесеңіз қабылдау оңай.  Жапон елінде оны мектепте өтеді. Біздің олардан неміз кем? Біз өз жобамызды барлық стандарттарды бұза отырып, орыс тілінде жаздық. Біздің көздеген мақсатымыз мектеп оқушыларына арналған  логикалық программалаудың бір түрін бергіміз келді. Орыс тілін пайдалану оқыту үдерісін жеңілдетер еді. Біз кеңістіктегі күйлер стратегиясымен таныстық.  Бұл  өте ыңғайлы екен. Әр іздеу үшін алдын ала есепті қайтадан қалыптастырмайсыз, оған өзгертулерді енгізбейсіз. Жайылып іздеу жадыны үнемдеуге пайдалы, бірақ уақытты көп қажет етеді.  Оның кейбір жөнделген түрлері жақсы нәтижелер береді, дегенмен, программалардың өздерін оқу қиындай түседі. Тереңнен іздеу тәсілінде жадыны пайдалану қиын, бірақ уақыт жағынан ұтамыз. Ал программалардың оқылу жағына келсек, онда жағдай алдыңғыдан да қиын. Егер кіріктірілген предикаттарды пайдаланбаса мәселе шешілмеуі де мүмкін. Біздің ойымызша әртүрлі есептер үшін әртүрлі іздеу әдістері жарайды, және таңдау мақсатқа байланысты болуы керек. Сонымен жобаны құру нәтижесінде біз ойын программаларындағы мәселені қоюды үйрендік, оны шешудің әртүрлі әдістерімен таныстық, осындай есептерді шешуге арналған программалау ортасын таңдауды үйрендік. Ең соңында логикалық программалау стилінде программалауды үйрендік деуге болады.

 

5.2 Сарапшы жүйелер қорытындысын құру

 

Сарапшы жүйелерді құрғанда қорытындыда курстық жобада қарастырылған сұрақтардың бәрі қамтылуы қажет. СЖ бойынша онда қойылған мәселедегі проблемадан бастап, программалау тілін таңдау негіздемесіне дейін белгілі бір түйіндемелер болуы керек.  Сонымен бірге қорытындыда есепті шешудегі әдістер,  таңдап алынған білім үлгілері, іске асыру алгоритмі, жобадан кейінгі алынған нәтижелер жайлы да мәліметтер болуы қажет. Нәтижелер кеңес беру, болжау, диагностика сияқты болуы мүмкін. Мысалы «Сарапшы жүйе: Дәрігер-невропатолог» есебіндегі қорытындыны келтірейік.

Қорытынды. Сарапшы жүйедегi программалардың жасанды зерде тарауларындағы басқа бағыттардан ерекшелейтін қасиеттерiне мыналарды жатқызамыз: бұл жүйедегi программалардың құрылымы қиын, iс жүзiнде маңызы бар, шешiм жолын табуы қиын есептердi шығаруға қолданылады; жүйе өзiнiң тапқан шешiмi туралы түсiнiгiн пайдаланушыға сапалы деңгейде түсiндiрiп бере алуы керек. Денсаулық саласы – сарапшы жүйелерді ендіретін басты саланың бірі. Жүйке аурулары  - қазіргі заман адамының нағыз дерті десе де болады. Шын мәнінде  «хроникалық шаршау синдромы» деп аталатын терминде «неврастения» деп аталатын ауру жасырылған. Осы және жүйке ауруларының басқа түрлерін де жеңуге болады.  Оны қалай жеңуді білу үшін оның алдын алу қажет. Ал қазіргі заманғы алдын-алу шаралары мен диагностика ауруды жеңудегі бірінші қадам. Сонымен, қойылған мәселе бойынша шешуді біз сарапшы жүйені жобалаудан бастадық. Соның нәтижесінде сала аумағына қатысты білімдер мен деректерді жіктеуді, білімдер үлгілерін пайдалануды, шығару механизмдерін қолдануды үйрендік. Демек, біз жасанды зерденің бір бағыты болып саналатын қиын да күрделі Сарапшы жүйелерді жобалауды нақты есеп мәселесімен ұштастырып шешуге талпыныс жасадық. Біздің пікірімізше сарапшы жүйелер бізге қажет. Өйткені ондағы бар әдістер мен үлгілерді пайдалана отырып, біз әлі де қалыпқа сыймайтын денсаулық саласына қатысты көптеген есептерді шеше аламыз. Оның мынандай ерекшеліктері бар: адам маманды ауыр қиын жұмыстардан босатып, оның білімін пайдалану нәтижесінде адам келетін шешімнен кем түспейтін шешімдер алу мүмкіндігі бар. Сонымен бірге кезкелген пайдаланушыға виртуалды маман дәрігерге қатынау мүмкіндігін, мысалы  Internet желісі арқылы бере аламыз.  

 

6 Курстық жобаның  тақырыптарының тізімі  

 

6.1 Зерделік жүйелер тақырыптары

                    

1.        ЖӘНЕ/НЕМЕСЕ графымен  сипатталған  ойын программасын құру.

2.        Редукция әдісіне арналған компьютерлік ойын программасын құру.

3.        «Робот алманы іздеді» алгоритміне  ойын программасын құру.

4.        ДҚФ түріндегі «Робот гүлді іздеді» ойын программасын құру.

5.        Толық қарауға  «Робот студентті табады» программасын құру.

6.        Туристке анықтамалық мәлімет беретін ПРОЛОГ программасын құру.  

7.        Туысқандақ қатынасты білдіретін ПРОЛОГ тілінде Дерекқор құру.

8.        ПРОЛОГ тілінде «Шежіре» Дерекқорын құру.

9.        «Кресттер –Нөлдер» ойынын ПРОЛОГ тілінде құру.

10.   ПРОЛОГ тілінде  «Теңіз шабуылы» ойынына программа құру.

11.   ПРОЛОГ тілінде  «Тәтті кулинар» маманы кеңесіне программа құру.

12.   «Форд» маркалы автокөліктер жайында ПРОЛОГта Дерекқор құру.

13.   ЛИСП тілінде «Алматы айлық ауа райын болжау» программасын құру. 

14.   «Өсекші тілі» деген ЛИСП тілінде программа құру. 

15.   «Жануарлар» деп аталатын ЛИСП тілінде программа құру.  

16.   «Реверси» ойынын ЛИСП тілінде құру.

17.   «Рикошет» ойынын ЛИСП тілінде құру.

18.   ПРОЛОГ тілінде  «Күн планеталары» анықтамалық  программа құру.

19.   ЛИСП тілінде «Ақпараттану көмекшісі» Дерекқор құру.

20.   «Теңіз шабуылы» ойынын ПРОЛОГ тілінде құру.

21.   Нейрон желілері бойынша оқытатын үйрену программасын құру.

22.   Сөздіктің шаблондары бойынша үйрену программасын құру.

23.   Қарапайым мәтінді танитын үйрену программасын құру.

24.   ПРОЛОГ тілінде  «Күн планеталары» анықтамалық  программа құру.

25.   ПРОЛОГ тілінде  «АЭжБУ» анықтамалық  программа құру.

26.   ПРОЛОГ тілінде «АЭжБУабитуриентіне көмек» программа құру.

27.   ПРОЛОГ тілінде «КТ кафедрасы көмегі» программа құру.

28.   ЛИСП тілінде «АЭжБУ сырттан оқу көмекшісі» Дерекқор құру.

29.   ЛИСП тілінде «АЭжБУ кітапхана көмекшісі» Дерекқор құру.

30.   ЛИСП тілінде «АЭжБУ қашықтықтан оқу көмекшісі» Дерекқор құру.

  

6.2 Сарапшы жүйелер тақырыптары

 

Сарапшы жүйелерді мына тақырыптар бойынша жобалау қажет:

жоспарлау

1.                     «Электрондық құдағи» саласында продукциялық үлгіні жобалау.

2.                      «Косметика қызметін бағалау» СЖнің құрамдас бөліктерін құру.

3.                      «Риэлтор» фреймдік үлгіні жобалау.

4.                     «Сауда орталығы» фреймдік үлгіні жобалау.

5.                      «Еңбек биржасы» СЖнің құрамдас бөліктерін құру.

диагностика

6.                     «Көз дәрігері» продукциялық үлгіні жобалау.

7.                     «Кітапхана» саласы бойынша фреймдік үлгіні жобалау.

8.                      «Маклер» продукциялық үлгіні жобалау.

9.                     «Темір жол» фреймдік үлгіні жобалау.

10.                 «Терапевт» саласы бойынша семантикалық желі үлгісін жобалау.

11.                 «Автомеханик» семантикалық тор үлгісін жобалау.

болжау

12.                  «Ипотекадан көмекші» СЖнің құрамдас бөліктерін құру.

13.                 «Автозаправка» фреймдік үлгіні жобалау.

14.                 Кәсіпорын қаржылық болжауына арналған СЖ құру.

15.                 Автокөлік кәсіпорнынның логистика бөліміне СЖ құру.

талдау

16.                 «Ресторан» фреймдік үлгіні жобалау.

17.                 «Аэропорт» фреймдік үлгіні жобалау.

18.                 «Турист» семантикалық тор үлгісін жобалау.

19.                 «Университет» семантикалық тор үлгісін жобалау.

20.                 Шағын кәсіпорынының активтерін бағалайтын СЖ құру.

оқыту

21.                 «Зоопарк» семантикалық тор үлгісін жобалау.

22.                 «Ақпараттық жүйелер» фреймдік үлгіні жобалау.

23.                 Қазақ тілінде қарапайым сөйлемді түсінетін СЖ құру.

24.                 «ЖЗЖ» пәнінің терминдерін үйрететін СЖ құру.

25.                 Нейрон желілері әдістерін үйрететін СЖ құру.

26.                 Нейрон желілері  пакеттерін талдайтын  СЖ құру.

Бейнені тану

27.                 Дыбыс әуенін танитын СЖ құру.

28.                 Қарапайым геометриялық фигураларды танитын СЖ құру.

29.                 Жануарлардың дыбыстарын танитын СЖ құру.

30.                 Қазақ тілінің сөйлемдерін танитын СЖ құру.  

 

Әдебиеттер тізімі

 

1.Нильсон Н. Искусственный интеллект. Методы поиска решений./ Пер. с анг. –М.:Мир, 1973. - С. 270

2.     Люгер, Джордж,,Ф. Искусственный интеллект: стратегии и методы решения сложных проблем.- М:2003.- 864с.

3.Большакова. И., Мальковский М. Г., Пильщиков В. Н.  Искусственный интеллект. Алгоритмы эвристического поиска (учебное пособие) - М.: Издательский отдел факультета ВМК МГУ, 2002.- 83 с.

4.Логическое программирование http: //ru.wukipedia.org/wiki/.   

5.Джексон Питер, Введение в экспертные системы./Пер.с англ.: Уч.пособие, 2001. – 624 с.

6.Ахметова М. Функционалдық-логикалық программалау және жасанды зерде жүйелері: Оқу құралы. -  Алматы, «Бастау» баспасы. 2012.- 330 б.

 

Мазмұны

 

 

Кіріспе

3

1

Курстық жоба жайлы жалпы мағлұматтар

4

1.1

Курстық жобаның негізгі бөлімдері

4

1.2

Курстық жобаның негізгі кезеңдері

5

1.3

Курстық жоба есебінің құрылымы

5

1.4

Курстық жобаға тапсырма

7

2

Сала аумағының сипаты

7

2.1

Іздеу әдістері бар ойын программасының сипаты

7

2.2

Есепті шешу алгоритмін құру

8

2.3

Сарапшы жүйе құру сипаты

15

3

Курстық жобаны орындау мысалы

17

3.1

Ойын программасын орындау мысалы

17

3.2

Сарапшы жүйені орындау мысалы

20

4

Пайдаланушыға, жүйелік программалаушыға, жүйелік әкімгерге нұсқаулықтар

24

5

Курстық жобаның қорытындыларын құру 

24

5.1

Зерделік есептердің қорытындыларын құру 

24

5.2

Сарапшы жүйенінің  қорытындыларын құру 

25

6

Курстық жоба тақырыптары

27

6.1

Зерделік есептердің тақырыптары

27

6.2

Сарапшы жүйенінің  тақырыптары

28

 

Әдебиеттер тізімі

29