本發(fā)明涉及人工智能技術領域,具體涉及基于回答集程序設計的引入中間人的協(xié)商方法。
背景技術:
協(xié)商是社會活動的主要形式,人們主要通過協(xié)商來解決生活中的矛盾沖突。然而由于人類處理信息的能力有限,而且在受到其它因素影響時不能做出完全理性的決策,所以導致在面臨復雜的協(xié)商問題時,協(xié)商進程不能有效的進行。
在順序協(xié)商(即協(xié)商參與人交替提出協(xié)商建議的協(xié)商)方面,trancaoson提出使用帶有一致性恢復規(guī)則的邏輯程序(cr-prolong)使協(xié)商過程形式化,wuchen給出了一種使用回答集程序設計(answersetprogramming,簡稱asp)的連續(xù)交替出價協(xié)商模型。然而,這些方法存在以下不足:從計算機資源使用的角度,存在協(xié)商agent(代理)在生成協(xié)商意見時,對手處于空閑等待的情況,從而造成資源浪費;從協(xié)商進程推進的角度而言,順序協(xié)商開始時,由于agent害怕暴露協(xié)商底線,所以沒有agent愿意首先給出協(xié)商建議,從而造成協(xié)商無法順利開始。
在現(xiàn)實世界中,為了使協(xié)商更快完成并使自身利益最大化,常常會出現(xiàn)參與協(xié)商的一方提供虛假信息的情況。對協(xié)商中的不誠信問題的研究有:trancaoson和enricopontelli給出了一個具有不誠信行為的形式化的協(xié)商過程。但是沒有給出有效減少協(xié)商agent不誠信行為的方法。由于說謊這個行為是一個激活—決策—構建的過程,所以謊言是不能被預測的。即在協(xié)商未開始時,協(xié)商agent不存在對協(xié)商已知事實說謊的行為(不誠信行為)。
技術實現(xiàn)要素:
本發(fā)明所要解決的是順序協(xié)商中的資源浪費和協(xié)商不誠信的的問題,提供基于回答集程序設計的引入中間人的協(xié)商方法。
為解決上述問題,本發(fā)明是通過以下技術方案實現(xiàn)的:
基于回答集程序設計的引入中間人的協(xié)商方法,包括如下步驟:
步驟1、雙方協(xié)商代理向中間代理提出開始協(xié)商的相關信息;
步驟2、中間代理初始化協(xié)商協(xié)議,負責驗證協(xié)商是否可以開始,若可以開啟協(xié)商,則收集與即將開始的協(xié)商相關的各項信息;
步驟3、協(xié)商代理判斷協(xié)商建議是否全被協(xié)商,如果全被協(xié)商則轉(zhuǎn)到步驟6,否則轉(zhuǎn)到步驟4;
步驟4、雙方協(xié)商代理分別生成協(xié)商建議,并提交給中間代理;
步驟4.1、輸入?yún)f(xié)商物品的asp規(guī)則的規(guī)則集π和協(xié)商中需要了解文字的文字集h;
步驟4.2、把目標g作為約束加入規(guī)則集π中,形成新的規(guī)則集π';如果新的規(guī)則集π'中有回答集,則轉(zhuǎn)到步驟4.9;如果新的規(guī)則集π'中沒有回答集,則轉(zhuǎn)到步驟4.3;
步驟4.3、任選并刪除文字集h中的一個文字,將其加入到新的文字集h'中;
步驟4.4、將新的文字集h'加入到新的規(guī)則集π';如果新的規(guī)則集π'中有回答集,則轉(zhuǎn)到步驟4.5;如果新的規(guī)則集π'中沒有回答集,則轉(zhuǎn)到步驟4.3;
步驟4.5、若新的文字集h'為空,則轉(zhuǎn)到步驟4.9;若新的文字集h'不為空,則轉(zhuǎn)到步驟4.6;
步驟4.6、從新的文字集h'中任選并刪除一個文字;
步驟4.7、將步驟4.6得到的新的文字集h'加入新的規(guī)則集π';如果新的規(guī)則集π'中有回答集,則轉(zhuǎn)到步驟4.5;如果新的規(guī)則集π'中沒有回答集,則轉(zhuǎn)到步驟4.8;
步驟4.8、將步驟4.6所刪除的文字加入新的規(guī)則集π',轉(zhuǎn)到步驟4.5;
步驟4.9、新的規(guī)則集π'的回答集與文字集h的交集即為生成的協(xié)商建議;
步驟5、中間代理收到雙方協(xié)商代理提交的協(xié)商建議,根據(jù)協(xié)商規(guī)則判斷協(xié)商是否成功;如果協(xié)商成功,通知雙方協(xié)商代理協(xié)商成功,并結束協(xié)商進程;否則,中間代理向雙方協(xié)商代理發(fā)送本輪協(xié)商雙方提議協(xié)商失敗的原因,并通知協(xié)商代理進入下一輪,即轉(zhuǎn)到步驟3;
步驟6、當雙方協(xié)商代理的協(xié)商建議全部被協(xié)商過且均未被采納或當雙方協(xié)商代理違反規(guī)則的次數(shù)達到了規(guī)定次數(shù)時,則中間代理就認為該協(xié)商的結果是失敗的并結束協(xié)商進程。
與現(xiàn)有技術相比,本發(fā)明具有如下特點:
(1)引入一個中立的agent,使得協(xié)商agent可以同時提出自己的建議,通過中間agent的引導來完成協(xié)商過程;
(2)通過在協(xié)商的準備階段,由協(xié)商agent向中間agent提交關于協(xié)商物品的已知事實以及可獲取的相關文字,來減少協(xié)商agent的不誠信行為。
附圖說明
圖1為協(xié)商流程圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明白,下面結合一個具體實施例和附圖對本發(fā)明進一步詳細說明。
定義1.協(xié)商知識庫的定義:
協(xié)商agent的協(xié)商知識庫是一個三元組<π,h,g>,其中:
π為協(xié)商物品的知識的集合,即規(guī)則的集合;
h為在協(xié)商中需要了解的文字的集合,即需求文字集;
g為協(xié)商目標的集合以及其優(yōu)先級,即目標集。
根據(jù)上述定義,每個協(xié)商agent對協(xié)商物品最少擁有一個協(xié)商目標,并且每個目標之間是分離的,具有各自的優(yōu)先級順序的。所以在協(xié)商過程中,首先實現(xiàn)優(yōu)先級最高的目標,若實現(xiàn)不了,則考慮次一級的目標,直至所有的協(xié)商目標都沒有實現(xiàn),才判斷協(xié)商失敗。
在協(xié)商中,每個協(xié)商agent都是通過協(xié)商建議與其他agent進行協(xié)商的。在使用以數(shù)值為目標的協(xié)商模型中,agent通過計算預定義的公式來生成建議。然而,在基于asp的模型中,建議可以通過計算協(xié)商知識庫的回答集來生成。
定義2.協(xié)商建議的定義:
已知agent的協(xié)商知識庫為<π,h,g>,并且目標g∈g。協(xié)商建議r的定義如下:
(1)如果程序(π∪{:-notg.})有回答集,那么
(2)如果程序(π∪{:-notg.})沒有回答集,那么r就是h的一個子集,且r=m∩h,其中m為程序(π∪{:-notg.}∪r)的回答集。
定義3.協(xié)商建議不成功的原因的定義:
已知r為agenta在本輪中的協(xié)商建議,agentb的協(xié)商知識庫為<πb,hb,gb>。假設中間agent的協(xié)商規(guī)則集πb中的事實的集合為fb,那么協(xié)商失敗的原因是集合f=r\fb。
協(xié)商agent還需要進行協(xié)商建議是否全部被協(xié)商過的判斷并以此來決定下一輪協(xié)商過程中向中間agent發(fā)送的協(xié)商建議。給出如何判斷協(xié)商agent的協(xié)商建議是否全部協(xié)商過以及向中間agent發(fā)送的協(xié)商建議。
算法1.協(xié)商建議的生成算法genprop(π,h,g):
步驟1.1、輸入?yún)f(xié)商物品的asp規(guī)則的規(guī)則合π和協(xié)商中需要了解文字的文字集h;
步驟1.2、把目標g作為約束加入規(guī)則集π中,形成新的規(guī)則集π';如果新的規(guī)則集π'中有回答集,則轉(zhuǎn)到步驟1.9;如果新的規(guī)則集π'中沒有回答集,則轉(zhuǎn)到步驟1.3;
步驟1.3、任選并刪除文字集h中的一個文字,將其加入到新的文字集h'中;
步驟1.4、將新的文字集h'加入到新的規(guī)則集π';如果新的規(guī)則集π'中有回答集,則轉(zhuǎn)到步驟1.5;如果新的規(guī)則集π'中沒有回答集,則轉(zhuǎn)到步驟1.3;
步驟1.5、若新的文字集h'為空,則轉(zhuǎn)到步驟1.9;若新的文字集h'不為空,則轉(zhuǎn)到步驟1.6;
步驟1.6、從新的文字集h'中,任選并刪除一個文字;
步驟1.7、將步驟1.6得到的新的文字集h'加入新的規(guī)則集π';如果新的規(guī)則集π'中有回答集,則轉(zhuǎn)到步驟1.5;如果新的規(guī)則集π'中沒有回答集,則轉(zhuǎn)到步驟1.8;
步驟1.8、將步驟1.6所刪除的文字加入新的規(guī)則集π',轉(zhuǎn)到步驟1.5;
步驟1.9、當前新的規(guī)則集π'的回答集與文字集h的交集即為生成的協(xié)商建議。
在算法中genprop(π,h,g)中,第2-8行描述了尋找h的子集h’的過程,其中h’可以使程序(π∪{:-notg.}∪h')產(chǎn)生回答集。第9-16行確保如果程序π’不包含文字h還能得到回答集m,其中h∈h’,則確保m中不包含文字h。函數(shù)select(h,h)表示隨機挑選集合h中的一個文字h。
算法2.新的協(xié)商建議生成算法:
步驟2.1、輸入?yún)f(xié)商物品的asp規(guī)則的集合和協(xié)商中需要了解的文字的集合和協(xié)商失敗的原因;
步驟2.2、第i+1輪將協(xié)商需求集hi的失敗原因文字fi剔除,形成新的協(xié)商需求集hi+1;
步驟2.3、調(diào)用算法1求解第i+1輪的協(xié)商建議集ri+1;
步驟2.4、如果協(xié)商建議集ri+1為空,則轉(zhuǎn)到步驟2.5;若協(xié)商建議集ri+1不為空,則轉(zhuǎn)到步驟2.9;
步驟2.5、若當前目標集g'不為空,轉(zhuǎn)到步驟2.6;若當前目標集g'為空,則轉(zhuǎn)到步驟2.8;
步驟2.6、將當前目標集g'中比當前協(xié)商目標低一級的目標g'返回,并刪除目標g生成更新后的目標集g';
步驟2.7、使用低一級的協(xié)商目標g’替換現(xiàn)在的協(xié)商目標g,轉(zhuǎn)到步驟2.3;
步驟2.8、令ri+1為“fail”;
步驟2.9、返回ri+1,結束。
在算法gennprop(π,hi,g',fi)中,第一行是將agent在第i輪的需求集hi中屬于協(xié)商失敗的原因的集合中的文字刪去,從而生成agent在第(i+1)輪的需求集hi+1。函數(shù)low(g,g)的功能是將目標集g中比當前目標g低一優(yōu)先級的目標g'返回。第5-7行的目的是在目標g'下生成一個新的建議。第10行表示如果所有的建議都被協(xié)商過,那么新的建議為fail。當中間agent在收到建議r={fail}時,它會結束當前協(xié)商。如果還存在建議沒有被協(xié)商過,那么協(xié)商agent會將該建議發(fā)送給中間agent使協(xié)商繼續(xù)進行。
基于回答集程序設計的引入中間人的協(xié)商方法,參見圖1,包括如下步驟:
步驟1:買賣酸奶協(xié)商雙方中任何一方都可以請求初始化協(xié)議,交易雙方提交各自的初始信息給中間agent;
步驟2:中間agent負責驗證交易雙方身份的合法性,并收集與即將開始的協(xié)商相關的各項信息。其中交易雙方提交協(xié)商物品的相關信息及其作用如下:①協(xié)商物品的名稱,以此來判斷協(xié)商參與者是否可以參與協(xié)商;②針對這個協(xié)商物品的一些已知的事實,以此來判斷協(xié)商是否成功。其相關的規(guī)則如下:
%雙方協(xié)商的是同一個項目,則協(xié)商開始
start:-itema(x),itemb(x).
步驟3:交易雙方必須遵守協(xié)商規(guī)則,并提交符合協(xié)商規(guī)則的提議;否則中間agent將對違反規(guī)則的參與人發(fā)出警告信息。為提高協(xié)商效率,在發(fā)明中協(xié)商規(guī)則為已經(jīng)協(xié)商過得建議不允許再次提出進行協(xié)商。
步驟4:協(xié)商agent的協(xié)商建議成功后,不允許協(xié)商agent修改建議,即不允許協(xié)商agent繼續(xù)協(xié)商。其相關規(guī)則如下:
%已經(jīng)協(xié)商過的不可以再次協(xié)商
~ayes(x,w):-agenta(x,z),agenta(y,w),x=y(tǒng),z<w.
%已經(jīng)確定的不可以修改
allowa(x,z):-#sublist(x,y),agenta(x,z),factb(y).
byes(x,y):-notallowb(x,y),not~byes(x,y),agentb(x,y).
%協(xié)商成功后不允許繼續(xù)協(xié)商
:-allowa(x,y),agenta(_,z),x<z.
步驟5:在協(xié)商的每一輪,中間agent收到交易雙方提交的提議,根據(jù)協(xié)商規(guī)則判斷交易是否成功。如果協(xié)商成功,通知交易雙方協(xié)商的成交結果;否則,中間agent向交易雙方發(fā)送本協(xié)議輪雙方提議匹配部分的信息,并通知協(xié)商進入下一輪。
%agenta與agentb的協(xié)商建議均被允許,則協(xié)商成功。
success:-allowa(x,y),allowb(z,w).
%在本輪中協(xié)商建議是符合規(guī)則的,則允許進入下一輪
continuea:-ayes(x,y),y=term.
%本輪中的協(xié)商建議不是第二次不符合協(xié)商規(guī)則的情況,則允許進入下一輪
continuea:-~ayes(x,y),not~ayes(z,w),agenta(z,w),y<w.
步驟6:當協(xié)議達成一致或交易雙方中有一方因所有提議全部協(xié)商過或有一方協(xié)商agent多次不遵守協(xié)商規(guī)則而退出協(xié)商過程時,中間agent負責來結束整個協(xié)商過程。
end:-~ayes(x,y),~ayes(z,w),y?。絯.
end:-#member(fail,x),agenta(x,y).
本發(fā)明分析中間agent的作用,給出了協(xié)商流程,建立了具有中間agent的協(xié)商模型,利用asp語言來實現(xiàn)中間agent的基本功能并給出協(xié)商agent的協(xié)商建議生成算法,可以有效的解決順序協(xié)商中的一些問題。