|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.12.2017, 16:50 | #1 |
Новичок
Джуниор
Регистрация: 09.12.2017
Сообщений: 3
|
Задача на CLIPS
День добрый!Есть код следующего вида
(deftemplate Field (slot m_1 (type NUMBER)) (slot m_2 (type NUMBER)) (slot k_1 (type NUMBER)) (slot k_2 (type NUMBER)) (slot lod (type NUMBER)) (slot Level(type NUMBER)) (slot Id (type NUMBER)(default 0)) (slot State(type NUMBER)(default 0)) (slot From (type NUMBER)) (slot Exp (type NUMBER)) ) (defglobal ?*Id* = 0 ?*m_1* = 0 ?*m_2* = 0 ?*k_1* = 0 ?*k_2* = 0 ?*lod* = 1 ) (deffunction Get_Id() (bind ?*Id* (+ ?*Id* 1)) ?*Id* ) (deffunction W(?m1 ?m2 ?k1 ?k2) (bind ?a 1) (if (or (and (< ?m1 ?k1) (not (= ?m1 0))) (and (< ?m2 ?k2) (not (= ?m2 0)))) then (bind ?a 0) ) ?a ) (deffacts start (Field (m_1 3) (m_2 0) (k_1 3) (k_2 0) (lod 1) (Level 0) (From 0) (Exp (W 3 0 3 0)) (Id (Get_Id)) ) ) (defrule make_new_path_1 (declare (salience 100)) ?f <- (Field (State 0) (Id ?Id) (Level ?L) (Exp ?E& = ?E 1)) (m_1 3) (m_2 0) (k_1 3) (k_2 0) (lod 1) ) => (modify ?f(State 1)) (assert (Field (m_1 1) (m_2 2) (k_1 3) (k_2 0) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 1 2 3 0)) ) ) (assert (Field (m_1 3) (m_2 0) (k_1 1) (k_2 2) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 3 0 1 2)) ) ) (assert (Field (m_1 2) (m_2 1) (k_1 2) (k_2 1) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 2 1 2 1)) ) ) ) (defrule make_new_path_2 (declare (salience 100)) ?f <- (Field (State 0) (Id ?Id) (Level ?L) (Exp ?E& = ?E 1)) (m_1 2) (m_2 1) (k_1 2) (k_2 1) (lod 2) ) => (modify ?f(State 1)) (assert (Field (m_1 3) (m_2 0) (k_1 2) (k_2 1) (lod 1) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 3 0 2 1)) ) ) (assert (Field (m_1 2) (m_2 1) (k_1 3) (k_2 0) (lod 1) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 2 1 3 0)) ) ) ) (defrule make_new_path_3 (declare (salience 100)) ?f <- (Field (State 0) (Id ?Id) (Level ?L) (Exp ?E& = ?E 1)) (m_1 3) (m_2 0) (k_1 2) (k_2 1) (lod 1) ) => (modify ?f(State 1)) (assert (Field (m_1 1) (m_2 2) (k_1 2) (k_2 1) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 1 2 2 1)) ) ) (assert (Field (m_1 3) (m_2 0) (k_1 0) (k_2 3) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 3 0 0 3)) ) ) (assert (Field (m_1 2) (m_2 1) (k_1 1) (k_2 2) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 2 1 1 2)) ) ) ) Который составляет дерево решений задачи про каннибалов и миссионеров. Суть проблемы:как представить факты из вида (Пример: f-32 (Field (m_1 0) (m_2 3) (k_1 0) (k_2 3) (lod 2) (level 11) (Id 19) (State 2) (From 18) (Exp 1) ) В вид f-32 'Текст' значение слота m_1 'Текст' значение слота m_2... Литературы, описывающей работу с неупорядоченными фактами в клипс не нашел. |
09.12.2017, 16:50 | #2 |
Новичок
Джуниор
Регистрация: 09.12.2017
Сообщений: 3
|
(defrule make_new_path_4
(declare (salience 100)) ?f <- (Field (State 0) (Id ?Id) (Level ?L) (Exp ?E& = ?E 1)) (m_1 3) (m_2 0) (k_1 0) (k_2 3) (lod 2) ) => (modify ?f(State 1)) (assert (Field (m_1 3) (m_2 0) (k_1 2) (k_2 1) (lod 1) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 3 0 2 1)) ) ) (assert (Field (m_1 3) (m_2 0) (k_1 1) (k_2 2) (lod 1) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 3 0 1 2)) ) ) ) (defrule make_new_path_5 (declare (salience 100)) ?f <- (Field (State 0) (Id ?Id) (Level ?L) (Exp ?E& = ?E 1)) (m_1 3) (m_2 0) (k_1 2) (k_2 1) (lod 1) ) => (modify ?f(State 1)) (assert (Field (m_1 1) (m_2 2) (k_1 2) (k_2 1) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 1 2 2 1)) ) ) (assert (Field (m_1 3) (m_2 0) (k_1 0) (k_2 3) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 3 0 0 3)) ) ) ) (defrule make_new_path_6 (declare (salience 100)) ?f <- (Field (State 0) (Id ?Id) (Level ?L) (Exp ?E& = ?E 1)) (m_1 3) (m_2 0) (k_1 1) (k_2 2) (lod 1) ) => (modify ?f(State 1)) (assert (Field (m_1 1) (m_2 2) (k_1 1) (k_2 2) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 1 2 1 2)) ) ) (assert (Field (m_1 2) (m_2 1) (k_1 0) (k_2 3) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 2 1 0 3)) ) ) ) (defrule make_new_path_7 (declare (salience 100)) ?f <- (Field (State 0) (Id ?Id) (Level ?L) (Exp ?E& = ?E 1)) (m_1 1) (m_2 2) (k_1 1) (k_2 2) (lod 2) ) => (modify ?f(State 1)) (assert (Field (m_1 2) (m_2 1) (k_1 2) (k_2 1) (lod 1) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 2 1 2 1)) ) ) ) |
09.12.2017, 16:53 | #3 |
Новичок
Джуниор
Регистрация: 09.12.2017
Сообщений: 3
|
(defrule make_new_path_8
(declare (salience 100)) ?f <- (Field (State 0) (Id ?Id) (Level ?L) (Exp ?E& = ?E 1)) (m_1 2) (m_2 1) (k_1 2) (k_2 1) (lod 1) ) => (modify ?f(State 1)) (assert (Field (m_1 0) (m_2 3) (k_1 2) (k_2 1) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 0 3 2 1)) ) ) ) (defrule make_new_path_9 (declare (salience 100)) ?f <- (Field (State 0) (Id ?Id) (Level ?L) (Exp ?E& = ?E 1)) (m_1 0) (m_2 3) (k_1 2) (k_2 1) (lod 2) ) => (modify ?f(State 1)) (assert (Field (m_1 0) (m_2 3) (k_1 3) (k_2 0) (lod 1) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 0 3 3 0)) ) ) ) (defrule make_new_path_10 (declare (salience 100)) ?f <- (Field (State 0) (Id ?Id) (Level ?L) (Exp ?E& = ?E 1)) (m_1 0) (m_2 3) (k_1 3) (k_2 0) (lod 1) ) => (modify ?f(State 1)) (assert (Field (m_1 0) (m_2 3) (k_1 1) (k_2 2) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 0 3 1 2)) ) ) ) (defrule make_new_path_11 (declare (salience 100)) ?f <- (Field (State 0) (Id ?Id) (Level ?L) (Exp ?E& = ?E 1)) (m_1 0) (m_2 3) (k_1 1) (k_2 2) (lod 2) ) => (modify ?f(State 1)) (assert (Field (m_1 0) (m_2 3) (k_1 2) (k_2 1) (lod 1) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 0 3 2 1)) ) ) ) (defrule make_new_path_12 (declare (salience 100)) ?f <- (Field (State 0) (Id ?Id) (Level ?L) (Exp ?E& = ?E 1)) (m_1 0) (m_2 3) (k_1 2) (k_2 1) (lod 1) ) => (modify ?f(State 1)) (assert (Field (m_1 0) (m_2 3) (k_1 0) (k_2 3) (lod 2) (Level (+ ?L 1)) (From ?Id) (Id (Get_Id)) (Exp (W 0 3 0 3)) ) ) ) (defrule start_select_answer (declare (salience 500)) ?f <-(Field (m_1 0) (m_2 3) (k_1 0) (k_2 3) (lod 2) (State ~2) (From ?Id) ) => (modify ?f (State 2)) ) (defrule select_answer (declare (salience 500)) (Field (State 2) (From ?Id)) ?f <- (Field (Id ?Id) (State ~2)) => (modify ?f (State 2)) ) (defrule delete_not_answer (declare (salience 400)) (Field (State 2)) ?f <- (Field (State ~2)) => (retract ?f) ) (defrule Stop_l (declare (salience 200)) (Field(State ?x)) (not (Field(State 0|2))) => (halt) ) (defrule Stop_2 (declare (salience 200)) (Field(State 2)) => (facts) (halt) ) Третий кусок, сайт заменяет комбинацию из : и ( на смайлик... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача про гирлянды Clips | Skyes | Помощь студентам | 0 | 25.03.2014 02:51 |
CLIPS | student52 | Помощь студентам | 0 | 21.03.2013 01:54 |
задача по CLIPS | Alina.666. | Помощь студентам | 0 | 15.06.2012 21:48 |
Задача на Clips | 2008_student_2013 | Помощь студентам | 1 | 15.05.2012 22:18 |
Программа CLIPS | doris | Помощь студентам | 0 | 10.01.2012 20:43 |