数据结构说明 | UTaskList(UID,[(TasklD, CommitTime)]},是用户一周的需求列表; UCheckReportList{UID,[(ChcekNO, CheckTime)]),用户一周查看计算结果的点击事件列表; ResourceProvisionPolicyList{PolicyID, [ServiceID,(Ti,Policy)]},资源分配策略表; |
输入 | UTaskList, UCheckReportList |
输出 | ResourceProvisionPolicvList |
初始化变量 | 1: RPPList =null; 2: ULoad[l=0; 3: UCheckFrequence[]=0; |
统计用户各时间片内 的任务分布规律 | 4: UTaskList.each{|value| 5: ts = GetTimeSegment (value.CommitTime); 6: ULoad[ts]++} |
计算各时间段的负载状态 | 7: for j=0 to ULoad.size do 8: r = (∑ULoad[j].cp)/Call; 9:switch(r) 10:case FREE_SCALE 11: ULoadState[j] = Sl,break; 12: case A_BIT_FREE_SCALE 13: ULoadState[j] = S2,break; 14: case NORMAL_SCALE 15: ULoadState[j] = S3,break; 16: case BUSY_SCALE 17: ULoadState[j] = S4,break; 18: case VERY_BUSY_SCALE 19: ULoadState[j] = S5,break; 20:default 21: ULoadState[j] = STATE_ERROR; 22: end for |
计算各时间段用户的心理预期 QoS 值 | 23: AvgCount = ∑UCheckFrequence/n 24: for j=0 to UCheckFrence.size do 25: r = ∑UCheckFrequence[j]/AvgCount 26: switch( r ) 27: case UNCOCERN_SCALE 28: UQoS[j] = GREEN,break; 29: case CONCERN_SCALE 30: UQoS[j] = YELLOW,break; 31: case HURRY_SCALE 32: UQoS[j] = RED,break; 33: end switch 34: end for 35: RPPList = SetPolicy(ULoadState,UQoS); 36: return RPPList |