【问题标题】:combinatorial optimization: multiple upgrade paths with inventory constraints组合优化:具有库存限制的多个升级路径
【发布时间】:2013-09-19 05:37:26
【问题描述】:

我正在玩一个视频游戏,我想制作一个程序来计算实现固定 6 项目标的全局最优构建/升级路径。

要考虑时间、成本、库存限制和有效性(短期/中期/长期)评级。识别局部有效性峰值也受到欢迎,但可选。我不知道如何对这个问题进行分类,但我猜它是一种图形搜索。多个标准正在优化的事实让我感到困惑。

问题详情:

  • 您的包中有 6 个空位用于存放物品。
  • 有 2 类项目:基本项目和复合项目。
  • 复合项目由基本项目和其他复合项目构建/合并而成。
  • 如果您有足够的金币,您可以一次性购买复合物品及其缺少的子组件,只需使用 1 个库存槽。
  • 各种复合物品的构建路径是固定的,许多基本组件包含在多个配方中。
  • 金币随着时间的推移以固定的速度赚取,也以小的不确定性爆发的形式赚取。
  • 时间是有界的:它以固定的刻度(秒)递增,最大值:2400。
  • 不超过 50 项,可能更少。

那么,想想这个问题……

首先解决黄金/时间问题

我们可以忽略不确定性方面,也可以使用一些统计平均值。让我们让生活变得轻松,暂时忽略它。由于黄金和时间现在在我们的简化版本中直接相关,因此它们可以在逻辑上合并。

可行路径的组合扩展

可以从 6 个目标项目中的每一个构建自上而下的图表,指示它们各自的升级层次结构。可以连接在各个层次结构之间共享的组件,从而做出分支决策。组件之间的边缘可以通过它们的成本来加权。在这一点上,这听起来像是一个最短路径问题,除了有多个并行和重叠的目标。

现在的问题是:库存限制如何影响这个?

库存/成本限制,添加一个上下文,根据先前的选择和经过的时间,它既禁用(没有空闲插槽;没有足够的金币),又启用(两个项目合并释放一个插槽)各种分支决策。此外,在某些情况下,节省黄金并在非固定时期内无所事事的可能性可能是最佳的。

如何扩展所有可行的可能性?是否必须在每个给定步骤完成?总共有多少种组合?这是否属于拓扑组合?

更新:

问:如何扩展所有可行的可能性?

更新 2:

问:总共有多少种组合?

  • 好像还得算,没有数值公式。

  • 算法 3.2,第 150 页,“关于计算有向无环图的拓扑序数”,作者:Wing-Nig Li、Zhichun Xiao、Gordon Beavers

伪代码:

f(g) | vertex_count(g) == 1 = 1
f(g)                        = ∑ {f(g \ {v}) for all v ∈ deg0set}

deg0set = {vertex_in_degree(g,x) == 0 for all x ∈ vertices(g)} 

数学代码:

f[g_/; Length[VertexList[g]] == 1] := 1
f[g_] := With[
    {deg0set = Select[VertexList[g], VertexInDegree[g,#] == 0&]},
    Sum[f[VertexDelete[g,v]], {v,deg0set}]
]

评价效果

如果上述扩展产生的可能性少于几十亿,我们可以使用 OpenCL/CUDA 进行穷举搜索。我不确定还有哪些其他选项可用,因为大多数图形搜索似乎只解决一个条件。

【问题讨论】:

  • 现在游戏和实际cs问题之间的语言大约是50-50。您能否将其形式化,抽象出关键功能,或者提及哪个游戏会有所帮助?
  • leagueoflegends.wikia.com/wiki/Youmuu%27s_Ghostblade 如果您看到配方,它会显示它是从哪些项目构建的。由于您有 6 个库存槽位,您可以购买 2 把长剑斗士手套。然后将两把长剑合并成一个 Brutalizer 等。所有项目合并为一个无法进一步升级的项目。您希望最终获得 6 件无法再升级的物品,但要遵循成本效益高的路径,在整个过程中最大限度地提高您的伤害输出。
  • 它很可能在linear programming 的范围内。嗯。

标签: optimization graph combinatorics


【解决方案1】:

您需要向下走以在每个结束阶段和元素建立最大值,(即在您向下走时添加您的指标(dps 或其他),修剪任何需要您有更多插槽的组合。然后走从可能的最佳结束选项集(应该相当稀疏)倒退,您应该能够将其限制为仅最佳复合选项),并且始终以使您达到最大值的方式移动。然后在每个选项上设置一个等于damage的值,

鉴于 dps 或任何基本和初步复合项目可能低于最终可能的复合项目,这将自然地在最后阶段对有效性进行加权,因此您可能需要调整或设置一个最小值。

一旦你有了这些,你就可以计算出你的选择的黄金成本,并决定如何权衡更快地完成任务。

然后您就可以确定金币成本。您需要决定是否要等待并赚钱。如果不是,那么你要测量dps的增加率作为时间的函数。如果是这样,我希望在不玩之后购买物品会更便宜,总的来说。

您将不得不使用您的数据并做出一些价值判断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 2014-10-05
    • 2018-08-03
    • 1970-01-01
    相关资源
    最近更新 更多