Доброе утро всем!
В рамках своей диссертации для магистров я пытаюсь написать код на CLIPS для прогнозирования вкуса 37 испытуемых и сравнить его с фактическими известными ароматами, которые мы им дали в эксперименте.Мы использовали массив из 122 отведений ЭМГ и регистрировали активность мозга, пока они испытывали каждый вкус.
Я использовал WEKA для создания иерархического дерева отведений, так что я оставлю только самые важные, которые связаны с областями мозга для восприятия вкуса, приведя к 20.
На основена дереве от WEKA Я пытаюсь создать эту умную систему для прогнозирования того, какой вкус может испытать новый субъект, только с нами, «смотрящими» на их деятельность EMG.
Итак ...
Я использую следующее правило, чтобы найти среди своих фактов те, которые удовлетворяют следующему:
(test (or (or(eq ?L7 -5);Meaning that: test if L7 is either -5, -4, -4, -2, 2
(eq ?L7 -4)
(eq ?L7 -3)
(eq ?L7 -2)
(eq ?L7 2))
;OR
( (eq ?L7 -1);or test weather
(or(eq ?L120 -5) ;L7 is -1 AND L120 is -5 or
(eq ?L120 -4) ;L7 is -1 AND L120 is -4 or
(eq ?L120 -3) ;L7 is -1 AND L120 is -3 or
(eq ?L120 -1) ;L7 is -1 AND L120 is -1 or
(eq ?L120 1) ;L7 is -1 AND L120 is 1 or
(eq ?L120 2) ;L7 is -1 AND L120 is 2 or
(eq ?L120 3) ;L7 is -1 AND L120 is 3 or
(eq ?L120 4) ;L7 is -1 AND L120 is 4 or
(eq ?L120 5)) ;L7 is -1 AND L120 is 5
)
;OR
( (eq ?L7 0) ;OR weather
(eq ?L60 -4) ;L7 is 0 and L60 is -4
)
... и т.д ...
Что я получаю из этого при запускеэто сообщение, гласящее:
[EXPRNPSR1] A function name must be a symbol
ERROR:
(defrule MAIN::rule1
(declare (salience 60))
(?f <- (facts (id ?id) (L7 ?L7) (L20 ?L20) (L23 ?L23) (L26 ?L26) ;other parameters follow ...
(test (or (or (eq ?L7 -5) (eq ?L7 -4) (eq ?L7 -3) (eq ?L7 -2) (eq ?L7 2)) ((
И на этом оно останавливается, очевидно, подразумевая, что мой синтаксис для вложенных или в тестовой функции используется неправильно.
Также меня интересует "функция теста на равенство погоды".Я использовал в прошлом
(test (<= ?L7 2))
, и я знаю, что это работает, но это не сработало для "==" (он же равен).Следующей лучшей вещью, которую я нашел, была функция «eq».
Все еще не повезло.
Прошу прощения за мои глупые вопросы, но я новичок в CLIPS (и вообще я врач, а не программист (пока!)), Так что любойМы будем благодарны за помощь.
Так что же я делаю не так?Каким должен быть синтаксис для того, что я заявляю в комментариях к моему коду?
Заранее спасибо!
Не могли бы вы помочь?