本發(fā)明涉及一種群智感知系統(tǒng),尤其是一種群智感知分配系統(tǒng)及其任務(wù)分配方法。
背景技術(shù):
近年來,針對群智感知中的最優(yōu)任務(wù)分配問題的相關(guān)研究已經(jīng)取得了一定的進展,但仍存在諸多問題,例如,在實際的群智感知系統(tǒng)中不同任務(wù)可能對用戶的要求不同,而每個用戶完成任務(wù)的質(zhì)量也是不同的,存在任務(wù)的異質(zhì)性和用戶的可靠性問題,同時,同一個用戶完成不同類型任務(wù)的可靠性可能也是不同的,也就是說用戶的可靠性實際上是一種分類可靠性,然而,現(xiàn)有研究并未充分考慮這些問題,設(shè)計出高效的群智感知任務(wù)分配系統(tǒng)。
技術(shù)實現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對以上現(xiàn)有技術(shù)的不足,而提供一種群智感知分配系統(tǒng)及其任務(wù)分配方法。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種群智感知分配系統(tǒng),包括數(shù)據(jù)消費者、平臺和用戶,其中在所述平臺內(nèi)分別設(shè)有任務(wù)發(fā)布模塊、任務(wù)收集模塊、任務(wù)分配模塊、數(shù)據(jù)提交模塊和支付模塊,所述任務(wù)發(fā)布模塊與所述數(shù)據(jù)消費者連接,所述任務(wù)收集模塊與用戶連接,所述任務(wù)發(fā)布模塊與任務(wù)收集模塊均與分配模塊連接,所述任務(wù)發(fā)布模塊通過數(shù)據(jù)提交模塊和支付模塊與任務(wù)收集模塊連接,數(shù)據(jù)消費者通過任務(wù)發(fā)布模塊將任務(wù)發(fā)到平臺上,用戶通過任務(wù)收集模塊自己選擇任務(wù),接著任務(wù)分配模塊根據(jù)數(shù)據(jù)消費者發(fā)布的任務(wù),以及用戶選擇的情況,對用戶進行分配,用戶在得到分配的任務(wù)后將任務(wù)完成,通過數(shù)據(jù)提交模塊提交給數(shù)據(jù)消費者,最后數(shù)據(jù)消費者通過支付模塊向用戶支付費用。
具體步驟如下:
步驟一:每個i在每輪任務(wù)分配開始時,通過任務(wù)發(fā)布模塊向平臺內(nèi)提交一個期望完成的Ti,以及一個與之相對應(yīng)的Bi,其中i表示數(shù)據(jù)消費者,Ti表示任務(wù)集合,Bi表示任務(wù)預(yù)算;
步驟二:平臺在收到數(shù)據(jù)消費者提交的需求后,會將其發(fā)布給j,每個j將通過任務(wù)收集模塊向平臺提交自身感興趣的Ti,j和與Ti,j相對應(yīng)的若ti,k∈Ti,j則表示用戶對ti,k感興趣,其中j表示用戶,Ti,j表示任務(wù)子集,表示報價,ti,k表示任務(wù)集合中的某一個任務(wù);
步驟三:首先Si表示分配集合,而分配集合指的是能夠完成任務(wù)集合內(nèi)任務(wù)的用戶集合,接著可以用Vi(Si)來表示選擇分配集合來完成任務(wù)集合給數(shù)據(jù)消費者所帶來的收益,因此任務(wù)篩選模塊就可以根據(jù)預(yù)算的限制,對完成任務(wù)的用戶數(shù)量進行限定;因為在滿足每個數(shù)據(jù)消費者預(yù)算限制的前提下,通過調(diào)研發(fā)現(xiàn),在用戶數(shù)量沒有超過限定值時Vi(Si)首先隨著Si中用戶數(shù)量的增大而提高,但當(dāng)Si的用戶達到一定規(guī)模后,增加用戶數(shù)量意味著更多的支付,因此Vi(Si)會隨著Si中用戶的繼續(xù)增加而下降;
步驟四:任務(wù)分配模塊根據(jù)最大最小公平原則,完成用戶和任務(wù)之間的最優(yōu)匹配,在分配時,平臺會遍歷所有的用戶和任務(wù)組合,選擇一個任務(wù)分配給一個用戶,使得前收益最低的數(shù)據(jù)消費者的收益提高,當(dāng)最低收益的數(shù)據(jù)消費者已經(jīng)無法繼續(xù)提高收益時,說明此時該數(shù)據(jù)消費者的用戶已到達上限,不能再增加用戶數(shù)量,則繼續(xù)判斷是否可以使收益第二低的數(shù)據(jù)消費者的收益提高,直到所有數(shù)據(jù)消費者的收益都無法繼續(xù)提高為止;
步驟五:用戶完成任務(wù)后,將采集到的數(shù)據(jù)提交給數(shù)據(jù)消費者,數(shù)據(jù)消費者在收到數(shù)據(jù)后,根據(jù)完成任務(wù)用戶的報價支付該用戶,至此,一個任務(wù)分配周期結(jié)束。
其中步驟四包括以下分步驟:
S21:初始化,平臺在初始化階段,將所有參與分配的用戶加入到U,所有的數(shù)據(jù)消費者加入到B,并設(shè)置Vi(Si)=0且Si=φ,其中U表示用戶集合,B數(shù)據(jù)消費者集合;
S22:判斷U或B是否為空,若U或B已經(jīng)是空集,則跳轉(zhuǎn)至S217,分配結(jié)束;
S23:通過對比,找到數(shù)據(jù)消費者集合中收益最小的數(shù)據(jù)消費者,如果存在多個數(shù)據(jù)消費者的收益相同且最小,則從這些消費者中任選一個作為當(dāng)前集合收益最小的數(shù)據(jù)消費者;例如,在初始狀態(tài)下,所有消費者的收益均為0,此時只要隨機選取一個消費者作為收益最小的數(shù)據(jù)消費者即可。
S24:設(shè)置max_profit=0;
S25:設(shè)置j=1;
在我們的模型里面,我們假設(shè)在每輪分配中只會給每個用戶分配一個任務(wù),而平臺在給數(shù)據(jù)消費者分配用戶時,會選擇一個能為數(shù)據(jù)消費者帶來最大收益的用戶進行任務(wù)分配。所以我們需要從j=1遍歷所有用戶,分別求出每個用戶所能帶來的最大收益增量,依此來確定將數(shù)據(jù)消費者的任務(wù)分配給哪個用戶。
S26:選取一個任務(wù),滿足ti,k∈Ti,j;
由于我們只會給每個用戶分配不超過一個任務(wù),因此在計算每個用戶可能會給數(shù)據(jù)消費者i帶來的最大收益時,需要遍歷數(shù)據(jù)消費者i所發(fā)布的每個任務(wù),其中ti,k∈Ti,j,將計算得到將該任務(wù)分配給用戶j所能帶來的收益。在本發(fā)明所設(shè)計的方法中,在每次遍歷時會隨機從Ti選取一個任務(wù),直到所有任務(wù)被遍歷完為止。
S27:設(shè)置ΔVi(Si)為將任務(wù)分配給用戶所能帶來的收益增量。
S28:判斷ΔVi(Si)>max_profit是否成立,若成立,則執(zhí)行S29;否則。則跳轉(zhuǎn)至S211;
S29:設(shè)置max_orofit=ΔVi(Si);
S210:設(shè)置max_user=j(luò),max_task=ti,k;
在這里,max_user用于記錄下能帶來最大收益增量的用戶,而max_task則用來記錄能帶來最大收益增量的任務(wù),這樣,等遍歷完成后,就可以據(jù)此來決定應(yīng)該把哪個任務(wù)分配給哪個用戶了。
S211:判斷是否還有任務(wù)未被遍歷到,若否,則繼續(xù)執(zhí)行S212;否則,則跳轉(zhuǎn)至S216,繼續(xù)選取下一個任務(wù),其中ti,k∈Ti;
S212:判斷是否還有用戶未被遍歷到,若否,則繼續(xù)執(zhí)行S213;否則,跳轉(zhuǎn)至S217;
S213:判斷max_profit>0是否成立?若成立,則跳轉(zhuǎn)至S214;否則,跳轉(zhuǎn)至S218;
如果max_profit>0成立,說明當(dāng)前收益最小的數(shù)據(jù)消費者的收益還能繼續(xù)提高,則將按照步驟S210所記錄下來的能帶來最大收益增量的用戶和任務(wù)進行任務(wù)分配(步驟S214);否則,說明數(shù)據(jù)消費者的收益已經(jīng)無法繼續(xù)提高,則將這個數(shù)據(jù)消費者從數(shù)據(jù)消費者從集合中刪除(步驟S218),繼續(xù)判斷新得到的集合中收益最低的數(shù)據(jù)消費者的收益是能夠繼續(xù)提高。
S214:將max_task分配給max_user;
S215:將用戶max_user從集合中刪除,并跳轉(zhuǎn)至S22;
將已經(jīng)分配到任務(wù)的用戶從用戶集合中刪除,以保證每個用戶分配不超過一個任務(wù);
S216:繼續(xù)選取下一個任務(wù),其中ti,k∈Ti,并跳轉(zhuǎn)至S27;
S217:設(shè)置j=j(luò)+1,并跳轉(zhuǎn)至S26;
S218:將數(shù)據(jù)消費者從B中刪除,并跳轉(zhuǎn)至S22;
S219:分配結(jié)束。
本發(fā)明的優(yōu)點:本發(fā)明提出了一種實現(xiàn)最大最小公平的群智感知任務(wù)分配方法,所設(shè)計的方法在綜合考慮群智感知任務(wù)的異質(zhì)性以及用戶完成任務(wù)的分類可靠性的基礎(chǔ)上,以滿足最大最小公平性為分配原則,給出了一種最優(yōu)的任務(wù)分配技術(shù),與已有的群智感知任務(wù)分配相比,所設(shè)計的方法更符合實際群智感知系統(tǒng)的特點,可以有效提高群智感知分配機制的綜合性能。
附圖說明
圖1是本發(fā)明結(jié)構(gòu)框架圖。
圖2是本發(fā)明任務(wù)分配方法的流程圖。
具體實施方式
下面結(jié)合說明書附圖對本發(fā)明做以下詳細說明。
如圖所示,S1:通過任務(wù)發(fā)布模塊與任務(wù)收集模塊分別對數(shù)據(jù)消費者和用戶信息進行采集,在分配周期開始時,平臺根據(jù)集數(shù)據(jù)消費者的任務(wù)需求,即每個數(shù)據(jù)消費者所期望完成的任務(wù)集合,其中Ti={ti,1,...,ti,n},以及與之相對應(yīng)的任務(wù)預(yù)算,然后,平臺將收集到的所有數(shù)據(jù)消費者所提交的任務(wù)需求發(fā)布到任務(wù)收集模塊,此時用戶在讀取任務(wù)需求后,每個用戶會針對每個任務(wù)集合,提交一個自身感興趣的任務(wù)子集和與該任務(wù)子集相對應(yīng)的報價。
S2:平臺根據(jù)最大最小公平原則(即:使收益最小的數(shù)據(jù)消費者的收益最大化)完成用戶和任務(wù)之間的最優(yōu)匹配,具體實現(xiàn)步驟如下。
S21:初始化,平臺在初始化階段,將所有參與分配的用戶加入到U,所有的數(shù)據(jù)消費者加入到B,并設(shè)置Vi(Si)=0且Si=φ,其中U表示用戶集合,B數(shù)據(jù)消費者集合;
S22:判斷U或B是否為空,若U或B已經(jīng)是空集,則跳轉(zhuǎn)至S217,分配結(jié)束;
S23:通過對比,找到數(shù)據(jù)消費者集合中收益最小的數(shù)據(jù)消費者,如果存在多個數(shù)據(jù)消費者的收益相同且最小,則從這些消費者中任選一個作為當(dāng)前集合收益最小的數(shù)據(jù)消費者;例如,在初始狀態(tài)下,所有消費者的收益均為0,此時只要隨機選取一個消費者作為收益最小的數(shù)據(jù)消費者即可。
S24:設(shè)置max-profit=0;
S25:設(shè)置j=1;
在我們的模型里面,我們假設(shè)在每輪分配中只會給每個用戶分配一個任務(wù),而平臺在給數(shù)據(jù)消費者分配用戶時,會選擇一個能為數(shù)據(jù)消費者帶來最大收益的用戶進行任務(wù)分配。所以我們需要從j=1遍歷所有用戶,分別求出每個用戶所能帶來的最大收益增量,依此來確定將數(shù)據(jù)消費者的任務(wù)分配給哪個用戶。
S26:選取一個任務(wù),滿足ti,k∈Ti,j;
由于我們只會給每個用戶分配不超過一個任務(wù),因此在計算每個用戶可能會給數(shù)據(jù)消費者i帶來的最大收益時,需要遍歷數(shù)據(jù)消費者i所發(fā)布的每個任務(wù),其中ti,k∈Ti,j,將計算得到將該任務(wù)分配給用戶j所能帶來的收益。在本發(fā)明所設(shè)計的方法中,在每次遍歷時會隨機從Ti選取一個任務(wù),直到所有任務(wù)被遍歷完為止。
S27:設(shè)置ΔVi(Si)為將任務(wù)分配給用戶所能帶來的收益增量。
S28:判斷ΔVi(Si)>max_profit是否成立,若成立,則執(zhí)行S29;否則。則跳轉(zhuǎn)至S211;
S29:設(shè)置max_profit=ΔVi(Si);
S210:設(shè)置max_user=j(luò),max_task=ti,k;
在這里,max_user用于記錄下能帶來最大收益增量的用戶,而max_task則用來記錄能帶來最大收益增量的任務(wù),這樣,等遍歷完成后,就可以據(jù)此來決定應(yīng)該把哪個任務(wù)分配給哪個用戶了。
S211:判斷是否還有任務(wù)未被遍歷到,若否,則繼續(xù)執(zhí)行S212;否則,則跳轉(zhuǎn)至S216,繼續(xù)選取下一個任務(wù),其中ti,k∈Ti;
S212:判斷是否還有用戶未被遍歷到,若否,則繼續(xù)執(zhí)行S213;否則,跳轉(zhuǎn)至S217;
S213:判斷max_profit>0是否成立?若成立,則跳轉(zhuǎn)至S214;否則,跳轉(zhuǎn)至S218;
如果max_profit>0成立,說明當(dāng)前收益最小的數(shù)據(jù)消費者的收益還能繼續(xù)提高,則將按照步驟S210所記錄下來的能帶來最大收益增量的用戶和任務(wù)進行任務(wù)分配(步驟S214);否則,說明數(shù)據(jù)消費者的收益已經(jīng)無法繼續(xù)提高,則將這個數(shù)據(jù)消費者從數(shù)據(jù)消費者從集合中刪除(步驟S218),繼續(xù)判斷新得到的集合中收益最低的數(shù)據(jù)消費者的收益是能夠繼續(xù)提高。
S214:將max_task分配給max_user;
S215:將用戶max_user從集合中刪除,并跳轉(zhuǎn)至S22;
將已經(jīng)分配到任務(wù)的用戶從用戶集合中刪除,以保證每個用戶分配不超過一個任務(wù);
S216:繼續(xù)選取下一個任務(wù),其中ti,k∈Ti,并跳轉(zhuǎn)至S27;
S217:設(shè)置j=j(luò)+1,并跳轉(zhuǎn)至S26;
S218:將數(shù)據(jù)消費者從B中刪除,并跳轉(zhuǎn)至S22;
S219:分配結(jié)束。
S3:分配到任務(wù)的用戶在完成任務(wù)后,將采集到的數(shù)據(jù)提交給數(shù)據(jù)消費者。
S4:數(shù)據(jù)消費者在收到數(shù)據(jù)后,根據(jù)完成任務(wù)用戶的報價支付該用戶,至此,一個任務(wù)分配周期結(jié)束。
以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。