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




y=ax2+bx+c

File->New

(deffunction qv(?a?b?c?x)

(+(*?a?x?x) (*?b?x)?c

)

Buffer->Load Buffer

CLIPS> (qv 2 3 -1 2)

 

y=cos (кВ.к (x^2-2*x+15x^3)-1)-sin(tg(x+28))

(deffunction f

(-(cos(-(sqrt(+(*?x?x)(* -2?x)(*15?x?x?x)))1)))

(sin(tan(+?x 28)))

)

 

(defglobal)

?*x* = 7

?*y* = (+?*x* 5)

?*z* = sss

)

CLIPS>?*y* à12

CLIPS (+?*x*?*y*) à19

 

ПРАВИЛА

 

Отец ольги андрей, отец петра андрей, отец лены иван, отец кати иван

File->New

(deffacts ot

(ot olga andr)

(ot petr andr)

(ot lena ivan)

(ot katya ivan)

(defrule deti

ot?an andr)

=>

(printout t?an crlf)

)

Buffer->Load Buffer

Execution->Reset, Run

 

Конструктор с именем дети задает правила. В этом правиле одна предпосылка.

 

(deffacts data

(a) (b) (c) (a 3) (b 3) (c 3) (a 5) (b 5) (c 7) (d 9))

(defrule str

(or (a) (and (b) (c) (d))) \\проверяет наличие фактов

(not (e?y)) \\не должно быть пары с «е»

(a?x) \\должна существовать хотя бы одна пара начинающ. с «а»

(test (<?x 5)) \\результат сравнивается с «5»

(exists (a?t) (b?t) (c?t)) \\ограничивает рассмотрение перечисленных в ней пар

(forall (a?z) (b?z)) \\для любой пары (az) в базе фактов должна сущ пары (bz) и наоборот

=>

(printout t “x=”?x crlf)

 

(deffacts simv

(a) (b) (c) (e) (f))

(defrule simv_log

(logical (a))

(logical (b))

=>(assert (d)))

 

(deffacts goroda

(Moskva) (SPB) (Kiev) (Odessa) (Parig) (London)

(defrule plan1

(declare (salience 100))

?t<- (SPB)

?t1<- (Odessa)

=>

(retreact?t) (retract?t1))

(defrule plan2

(declare (salience 150))

?t<- (SPB)

?t1<- (Odessa)

=>

(retract?t) (retract?t1) (assert (Odessa)))

 

Занятие 1

(deftemplate student

 

(slot name(type STRING))

(slot age(type INTEGER))

(slot university(type STRING))

(slot fakultet(type STRING))

(slot kurs(type INTEGER))

(slot group(type INTEGER)))

 

(deffacts student

 

(student(name "Alekseev A.")(age 19)(university "SGU")(fakultet "EF")(kurs 1)(group 1))

(student(name "Aleksandrov S.")(age 20)(university "SGU")(fakultet "EF")(kurs 1)(group 2))

(student(name "Borisov N.")(age 19)(university "MGU")(fakultet "YURF")(kurs 1)(group 1))

(student(name "Vlasov K.")(age 20)(university "SGA")(fakultet "EF")(kurs 1)(group 1))

(student(name "Gavrilov A.")(age 20)(university "MGU")(fakultet "EF")(kurs 2)(group 3))

(student(name "Drozdov A.")(age 19)(university "SGA")(fakultet "YURF")(kurs 1)(group 3))

(student(name "Eliseev E.")(age 19)(university "SGU")(fakultet "YURF")(kurs 1)(group 2))

(student(name "Ignatiev P.")(age 20)(university "SGA")(fakultet "EF")(kurs 2)(group 2))

(student(name "Kazakov M.")(age 19)(university "MGU")(fakultet "YURF")(kurs 1)(group 1))

(student(name "Karpov M.")(age 20)(university "SGU")(fakultet "EF")(kurs 2)(group 3)))

 

Занятие 2

(1) (deffunction s1 ()

(integerp (+ 25 (- (/ 8 5) (/ 6 4)))) – целое ли

 

(deffunction s1 ()

(evenp (+(-(* 5 3) (/ 8 4)) 7)) – четное ли

 

(deffunction s1 ()

(oddp (+(-(/ 8 5) (/ 4 5)) (* 3 8))) – нечетное ли

 

(deffunction s1 ()

(max (/ 5 6) (/ 7 8) (/ 8 9))) - максимальное

 

(deffunction s1 ()

(min (/ 4 7) (/ 5 8) (/ 6 11))) - минимальное

 

(deffunction s1 ()

(tan (deg-rad 30))) - тангенс

 

(deffunction s1 ()

(sqrt (+ (- 27 (* 13 2)) (/ 160 2)))) – квадратный корень

 

(deffunction s1 ()

(log 10000)) – десятичный логарифм

 

(deffunction s1 ()

(pi))

 

(deffunction s1 ()

(str-compare "aaa aaa" "aa aa aa")) – сравнить строчки

 

(deffunction s1 ()

(str-length "a aa aaa aaaa")) – определить длину строки

 

(deffunction s1 ()

(str-cat "a" "aa" "aaa")) – объединить строчки

 

(deffunction s1 ()

(sub-string 3 5 "abcdefgh")) – выделить подстроку

(2)(deffunction qv (?x)

(-(* 3?x?x?x)(* 2?x) -6))

 

(deffunction qv (?x)

(- (* 2 (exp?x)) (* 4 (tan?x)))

 

(deffunction qv (?x)

(- (* 6 (log(*?x?x))) (* 2?x?x?x)))

 

(deffunction qv (?x)

(+ (sqrt?x) (cos(* 3?x)))

 

(deffunction qv (?x)

(+ (* 4 (sqrt (*?x?x?x))) (exp(* 3?x)) (*?x (log(+?x 2)))))

 

 

Извлечение подпоследовательности.

(subseq$ (create$ a1 a2 a3 a4 a5 a6 a7) 2 5

замена

(replace$ (create$ a1 a2 a3 a4 a5 a6 a7) 4 6 (create$ b1 b2 b3))

ответ

(a1 a2 a3 b1 b2 b3)

вставка

(insert$ (create$ a1 a2 a3 a4 a5 a6 a7) 3 (create$ a1 a2))

ответ

(a1 a2 a1 a2 a3 a4 a5 a6 a7)

определение числа элементов составной величины)

(length$ (create$ a b c))

ответ

(delete-member$ (create$ a a b b b c) b a) (c)

(delete-member$ (create$ a a b b b c) (create$ a b))

В CLIPS два различных групповых символа, которые используются для сопоставления полей в образцах. Эти групповые символы как место для подстановки некоторых данных, удовлетворяющим образцам. Групповой символ записывается? который соответствует любому значению сохраненному заданному полю. Групповой символ составного поля записывается $? и соответствует возможно пустой последовательности полей, сохраненном в составном поле. Групповые символы могут комбинироваться в любой последовательности. Нельзя использовать групповой символ составного поля для простых полей.

 

Функция создания связывания переменных:

bind – создание и связывание переменных

if – оператор ответвления

while…do – цикл с предусловием

prong – объединение нескольких действий в ранках одной логической команды.

prong$ - выполнение заданного набора действий над каждым элементом составного поля.

return – прерывание функций цикла правил и т.д.

break – прерывание текущей работы цикла функций 4, 5 и некоторых функций выполняющих действие над набором объектов без возвращения параметров.

switch – оператор множественного ответвления.

 

I summa vect

(deffunction x+y (?n $?x y)

(bind?i o) (bind $?x+y (create$))

(bind $?x (subseq$ $?xy 1?n))

(bind $?y (subseq$ $?xy (+?n 1)(* 2?n)))

(while (<?i?n) do

(bind?i (+?i (+?i 1))

(bind $?x+y (insert$ $?x+y?i (+(nth$?i $?x) (nth$?i $?y)))))

(return $?x+y))

 

Занятие 3

1) (deffacts World

(World Siniy Hold Smal)

(World Jeltbly Hot Big)

(World Zelen Hot Mid)

(World Fioletov Hold Mid)

(World Red Hot Smal)

(World Korichnev Hold Big)

(World Belbly Hold Smal)

(World Chernbly Hold Big)

(World Goluboy Hold Mid)

(World Orang Hot Mid))

(defrule Worlds

(World?W Hot?S)

=>

(printout t?W " "?S crlf))

2)(deffacts goroda

(Moskva) (SPb) (Kiev) (Odessa) (Parig) (London) (Smolensk) (Gagarin) (Vilnus) (Samara))

(defrule plant1

(declare (salience 100))

?t<- (SPb)

?t1<- (Parig)

=>

(retract?t) (retract?t1))

(defrule plant2

(declare (salience 150))

?t<- (Smolensk)

?t1<- (Moskva)

=>

(retract?t) (retract?t1))

(defrule plant3

(declare (salience 200))

?t<- (Kiev)

?t1<- (London)

=>

(retract?t) (retract?t1))

(defrule plant4

(declare (salience 250))

?t<- (Samara)

?t1<- (Gagarin)

=>

(retract?t) (retract?t1))

3) (deffacts abc

(a) (b) (c) (a 3) (b 3) (c 3) (a 5) (b 5) (c 7) (d 9))

(defrule abc1

(or (a) (and (b) (c) (d)))

(not (e?y))

(a?x)

(test (>?x 4))

(exists (a?t) (b?t) (c?t))

(forall (a?z) (b?z))

=>

(printout t "x="?x crlf))

Задание 4

(delete$ (create$ a1 b2 c3 d4) 1 1)

(nth$ 3 (create$ a1 b2 c3 d4))

(replace$ (create$ a1 a2 b1 b2 b3 c1 c2 c3 c4) 3 5 (create$ d1 d2 d3))

(delete$ (create$ a1 a2 b1 b2 b3 c1 c2 c3 c4) 3 5)

(insert$ (create$ a1 b2 c3 d4) 2 (create$ a2 a3))

(delete$ (create$ a a a b b b c c c d d d) 1 9)

(delete-member$ (create$ a b c a b d a b e) a b)

Задание 5

(defglobal

?*a* = 7

?*b* = (+?*a* 5)

?*c* = (+(/ 3?*a*)(*?*b* 4))

?*d* = "mama"

?*e* = "papa"

?*f* = (create$ mama papa)

?*g* = (create$ a1 a2 a3 a4 a5)

?*h* = mama

?*i* = papa

?*j* = 12.255)

 

1) (+?*a*?*b*)

2) (+?*a*?*b*?*c*)

3) (+?*a*?*b*?*c*?*j*)

4) (str-cat?*d*?*e*)

5) (str-cat?*d*?*h*)

6) (str-cat?*h*?*i*)

7) (>?*b*?*c*)

8) (str-compare?*d*?*e*)

9) (str-length(str-cat?*d*?*e*))

10) (create$?*f*?*g*)

 

Задание 6

1)(deffunction S (?n $?xy)

(bind?i 0) (bind?S 0)

(bind $?x (subseq$ $?xy 1?n))

(bind $?y (subseq$ $?xy (+?n 1)(* 2?n)))

(while (<?i?n) do

(bind?i (+?i 1))

(bind?S (+?S (*(nth$?i $?x) (nth$?i $?y)))))

(return?S))

 

(S 3 1 2 -3 3 4 -6)

(S 5 0 5 -2 -4 -1 -3 0 -1 3 7)

(S 4 0 1 2 3 -3 -2 -1 6)

 

2) (deffunction S (?n $?x)

(bind?i 0) (bind $?S (create$))

(while (<?i?n) do

(bind?i (+?i 1))

(bind $?S (insert$ $?S?i (nth$ (-?n (-?i 1)) $?x))))

(return $?S))

 

(S 3 1 2 -3)

(S 5 0 5 -2 -4 -1)

(S 4 0 1 2 3)



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: