返回首页
最新
大家好,
我整理了一个代码库,演示如何从零开始在单个 TSPLIB 实例(lin318)上直接训练 PPO——无需预训练或 GPU。
代码库链接:[https://github.com/jivaprime/TSP](https://github.com/jivaprime/TSP)
1. 实验设置
问题:TSPLIB lin318(最优解:42,029)和 rd400
硬件:Google Colab(仅 CPU)
模型:单实例 PPO 策略 + 价值网络。以随机初始化开始。
局部搜索:训练期间使用轻量级的 2-opt,评估时使用 Numba 加速的 3-opt。
核心概念:与其说是“稳定的平均误差最小化器”,不如说这个策略被设计为高方差的探索者。目标不是保持平均差距低,而是偶尔“激增”出非常低误差的路径,以便局部搜索进行优化。
2. 结果:lin318
最佳结果:42,064(差距约 +0.08%)
时间:在 Colab CPU 上大约 20 分钟内达到。
根据日志(包含在代码库中),小于 0.1% 的结果出现在经过时间为 0:19:49 时。虽然平均误差在 3% 到 4% 之间波动,但该策略成功找到了一个深的盆地,3-opt 可以利用。
3. 扩展实验:智能 ILS 和 rd400
我扩展了流程,使用“智能 ILS”(迭代局部搜索)后处理,看看我们是否能达到精确的最优解。
A. lin318 + ILS
以 PPO 生成的路径(0.08% 差距)作为种子。
运行智能 ILS 大约 20 分钟。
结果:达到了精确的最优解(42,029)。
B. rd400 + ILS
PPO 阶段:在 CPU 上约 2 小时。生成的路径差距约为 1.9%。
ILS 阶段:使用 PPO 路径作为种子。运行约 40 分钟。
结果:达到了 0.079% 的差距(成本 15,293 对比最优解 15,281)。
总结
该工作流程有效地分离了关注点:
PPO:引导搜索进入高质量的盆地(1% - 2% 差距)。
ILS:在该盆地内深入挖掘以找到最优解。
如果您对实例级的强化学习、基于 CPU 的优化,或与 ML-TSP 基线(POMO、AM、NeuroLKH)进行比较感兴趣,欢迎查看代码。
欢迎建设性的反馈!
嘿,HN社区,
我创建了Fin2Cents,旨在帮助人们在不冒真实资金风险或陷入“迷因股”赌博的情况下学习投资。
您可以每天使用均值-方差优化(马科维茨 / 1990年诺贝尔奖)构建和压力测试投资组合。此外,还有:
• 简短、游戏化的课程,讲解风险、收益和多样化
• 实时排行榜,跟踪您投资组合的每日(模拟)收益。
我试图解决的问题是:大多数人要么
1. 随意投资于任何热门趋势,或者
2. 完全避免投资,因为这让人感到恐惧/不透明。
Fin2Cents旨在寻找一条中间道路:帮助人们以经过时间考验的理念平静地积累财富,而不是凭感觉。
希望能得到HN社区的反馈——无论是关于产品、用户体验,还是整体方法。
iOS下载链接: [https://apps.apple.com/us/app/fin2cents/id6754194187](https://apps.apple.com/us/app/fin2cents/id6754194187)(邀请码:2PZJmJ)。
欢迎在评论中提出任何技术或产品方面的问题。