日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Jess学习基础(二)

發布時間:2024/3/7 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jess学习基础(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目要開發一個專家系統,以Jess進行推理決策,以Java作為外層框架進行開發。因為專家系統方向的資料比較少,目前仍然在摸索中。把已經掌握的知識寫出了,給個參考。
好在Jess官方提供了一個java+jess的example,雖然沒有說明,慢慢摸索理解了一下, 在此與大家分享。

之前的博客中已經給出了Jess作為插件在Eclipse中的安裝過程,在此可以直接使用。


一、工程搭建



1、新建一個Dynamic web project;
2、增加jess.jar包,并bulid path;
3、 在該工程中新建一個*.clp文件。(新建文件,手動增加后綴為.clp即可)

如圖:

得到的目錄如下圖:

二、源碼分析


下面我們來看項目的源碼。

這是一個價格計算的項目,根據消費者購買的商品的數量、價格等進行打折或者提供贈品。

model包中提供了商品目錄CatalogItem.java、消費者消費次數Customer.java、消費者訂單Order.java及商家提供的優惠活動Offer.java。

demo包中的demo.java是主程序入口,DemoDatabase.java提供數據接口的實現。

diagnosis包中Database.java提供數據接口,PricingEngine.java實現價格計算引擎。正是PricingEngine.java實現了pricing.clp與Java程序連接。

下面是PricingEngine.java中的源碼部分。

public class PricingEngine {private Rete engine;private WorkingMemoryMarker marker;private Database database;public PricingEngine(Database aDatabase) throws JessException {// Create a Jess rule engineengine = new Rete();//創建Jess規則引擎engine.reset();// Load the pricing rulesengine.batch("pricing.clp");//加載價格規則// Load the catalog data into working memorydatabase = aDatabase;engine.addAll(database.getCatalogItems());//加載目錄數據到工作存儲區// Mark end of catalog data for latermarker = engine.mark();//標記目錄數據}private void loadOrderData(int orderNumber) throws JessException {// Retrive the order from the databaseOrder order = database.getOrder(orderNumber);//從數據庫獲取訂單if (order != null) {// Add the order and its contents to working memory,增加訂單及訂單目錄到工作存儲區engine.add(order);engine.add(order.getCustomer());engine.addAll(order.getItems());}}public Iterator run(int orderNumber) throws JessException {// Remove any previous order data, leaving only catalog dataengine.resetToMark(marker);//重置規則引擎// Load data for this orderloadOrderData(orderNumber);//加載數據// Fire the rules that apply to this order engine.run();//啟動規則引擎// Return the list of offers created by the rulesreturn engine.getObjects(new Filter.ByClass(Offer.class));} }

將數據庫中的內容增加到規則庫的存儲區中,通過PricingEngine規則引擎來加載規則庫

那么,Java如何帶動這個規則引擎呢?
下面給出Demo中的main函數,可以看到,通過新建規則庫,可以很容易地將規則引擎加入到Java中。

public static void main(String[] args) {try {DemoDatabase database = new DemoDatabase();//新建數據庫PricingEngine engine = new PricingEngine(database);//新建規則引擎processOrder(database, engine, 123);//處理訂單processOrder(database, engine, 567);processOrder(database, engine, 666);} catch (JessException e) {e.printStackTrace();}}

那么,將Jess的規則處理加入到了Java中,它是如何處理數據的呢

下面是pricing.clp 中的內容

(import model.*) (deftemplate Order (declare (from-class Order))) (deftemplate OrderItem (declare (from-class OrderItem))) (deftemplate CatalogItem (declare (from-class CatalogItem))) (deftemplate Customer (declare (from-class Customer)))(defrule 10%-volume-discount"Give a 10% discount to everybody who spends more than $100."?o <- (Order {total > 100})=>(add (new Offer "10% volume discount" (/ ?o.total 10))))

可以看到(import model.*) 同Java中的import是一致的。
(declare (from-class Order))這一部分正是從Java的類中獲得的。這樣Jess就可以使用Java中的對象了。

(defrule 10%-volume-discount"Give a 10% discount to everybody who spends more than $100."?o <- (Order {total > 100})=>(add (new Offer "10% volume discount" (/ ?o.total 10))))

這一部分的功能是對所有的訂單消費超過100$的消費者打九折的優惠。
在Order中的{total}是方法名去掉get,并且將首字母變為小寫(如果緊挨著的第二個字母也是大寫,則不會變為小寫,編寫代碼時會有智能提示),而不是Java類中的變量名。

程序的運行結果如下

總結

以上是生活随笔為你收集整理的Jess学习基础(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩美女视频网站 | www九九九 | 亚洲成a人片 | 国产美女被草 | 天堂在线资源网 | www.av在线| 91超碰免费| 欧美黄色免费看 | 久久久久久久人妻无码中文字幕爆 | 日韩三级精品 | 香蕉视频在线视频 | 日韩网站免费观看高清 | 国产精品久久视频 | 精品无码三级在线观看视频 | 国产午夜一级 | 91毛片网站 | 奇米av在线 | 成人免费在线网址 | 天堂av观看 | 美女让男生桶 | 久久精品免费网站 | 日韩欧美精品一区 | 欧美日韩国产一区在线 | 天天干夜夜看 | 在线免费观看高清视频 | 一区二区精品免费 | chinese hd av| a级成人毛片 | 亚洲国产精品999 | 精品视频国产 | 午夜av不卡 | 日本视频在线观看免费 | 五十路在线观看 | 日韩视频在线观看一区二区三区 | 欧美午夜精品一区 | 久久精品一区二区 | 中日韩黄色片 | 亚洲精品lv| 在线观看免费视频一区二区 | 日本视频中文字幕 | 久久丝袜美腿 | 欧美性bbw| a毛片在线观看 | 91免费在线视频观看 | 免费在线观看黄视频 | 小柔的裸露日记h | 久久99久久久久 | 182tv午夜福利在线观看 | 成人黄色一级视频 | wwwav在线播放 | 国产精品久久久久久69 | 亚洲天堂123| 奇米综合网 | 中文字幕精品无码一区二区 | av在线播放地址 | 老熟妇仑乱一区二区视频 | 国产高清片| 91亚洲在线 | 人人看人人干 | 天堂国产精品 | 亚洲一区二区三区久久久 | 亚洲 欧美 自拍偷拍 | 自由 日本语 热 亚洲人 | 天天操夜夜操狠狠操 | 精品一区二区三区免费看 | 99国产精品久久久久久久 | 国产高清av | 农村妇女愉情三级 | 91精品国产综合久久国产大片 | 毛片在线视频播放 | 日本美女性爱视频 | 国产日韩av在线 | 午夜av片 | 欧美成人精品一区二区三区在线看 | 91精品人妻一区二区三区果冻 | 国产性―交―乱―色―情人 | 日韩毛片无码永久免费看 | 毛片随便看 | 国产嫩草av | 91在线看视频 | 手机看片久久久 | 超碰97人 | yw视频在线观看 | 黄色片99| www久久久久久久 | 亚洲欧美中日韩 | 男人插入女人下面视频 | 欧美黄色图片 | 欧美xxxx黑人xyx性爽 | aaaaaav| 日韩一片| 欧美亚洲综合网 | 午夜免费网 | h视频在线免费观看 | 久久这里只有精品首页 | 久久国产一二三 | 草青青视频 | 国产精品自在线 | 亚洲av无码国产在丝袜线观看 |