You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

strategyService.go 1.0 kB

1234567891011121314151617181920212223242526272829303132333435
  1. package algo
  2. type strategyService interface {
  3. computeMaxScore() (*Task, error)
  4. }
  5. func ScheduleWithFullCollaboration(strategyService strategyService, ProviderList []*Provider) (*Task, error) {
  6. task, err := strategyService.computeMaxScore()
  7. if err != nil {
  8. return nil, err
  9. }
  10. //计算任务i的resourcePerTask属性
  11. for i, _ := range ProviderList {
  12. tasksolu := task.MaxscoreStrategy.Tasksolution[i] // 第j个提供商分到的任务数
  13. resourcesolu := task.MaxscoreStrategy.Resourcesolution[0][i] // 第j个提供商分到的资源数
  14. // 在第j个云提供商处声明一个长度为资源数的链表
  15. resourcePerTaskPerProviders := make([]int, resourcesolu)
  16. if tasksolu > 0 {
  17. for tasksolu > 0 {
  18. for j := 0; j < resourcesolu; j++ {
  19. resourcePerTaskPerProviders[j] += 1
  20. tasksolu -= 1
  21. }
  22. }
  23. } else if tasksolu == 0 {
  24. resourcePerTaskPerProviders = []int{0}
  25. }
  26. task.ResourcePerTask = append(task.ResourcePerTask, resourcePerTaskPerProviders)
  27. }
  28. return task, nil
  29. }

PCM is positioned as Software stack over Cloud, aiming to build the standards and ecology of heterogeneous cloud collaboration for JCC in a non intrusive and autonomous peer-to-peer manner.