2017-12-03 9 views
-2

대기열에서 값을 추가 및 삭제하는 두 가지 규칙을 작성하는 데 도움이 필요합니다. 큐에서 값을 제거하는 규칙은 forall 구조를 사용해야합니다.큐에서 값을 추가 및 제거하는 CLIPS (전문가 시스템) 쓰기 규칙

내가 아는 한, CLIPS에는 배열, 스택, 목록 또는 다른 유형의 콜렉션이 없습니다. 그래서 슬롯 item이있는 템플릿 queue을 정의하는 것으로 시작했습니다.이 큐는 큐의 값을 나타내지 만 규칙에는 성공하지 못했습니다. 어떻게 할 수 있을지 아무도 모른다.

+0

더 많은 질문을 이해하고 답변을 제공하기 위해 변경 사항을 높이려면 코드를 제공하십시오. – Heikki

답변

0

CLIPS에는 목록으로 작동하는 여러 필드 개체가 있습니다.

대기열을 전역 변수로 정의하고이 예제 (LIFO 대기열)와 같이 규칙에서 수정할 수 있습니다.

CLIPS> (defglobal ?*queue* = (create$)) 
; add "foo" to the queue 
CLIPS> (bind ?*queue* (insert$ ?*queue* 1 "foo")) 
("foo") 
; add "bar" to the queue 
CLIPS> (bind ?*queue* (insert$ ?*queue* 1 "bar")) 
("bar" "foo") 
; remove first element from the queue 
(bind ?*queue* (delete$ ?*queue* 1 1)) 
("foo")