最终排名:2 / 4031,score = 501671,reschedule = 252009,schedule = 249662
Github:https://github.com/afkbrb/container-schedule
赛题地址:https://tianchi.aliyun.com/competition/entrance/231791/information
官方赛题解析:https://tianchi.aliyun.com/forum/postDetail?postId=113204
说明
IDEA 需要安装 lombok 插件。
代码中有些硬编码的地方(比如一个阈值直接写死了),其实不太好,但由于已经明确不更换数据,我也懒得一般化了。
分析
分为 schedule 和 reschedule 两个部分。schedule 部分就是要在满足约束条件下,将容器(以下称为 pod)放入尽可能少的 node 中。reschedule 部分同样是要满足一定的约束,使用尽可能少的迁移次数对容器进行迁移,使 node 资源利用率尽可能的高。
每个 node 有一定的 cpu、ram、disk、gpu 和 eni 资源,由于赛题数据中每个 pod 需要消耗的 gpu 资源都是 0,可以忽略 gpu,类似地,题目中的 eni 资源和 disk 资源其实是相对充裕的,同样可以忽略。此处忽略不是指忽略约束(忽略约束的话直接报错,分数直接一刀 99999999(分数越低越好))而是指忽略其占用率。通常都是 cpu 或 ram 不够用&#