使用线性规划在英雄联盟中找到最优构建

主要观点:作者重新开始玩《英雄联盟》后,选择玩凯莎(Kai'Sa),因其技能有趣,且被动能随特定属性阈值进化。作者借此用线性规划(LP)解决找到凯莎最便宜进化装备build的问题,包括定义优化函数和约束条件等,用 Rust 语言结合good_lp库实现代码,还获取了《英雄联盟》中物品数据,过滤出相关物品,最终找到最优化build,但此build在游戏中实际操作有局限性,如可考虑更多约束条件以探索其他解决方案等。

关键信息:

  • 凯莎被动:三主动技能随特定属性阈值进化,如 100 攻击力(AD)时“Icathian Rain”技能从 6 枚导弹进化为 12 枚。
  • 线性规划:定义优化函数和约束条件,如优化函数为装备成本,约束条件为达到技能进化所需属性阈值等。
  • 代码实现:用 Rust 语言,创建Item结构体存储物品信息,通过solve函数求解最优化build,包括声明变量、构建表达式、求解和打印结果等。
  • 获取物品数据:利用 Riot 提供的Data Dragon服务获取物品数据,包括item.json,并过滤出相关物品。
  • 最优build及局限:找到最优化build,但实际游戏中购买某些物品可能不是好的投资,且忽略了移动速度等因素。

重要细节:

  • LP 求解需整数变量,不能直接用实数解四舍五入,需使用支持整数变量的 LP 求解器。
  • item.json中物品包含多种信息,只关注与凯莎被动相关的攻击伤害、法术强度和攻击速度的统计数据。
  • 可通过添加额外约束条件找到其他解决方案,如更高成本、更适合后期或特定对局的build等,也可探索按顺序进化技能的约束条件,但可能需要更强大的工具。
阅读 5
0 条评论