数据结构说明

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