返回列表

Santa25 15th Place

688. Santa 2025 - Christmas Tree Packing Challenge | santa-2025

开始: 2025-11-17 结束: 2026-01-30 物流与供应链 数据算法赛
Santa25 第 15 名

Santa25 第 15 名

副标题:Santa25 第 15 名解题报告
作者:klog, Winston Cheung
发布日期:2026-01-31
比赛排名:15

引言

首先,我们要感谢主办方组织了这次比赛。
我们也很荣幸我们的团队能在最终排行榜中获得第 15 名。

在比赛接近尾声时,我们决定合并我们的团队,并使用独立的方法共同努力提高分数。
在以下部分中,我们将描述由 Winston Cheung 和 klog 开发的解决方案。


Winston Cheung 部分

(待定)


klog 部分

引言

在本节中,我将描述我的解决方案 (klog) 的概述和细节。

概述(有效的方法)

我的核心思想是,可以通过以下三个步骤来提高分数:

  1. 将树排列成规则的平铺结构
  2. 在平铺周围添加剩余的树
  3. 尽可能压缩整个配置
    这种方法类似于在现实世界中试图将物体尽可能高效地装入盒子时的包装方式。

我主要专注于提高大 N 值的分数。
然而,在许多情况下,该解决方案对于较小的 N 值效果不佳,而这些情况得益于我队友的方法得到了显著改善。

基于这个想法,我将我的解决方案分为以下两个部分。

平铺部分

首先,我构建了基于正方形的树平铺结构。
然后,我将整个正方形平铺视为单个对象,并使用 Sparrow 在其周围放置额外的树。

与随机在平铺周围放置树相比,使用 Sparrow 显然更有效,并且产生了更好的放置质量。
(致:@jern97, @tonywauters 非常感谢你们创建并分享了优秀的工具 Sparrow。)

N=126 示例

模拟退火 (SA) 部分

为了进一步改进由平铺和 Sparrow 步骤生成的解决方案,我应用了模拟退火。
虽然我尝试了几种自定义的 SA 实现,但我最常依赖的是 publicly available SA notebook。
santa-2025-ensemble-sa-greedy-backtracking-tes

(致:@blueshyy , @wyz114514 感谢你们分享了如此高质量的 SA 实现。)

该 SA 的一个关键特征是引入了朝向中心的类重力,这使得过渡偏向于更紧凑的配置。这种设计使得在实践中更容易实现分数改进。
对于详细的解释,我强烈建议查看链接的 notebook 并给予点赞。

无效的方法

我还探索了以下想法,但未能成功实施。

  • 非正方形平铺结构
    查看排名更高的解决方案,许多团队建立了使用对角线方向的平铺然后在其周围添加树的策略。不幸的是,我未能将此方法开发到足够的水平。

  • 优化周围树的放置
    在我们的案例中,周围的树主要是以随机方式添加的。
    相比之下,顶级团队设计了更复杂的方法来显式优化此放置。

其他

我还要感谢所有点赞了我早期关于本次竞赛公共解决方案讨论帖的人。
关于分享解决方案

此外,我很感激主办方在活动中明确说明了他们对比赛礼仪的立场。
虽然可能很难严格执行此类规则,但我希望这次比赛能鼓励未来关于解决方案分享和最佳实践的进一步建设性讨论。

同比赛其他方案