mirror of
https://github.com/ZSCNetSupportDept/scheduler.git
synced 2025-10-28 20:45:05 +08:00
优化了排班的分配算法
This commit is contained in:
@@ -72,26 +72,27 @@ func generateTable() (*[7][]string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//分配剩下的所有女生到女生片区
|
|
||||||
for c, i := range female {
|
//为剩下的片区分配负责人
|
||||||
if i.Arranged != true {
|
for _, i := range male {
|
||||||
table[c%4] = append(table[c%4], i.Name)
|
if i.Access < model.FRESH {
|
||||||
|
table[fewest(table)] = append(table[fewest(table)], i.Name)
|
||||||
i.Arranged = true
|
i.Arranged = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//为男生分配负责人
|
//分配剩下的所有女生到女生片区
|
||||||
for c, i := range male {
|
for _, i := range female {
|
||||||
if i.Access < model.FRESH {
|
if i.Arranged != true {
|
||||||
table[(c%3)+4] = append(table[(c%3)+4], i.Name)
|
table[fewestF(table)] = append(table[fewestF(table)], i.Name)
|
||||||
i.Arranged = true
|
i.Arranged = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//分配剩下的所有男生
|
//分配剩下的所有男生
|
||||||
for c, i := range male {
|
for _, i := range male {
|
||||||
if i.Arranged == false {
|
if i.Arranged == false {
|
||||||
table[c%7] = append(table[c%7], i.Name)
|
table[fewest(table)] = append(table[fewest(table)], i.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fmt.Printf("today:%v\n", today)
|
fmt.Printf("today:%v\n", today)
|
||||||
@@ -117,3 +118,25 @@ func readTableData(m *[]*model.Member) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 找出人数最少的片区
|
||||||
|
func fewest(a [7][]string) int {
|
||||||
|
b := min(len(a[0]), len(a[1]), len(a[2]), len(a[3]), len(a[4]), len(a[5]), len(a[6]))
|
||||||
|
for i := range len(a) {
|
||||||
|
if b == len(a[i]) {
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1 //error
|
||||||
|
}
|
||||||
|
|
||||||
|
// 找出人数最少的女生片区
|
||||||
|
func fewestF(a [7][]string) int {
|
||||||
|
b := min(len(a[0]), len(a[1]), len(a[2]), len(a[3]))
|
||||||
|
for i := range len(a) - 3 {
|
||||||
|
if b == len(a[i]) {
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1 //error
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user