理论教育 基于贡献值的资源分配算法

基于贡献值的资源分配算法

时间:2023-04-14 理论教育 版权反馈
【摘要】:在协作学习P2P网络中,各个节点的贡献值根据节点的具体情况而发生变化,因此所获得的资源服务质量也随之发生变化。基于贡献值的资源分配原则是“多劳多得”“多劳先得”。基于贡献值的资源分配算法描述如下:输入:学习资源请求信息;输出:学习资源。

基于贡献值的资源分配算法

在协作学习P2P网络中,各个节点的贡献值根据节点的具体情况而发生变化,因此所获得的资源服务质量也随之发生变化。基于贡献值的资源分配原则是“多劳多得”“多劳先得”。对于资源请求者而言,贡献值大,及时得到满足的概率就高,从而促使其做更多贡献;对于资源提供者而言,为了尽可能增大自己的贡献值,在做资源分配时,应把资源优先分配给贡献值大的节点,同时根据资源的受欢迎度排序,越受欢迎的资源排在最前面,节省检索时间,提高查询效率。基于贡献值的资源分配算法描述如下:

输入:学习资源请求信息;

输出:学习资源。

(1) 节点侦听资源请求信息。

(2) 当有资源请求时,查询请求节点的贡献值。

(3) 如果请求节点的贡献值过低,将拒绝下载服务,跳转到(1)步,否则转到(4)步。

(4) 如果只有一个主机请求学习资源,则转(5)步,否则转(6)步。

(5) 将所请求的资源提供给请求节点,然后跳转到(6)步。

(6) 贡献值大的节点优先获得该资源,贡献值小的节点后获得资源甚至无法获得该资源。

(7) 计算资源被下载的次数,即受欢迎度,然后根据资源的受欢迎度刷新资源的排序。

(8) 增加本节点的贡献值,跳转到(1)步。

基于贡献值的资源分配算法RAAC(Resources Allocate Algorithm base on Contribution)的伪代码如下:

(1) initializes(www.daowen.com)

(2) Listen Res Req(recource Name); //节点侦听资源请求信息

(3) C[i]=get Cont(nodeid); //当有资源请求时,查询请求节点i的贡献值

(4) if(is Toolow(Cont[i]<θ)) //判断请求节点的贡献值是否过低

then refuse Service(); //如果请求节点的贡献值过低,拒绝下载服务

(5) else if Res Req Node Id=1; //如果只有一个主机请求学习资源

then allocate Resource(file Name,nodeid); //分配最优资源

(6) else allocate Resource(file Name,Max(C[i]).nodeid); //贡献值大的节点优先获得该资源

(7) Count Resource[j]=Count Res(Resource[j]); //计算资源被下载的次数,即受欢迎度

(8) sortlist(list,Count Resource[j]);

refresh(){}; //根据资源的受欢迎度刷新资源的排序

(9) C[k]=Addcont(); //增加本节点的贡献值

(10)return; //返回,继续侦听资源请求节点

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈