專利名稱:人工智能判定實現(xiàn)系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù),特別涉及一種人工智能判定實現(xiàn)系統(tǒng)及方法。
背景技術(shù):
人工智能(Al,Artificial Intelligence),是指用計算機來模擬人的思維和行動。人工智能應(yīng)用于計算機或家庭游戲機游戲中,就會使玩家感到他所面對的對手是同現(xiàn)實中一樣擁有智能的。在桌面游戲(Board Game)人工智能判定的設(shè)計中,通常要用到“交互設(shè)計過程”。首先以一種慣用的方式開始程序設(shè)計,如“托管狀態(tài)下對有多張卡牌可以出時如何選擇最優(yōu)的卡牌出牌”,再比如“面對一次行動時選擇行動或是保持沉默”,這些都是在桌游規(guī)則中會涉及到的人工智能判定,盡管這樣使用的算法也許會很簡單,然而當(dāng)你開始玩這個游戲時,你會發(fā)現(xiàn)很多時候人工智能AI會做一些蠢事(開始時應(yīng)該用不了多長時間)。接著就考慮以下問題a.電腦做了什么蠢事;b.如果是你的話,會怎樣做;C.是什么樣的信息使(或幫助)你做這樣的決定的,之后返回去重新設(shè)計算法來組合這些數(shù)據(jù)。然后再次開始你的游戲,觀察人工智能Al,直到他做了其他的蠢事,然后重復(fù)上述過程,通過不斷的重復(fù)交互設(shè)計過程,這個游戲的人工智能AI就會變得越來越好的。AI就是通過糾正錯誤不斷學(xué)習(xí)的,在你不斷玩游戲和修改它的過程中,人工智能AI實際上是在積累經(jīng)驗以便在游戲中表現(xiàn)的越來越好。在不同的桌面游戲的不同人工智能AI中,這些智能判定會隨著不同的具體游戲邏輯往往有不同的復(fù)雜算法,人工智能判定的組合極多,而且開發(fā)過程中需要不斷的去修善人工智能判定,以使之到達玩家預(yù)想的結(jié)果。在常規(guī)的人工智能判定的設(shè)計中,對各桌面游戲的各個人工智能判定,都要進行相應(yīng)的一些條件編碼,而多個智能判定會使用到同一個條件,對多個智能判定會使用到的同一個條件需要重復(fù)進行條件編碼,使這些智能判定的具體實現(xiàn)充斥著大量重復(fù)的工作。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種人工智能判定實現(xiàn)系統(tǒng)及方法,對多個智能判定使用到的同一個條件不需要重復(fù)進行條件編碼。為解決上述技術(shù)問題,本發(fā)明的人工智能判定實現(xiàn)系統(tǒng),包括一個或多個條件接口模塊、一多選一智能判斷類、一是或否智能判斷類、一新建條件模塊;所述條件接口模塊包括權(quán)重屬性、檢查是否滿足條件的方法項;所述權(quán)重屬性項根據(jù)條件值生成條件權(quán)重,所述檢查條件是否滿足的方法項根據(jù)條件值輸出真或假;所述多選一智能判斷類包括引用條件方法項、計算權(quán)重方法項、總權(quán)重屬性項;所述引用條件方法項用于引用一個或多個所述新建條件模塊中的新建條件;所述計算權(quán)重方法項用于計算所述引用條件方法項所引用的各新建條件在一條件值下的條件權(quán)重的總和; 所述總權(quán)重屬性項用于根據(jù)所述計算權(quán)重方法項所得到的各條件值的權(quán)重值的總和輸出
3選中的條件值;所述是或否智能判斷類包括引用條件方法項、判斷方法項;所述引用條件方法項用于引用一個或多個所述新建條件模塊中的新建條件;所述判斷方法項用于根據(jù)所述引用條件方法項所引用的各新建條件在該條件值下的檢查條件是否滿足的方法項輸出的真假給出是或否判斷;所述新建條件模塊用于存儲新建條件,新建條件是將所述條件接口模塊的權(quán)重屬性項、檢查是否滿足條件的方法項進行具體化得到。為解決上述技術(shù)問題,本發(fā)明的人工智能判定實現(xiàn)方法,包括以下步驟一 .設(shè)置所述人工智能判定實現(xiàn)系統(tǒng);二 .分析一判定需求所需要的全部條件;如果有一個或多個所需要的條件在所述新建條件模塊中無對應(yīng)的新建條件,就進行該一個或多個所需要的條件所對應(yīng)的新建條件的編碼,將所述條件接口模塊的權(quán)重屬性項、檢查是否滿足條件的方法項進行具體化得到各對應(yīng)的新建條件并存儲到所述新建條件模塊;三.分析該判定需求的類型,根據(jù)需求邏輯進行新建智能判斷編碼,如果判定需求為多選一關(guān)系,進行新建多選一智能判斷編碼,新建多選一智能判斷編碼是將所述多選一智能判斷類的引用條件方法項、計算權(quán)重方法項、總權(quán)重屬性項根據(jù)需求邏輯進行具體化。如果判定需求為是或否關(guān)系,進行新建是或否智能判斷編碼,新建是或否智能判斷編碼是將所述是或否智能判斷類的引用條件方法項、判斷方法項根據(jù)需求邏輯進行具體化。本發(fā)明,新建條件存儲在一新建條件模塊中,新建條件的編碼都是由條件接口模塊擴展得到從而具有統(tǒng)一接口及標準設(shè)定項,所述多選一智能判斷類、是或否智能判斷類引用具有統(tǒng)一接口的新建條件,并根據(jù)條件接口模塊的標準設(shè)定項進行判斷,當(dāng)有一個新的判定需求時,只需根據(jù)需求邏輯將是或否智能判斷類或者多選一智能判斷類具體化,確定所引用的新建條件即可,所述新建條件模塊中的新建條件,所有判斷需求進行新建智能判斷編碼時都可以引用,這樣當(dāng)不同的判斷需求涉及的多個智能判定使用到同一個條件時,只需由條件接口模塊擴展得到一個新建條件,再根據(jù)判斷需求的類型將是或否智能判斷類或者多選一智能判斷類具體化,進行新建智能判斷編碼時只需分別引用該新建條件即可,對多個智能判定會使用到的同一個條件不需要重復(fù)進行條件編碼,降低了智能判定的具體實現(xiàn)的工作量。
下面結(jié)合附圖及具體實施方式
對本發(fā)明作進一步詳細說明。圖1是本發(fā)明的人工智能判定實現(xiàn)系統(tǒng)一實施方式示意圖;圖2是本發(fā)明的人工智能判定實現(xiàn)方法一實施方式流程圖;圖3是一實施例示意圖。
具體實施例方式本發(fā)明的人工智能判定實現(xiàn)系統(tǒng)如圖1所示,包括一個或多個條件接口模塊、一多選一智能判斷類、一是或否智能判斷類、一新建條件模塊;所述條件接口模塊包括權(quán)重屬性、檢查是否滿足條件的方法項;所述權(quán)重屬性項根據(jù)條件值生成條件權(quán)重,所述檢查條件是否滿足的方法項根據(jù)條件值輸出真或假;所述多選一智能判斷類包括引用條件方法項、計算權(quán)重方法項、總權(quán)重屬性項;所述引用條件方法項用于引用一個或多個所述新建條件模塊中的新建條件;所述計算權(quán)重方法項用于計算所述引用條件方法項所引用的各新建條件在一條件值下的條件權(quán)重的總和; 所述總權(quán)重屬性項用于根據(jù)所述計算權(quán)重方法項所得到的各條件值的權(quán)重值的總和輸出選中的條件值;所述是或否智能判斷類包括引用條件方法項、判斷方法項;所述引用條件方法項用于引用一個或多個所述新建條件模塊中的新建條件;所述判斷方法項用于根據(jù)所述引用條件方法項所引用的各新建條件在該條件值下的檢查條件是否滿足的方法項輸出的真假給出是或否判斷;所述新建條件模塊用于存儲新建條件,新建條件是將所述條件接口模塊的權(quán)重屬性項、檢查是否滿足條件的方法項進行具體化得到。本發(fā)明的人工智能判定實現(xiàn)方法如圖2所示,包括以下步驟一 .設(shè)置所述人工智能判定實現(xiàn)系統(tǒng);二 .分析一判定需求所需要的全部條件;如果有一個或多個所需要的條件在所述新建條件模塊中無對應(yīng)的新建條件,就進行該一個或多個所需要的條件所對應(yīng)的新建條件的編碼,將所述條件接口模塊的權(quán)重屬性項、檢查是否滿足條件的方法項進行具體化得到各對應(yīng)的新建條件并存儲到所述新建條件模塊;如果所需要的全部條件在所述新建條件模塊中都分別有對應(yīng)的新建條件,進行步驟三;三.分析該判定需求的類型,根據(jù)需求邏輯進行新建智能判斷編碼,如果判定需求為多選一關(guān)系,進行新建多選一智能判斷編碼,新建多選一智能判斷編碼是將所述多選一智能判斷類的引用條件方法項、計算權(quán)重方法項、總權(quán)重屬性項根據(jù)需求邏輯進行具體化。如果判定需求為是或否關(guān)系,進行新建是或否智能判斷編碼,新建是或否智能判斷編碼是將所述是或否智能判斷類的引用條件方法項、判斷方法項根據(jù)需求邏輯進行具體化?;诓煌呐卸ㄐ枨罂梢猿橄鬄閮纱箢愋偷闹悄芘卸ǘ噙x一關(guān)系的智能判定、 是或否關(guān)系的智能判定,本發(fā)明設(shè)置條件接口模塊、多選一智能判斷類、是或否智能判斷類,多選一智能判斷類利用條件值對應(yīng)的各新建條件權(quán)值來選出滿足特定需求邏輯的最優(yōu)選擇,是或否智能判斷類利用條件值對應(yīng)的各新建條件真假的組合作出滿足特定需求邏輯的是否判斷。本發(fā)明,新建條件存儲在一新建條件模塊中,新建條件的編碼都是由條件接口模塊擴展得到從而具有統(tǒng)一接口及標準設(shè)定項,所述多選一智能判斷類、是或否智能判斷類引用具有統(tǒng)一接口的新建條件,并根據(jù)條件接口模塊的標準設(shè)定項進行判斷,當(dāng)有一個新的判定需求時,只需根據(jù)需求邏輯將是或否智能判斷類或者多選一智能判斷類具體化,確定所引用的新建條件即可,所述新建條件模塊中的新建條件,所有判斷需求進行新建智能判斷編碼時都可以引用,這樣當(dāng)不同的判斷需求涉及的多個智能判定使用到同一個條件
5時,只需由條件接口模塊擴展得到一個新建條件,再根據(jù)判斷需求的類型將是或否智能判斷類或者多選一智能判斷類具體化,進行新建智能判斷編碼時只需分別引用該新建條件即可,對多個智能判定會使用到的同一個條件不需要重復(fù)進行條件編碼,降低了智能判定的具體實現(xiàn)的工作量。一實施例,如圖3所示,所有判定需求的條件都由條件接口模塊實現(xiàn)。 ICondition, AbstractParallelAI 為多選一關(guān)系的智能判斷類,AbstractSerialAI 為是或否關(guān)系的智能判斷類;多選一關(guān)系的具體做法(Acti0nScript3實現(xiàn)代碼),例舉一個簡單的例子從一組卡牌數(shù)據(jù)中智能判斷出點值最大的卡牌1.首先根據(jù)判斷需求進行新建條件編碼,這里我們只需要新建一個條件即將使用到卡牌的點值和條件的權(quán)重值關(guān)聯(lián)的條件。package com. cxy. ai. condition{import com. cxy. ai. IAICondition ;public class Simple2Condition implements IAICondition{public function Simple2Condition(){}public function checkCondition(. . . args):Boolean{var counter :uint = args
;weight = 2 * counter ;if (counter > 10) {return true ;}else{return false ;}}public function get weight():uint{return O ;}public function set weight(value:uint):void{}
}}2.進行新建多選一智能判斷編碼,其作用是根據(jù)傳入的某卡牌放入到所有使用到的條件中計算出總權(quán)值。package com. cxy. ai. parallel{import com. cxy. ai. AbstractParallelAI ;import com. cxy. ai. condition. Simple2Condition ;
public class SimpleParallelAI extends AbstractParallelAI{private var —counter:uint ;public function SimpleParallelAI(counter:uint){super ();_counter = counter ;}override public function createAIConditions():void{_simple2Condition = new Simple2Condition();}private var _simple2Condition:Simple2Condition ;override public function calffeight():void{_totalffeight = 0 ;if(_simple2Condition. checkCondition(_counter)){_totalffeight+ = _simple2Condition. weight ;}}}}3.新建一個該智能判斷的幫助類,實現(xiàn)多卡牌數(shù)組的智能判定并且將選擇邏輯寫入該幫助類中,選擇權(quán)值最大的那張卡牌。package com. cxy. ai. parallel, util{import com. cxy. ai. parallel. SimpleParallelAI ;public class SimpleParalIelAIUtil{public static function getMaxCounter(counters:Array):uint {var dddd: Array = new ArrayO ;var counter: uint = 0 ;for (var i : * in counters){counter = counters [i];var simpleAI:SimpleParallelAI = newSimpleParallelAI(counter);simpleAI. calWeight ();dddd. push({weigth: simpleAI. totalWeight, cc:counter});
}dddd. sortonC weigth" , Array. NUMERIC | Array. DESCENDING);var result:uint ;if (dddd. length > 0){result = dddd
. cc ;}return result ;}}}4.在游戲中使用該幫助類。var cards:Array = [111,345,46,657,785,70,345,33,777];var maxCard:uint = SimpleParalIelAIUti1. getMaxCounter(counters);這樣一個簡單的選擇最大點值卡牌的智能判定就可以在游戲邏輯中簡單容易的使用了,而且編寫的新建條件的可以在其他智能判定邏輯中重復(fù)使用,很大程度上減少了
重復(fù)編碼的工作量。
權(quán)利要求
1.一種人工智能判定實現(xiàn)系統(tǒng),其特征在于,包括一個或多個條件接口模塊、一多選一智能判斷類、一是或否智能判斷類、一新建條件模塊;所述條件接口模塊包括權(quán)重屬性、檢查是否滿足條件的方法項;所述權(quán)重屬性項根據(jù)條件值生成條件權(quán)重,所述檢查條件是否滿足的方法項根據(jù)條件值輸出真或假;所述多選一智能判斷類包括引用條件方法項、計算權(quán)重方法項、總權(quán)重屬性項;所述引用條件方法項用于引用一個或多個所述新建條件模塊中的新建條件;所述計算權(quán)重方法項用于計算所述引用條件方法項所引用的各新建條件在一條件值下的條件權(quán)重的總和;所述總權(quán)重屬性項用于根據(jù)所述計算權(quán)重方法項所得到的各條件值的權(quán)重值的總和輸出選中的條件值;所述是或否智能判斷類包括引用條件方法項、判斷方法項;所述引用條件方法項用于引用一個或多個所述新建條件模塊中的新建條件;所述判斷方法項用于根據(jù)所述引用條件方法項所引用的各新建條件在該條件值下的檢查條件是否滿足的方法項輸出的真假給出是或否判斷;所述新建條件模塊用于存儲新建條件,新建條件是將所述條件接口模塊的權(quán)重屬性項、檢查是否滿足條件的方法項進行具體化得到。
2.—種人工智能判定實現(xiàn)方法,其特征在于,包括以下步驟一·設(shè)置權(quán)利要求1所述的人工智能判定實現(xiàn)系統(tǒng);二.分析一判定需求所需要的全部條件;如果有一個或多個所需要的條件在所述新建條件模塊中無對應(yīng)的新建條件,就進行該一個或多個所需要的條件所對應(yīng)的新建條件的編碼,將所述條件接口模塊的權(quán)重屬性項、檢查是否滿足條件的方法項進行具體化得到各對應(yīng)的新建條件并存儲到所述新建條件模塊;三.分析該判定需求的類型,根據(jù)需求邏輯進行新建智能判斷編碼,如果判定需求為多選一關(guān)系,進行新建多選一智能判斷編碼,新建多選一智能判斷編碼是將所述多選一智能判斷類的引用條件方法項、計算權(quán)重方法項、總權(quán)重屬性項根據(jù)需求邏輯進行具體化。如果判定需求為是或否關(guān)系,進行新建是或否智能判斷編碼,新建是或否智能判斷編碼是將所述是或否智能判斷類的引用條件方法項、判斷方法項根據(jù)需求邏輯進行具體化。
全文摘要
本發(fā)明公開了一種人工智能判定實現(xiàn)系統(tǒng),包括一個或多個條件接口模塊、一多選一智能判斷類、一是或否智能判斷類、一新建條件模塊;條件接口模塊包括權(quán)重屬性、檢查是否滿足條件的方法項;多選一智能判斷類包括引用條件方法項、計算權(quán)重方法項、總權(quán)重屬性項;是或否智能判斷類包括引用條件方法項、判斷方法項;新建條件模塊用于存儲新建條件,新建條件是將所述條件接口模塊的權(quán)重屬性項、檢查是否滿足條件的方法項進行具體化得到。本發(fā)明還公開了一種人工智能判定實現(xiàn)方法。本發(fā)明對多個智能判定使用到的同一個條件不需要重復(fù)進行條件編碼。
文檔編號G06F19/00GK102456090SQ20101051114
公開日2012年5月16日 申請日期2010年10月19日 優(yōu)先權(quán)日2010年10月19日
發(fā)明者張鋒 申請人:盛樂信息技術(shù)(上海)有限公司