博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

水龙卷

我是一个对自己进行debug的程序,所以行动迟缓些,不要见怪
  waterspout.cublog.cn

关于作者
姓名:何云龙
职业:Linux移动终端平台开发
介绍:走的更远些
|| << >> ||
我的分类


JCLIPS介绍
前面说过,CLIPS是常用的人工智能语言,但是CLIPS(C Language Integrated Product System)是为嵌入到C/C++语言中设计的,对于Java程序员来说虽然可以选择Jess,毕竟用起来还要麻烦一些。JCLIPS就提供了在Java语言中直接使用CLIPS的方法。
 
这里是JCLIPS的主页,从这里可以下载JCLIPS的库和例子。目前只有windows版的。
 
假设把下载的JCLIPS的库jclips.dll和jclips.jar放到了d:\bin\jclipse,同时把样例代码JClipsExample.java和myknowledge.clp也放到这个目录,在这个目录下对样例代码进行编译:
 

javac -classpath d:\bin\jclips\jclips.jar JClipsExample.java D:\bin\jclips>java -cp .;jclips.jar -Djava.library.path=. JClipsExample

JClips version 1.2 (CLIPS version 6.22)

Firing rule assert-result

Firing rule send-result

Message received: The answer to life, the universe and everything! Firing rule do-rest

D:\bin\jclips>

很简单,是不是?其实JCLIPS只是提供了一个JClips对象,这个对象简单的封装了CLIPS的命令接口,我们只要象在WinCLIPS中在命令行输入命令一样调用JClips的接口就行了。

这里是样例代码。

import java.io.File;
import java.io.FileNotFoundException;
import java.net.URI;
import java.net.URL;
import java.util.Observable;
import java.util.Observer;
import jclips.JClips;

public class JClipsExample implements Observer {

    private static final String KNOWLEDGE_FILE = "myknowledge.clp";

    public void update(Observable jClips, Object messageObj) {
        String message = (String) messageObj;
        System.out.println("Message received: " + message);
    }

    public static void main(String[] args) {
        System.out.println(JClips.getVersion());

        JClips jClips = JClips.getInstance();
        jClips.init();
        jClips.addObserver(new JClipsExample());

        try {
            URL fileUrl = JClipsExample.class.getResource(KNOWLEDGE_FILE);
            if (fileUrl == null) {
                throw new FileNotFoundException(KNOWLEDGE_FILE);
            }
            File file = new File(new URI(fileUrl.toString()));
            jClips.load(file.getPath());
            jClips.reset();
            jClips.run();
            jClips.executeCommand("(assert (do-rest))");
            jClips.run();
            //jClips.commandLoop();
        } catch (Exception e) {
            e.printStackTrace(System.err);
        }
        jClips.deallocate();
    }
}

 

 

发表于: 2007-09-11,修改于: 2007-09-11 23:06,已浏览513次,有评论0条 推荐 投诉


网友评论
 发表评论