首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何找到CLIPS中具有最大值的变量ID?

如何找到CLIPS中具有最大值的变量ID?
EN

Stack Overflow用户
提问于 2018-06-02 07:41:15
回答 1查看 107关注 0票数 0

我试着根据他们的考试成绩找出最好的学生。我从用户那里拿来的。我想让剪辑给我最好的学生的ID。例如,student1分数70、student2分数80和学生3分数100。剪辑应该告诉我“最好的学生是...因为他/她的重点是...”我使用了全局变量,但我不确定它是否正确,因为它不起作用。

代码语言:javascript
复制
(defglobal ?*student1mark* = 0)
(defglobal ?*student2mark* = 0)
(defglobal ?*student3mark* = 0)

(defrule get-marks
=>
(printout t "What is the exam mark of student1?" crlf)
(bind ?*student1mark* (read))
(assert (stu1mark ?*student1mark*))
(printout t "What is the exam mark of student2?" crlf)
(bind ?*student2mark* (read))
(assert (stu2mark ?*student2mark*))
(printout t "What is the exam mark of student3?" crlf)
(bind ?*student3mark* (read))
(assert (stu3mark ?*student3mark*))
(build (str-cat
        "(deffacts students (student student1 " ?*student1mark* " student student2 " ?*student2mark* " student student3 " ?*student3mark* "))")))

(defrule whichstudent
(student ?ID = (max ?*student1mark*" ?*student2mark*" ?*student3mark*))
=>
(printout t "The best student is " ?ID crlf))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 09:43:48

我不会使用全局变量。我会选择一个模板和事实。在规则的帮助下,一个解决方案是:

代码语言:javascript
复制
         CLIPS (6.30 3/17/15)
CLIPS> (deftemplate student
    (slot id (type INTEGER) (default ?NONE))
    (slot mark (type INTEGER) (default ?NONE))
)
CLIPS> (deffacts students
    (student (id 1) (mark 80))
    (student (id 2) (mark 79))
    (student (id 4) (mark 60))
    (student (id 3) (mark 90))
)
CLIPS> (defrule best-mark
    (compare-students)
    (student (id ?id) (mark ?mark))
    (not 
        (student (id ?) (mark ?nmark&:(> ?nmark ?mark)))
    )
=>
    (printout t "The best student is student no. " ?id crlf)
)
CLIPS> (reset)
CLIPS> (assert (compare-students))
<Fact-5>
CLIPS> (run)
The best student is student no. 3

关键部分是

代码语言:javascript
复制
    (student (id ?id) (mark ?mark))
    (not 
        (student (id ?) (mark ?nmark&:(> ?nmark ?mark)))
    )

因此,如果没有其他得分更高的学生,则此规则与学生事实相匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50652184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档