package algo type strategyService interface { computeMaxScore() (*Task, error) } func ScheduleWithFullCollaboration(strategyService strategyService, ProviderList []*Provider) (*Task, error) { task, err := strategyService.computeMaxScore() if err != nil { return nil, err } //计算任务i的resourcePerTask属性 for i, _ := range ProviderList { tasksolu := task.MaxscoreStrategy.Tasksolution[i] // 第j个提供商分到的任务数 resourcesolu := task.MaxscoreStrategy.Resourcesolution[0][i] // 第j个提供商分到的资源数 // 在第j个云提供商处声明一个长度为资源数的链表 resourcePerTaskPerProviders := make([]int, resourcesolu) if tasksolu > 0 { for tasksolu > 0 { for j := 0; j < resourcesolu; j++ { resourcePerTaskPerProviders[j] += 1 tasksolu -= 1 } } } else if tasksolu == 0 { resourcePerTaskPerProviders = []int{0} } task.ResourcePerTask = append(task.ResourcePerTask, resourcePerTaskPerProviders) } return task, nil }