LISA - 知的エージェントプラットフォーム
http://lisa.sourceforge.net/ で開発されている Lisp ベースの知的エージェント開発プラットフォーム. CLOS ベースのプロダクションシステムの実装.コアとして高速に多対多のマッチングを行う Rete アルゴリズムを 推論エンジンに採用している.LispWorks, Allegro Common Lisp, LispWorks, CLISP で動作する.
サンプル
燃料を満タンまで入れるプログラム.(ちょっとオーバーする場合あり)
(defpackage :jp.lispydays.lisa.sample (:use :lisa-lisp) (:nicknames :sample )) (in-package :jp.lispydays.lisa.sample) (clear) (make-inference-engine) (deftemplate vehicle () (slot fuel)) (defrule vechicle-fuel () (vehicle (fuel ?fuel)) (test (>= ?fuel 100)) => (format t "~&Fuel: Full")) (defrule charge-fuel () (?vehicle (vehicle (fuel ?fuel))) (test (< ?fuel 100)) => (let ((d (random 10))) (format t "~&charge: fuel ~A to ~A" ?fuel (+ ?fuel d)) (modify ?vehicle (fuel (+ ?fuel d))))) (deffacts startup () (vehicle (fuel 30))) (defun fuel-to-max () (reset) (run))
CL-USER> (sample::fuel-to-max) charge: fuel 30 to 38 charge: fuel 38 to 46 charge: fuel 46 to 51 charge: fuel 51 to 55 charge: fuel 55 to 60 charge: fuel 60 to 61 charge: fuel 61 to 63 charge: fuel 63 to 70 charge: fuel 70 to 71 charge: fuel 71 to 72 charge: fuel 72 to 81 charge: fuel 81 to 84 charge: fuel 84 to 84 charge: fuel 84 to 88 charge: fuel 88 to 90 charge: fuel 90 to 95 charge: fuel 95 to 104 Fuel: Full