华为技术竞技场 2024

云计算

整个问题可以分为三部分:最大化使用率、最大化寿命和最大化利润。这三部分的变量相互冲突,并由无数更小的变量所组成。 • 使用率指的是能否应对变化无常的服务器需求,以确保在不同时间满足不同需求的变动。 • 寿命代表服务器的平均使用年限,通常直到被报废。 • 利润则是指在满足需求的基础上所能获得的总利润。

这三者相互制约,提升某一方面可能会降低其他两个方面的表现。目标是找到一个能最大化三者组合的方案。

算法与策略

本质上,这个问题的核心是在相互冲突的三个变量间找到最大化组合。另一种理解方式是,通过权衡三者来找到一个“完美平衡点”,使三者的总和达到最高。可选择的解决方案主要有三种: 1. 机器学习:通过定义各种操作空间和动态规划,使计算机学习背后的规律并自动寻找最佳方案。这种方法的优点是,一旦定义和训练完成,系统便可以自动生成解决方案。缺点是需要庞大的数据和算力资源,特别是处理数百万台服务器的模拟时,在云端进行这样的模拟会很难实现。 2. 线性规划(数学规划):通过将事物的各种关系转换成数学公式,再通过程序代码由计算机破解出最佳解法。这种方法的好处是算力要求低且有现成工具(例如Google的OCTR)可使用,但问题在于此类非线性的问题难以完全用线性编程来解决。 3. 简单算法:通过人的智慧设计简单算法来解决问题。这种方法的优点是运行时间极快,大约为前两种方案的1%,但缺点是潜力较低,尤其相对于机器学习等进阶方法。

选择与策略

我们选择了第三种方法。策略上,先构建一个简单的算法,快速识别其弱点和瓶颈,然后通过十几次快速迭代提升性能。 • 第一代算法:专注于利润优先的突破点,与其同时关注三个变量,不如集中精力突破一个。曾冠提出了以下理由: 1. 尽快获得反馈,建立完整的反馈链是最重要的,只要建立了核心反馈链,具体方案就不成问题。 2. 快速实现出一套方案,给团队一种方向感。 3. 如果后续需要更改算法,构建一个贪婪算法也会让算法开发更简单。 4. 曾冠认为,最需要避免的是团队在某个问题上卡住而不自知。

第一代算法因未充分考虑其他变量,仅优先考虑利润,结果效能不理想。 • 第二代算法:在发现问题后,曾冠将算法的弱点补充起来,使其在利润优先的基础上不影响其他两个变量。经过改进,第二代算法的性能较第一代提升了100倍,使团队从200支队伍的垫底直接进入前十名。 • 第三代算法:在第二代算法完成后,曾冠队几乎立刻开始了第三代的更新迭代。这次加入了状态识别,即对不同情况进行分类。举例来说,在需求高时侧重于购入资源,而在需求低时则优先延长设备寿命。经过20次迭代,第三代算法完成,效能相比第二代提升了一倍。