带有转换成本的背包问题

时间:2016-03-09 18:36:37

标签: mathematical-optimization linear-programming knapsack-problem

我正在玩一个游戏,在那里你可以编程韭菜的IA来对抗其他韭菜(韭菜,非常有趣)。

韭菜每回合有一些动作点,比方说10。

对于C动作点的成本,它有一系列武器处理伤害D. 例如,手枪:3个动作点造成20点伤害等等。

它有一系列法术,类似于武器。例如,火花:3个动作点造成16点伤害。

我想在轮到我时造成最大伤害。

当我发现:

时,我认为这是一个简单的背包问题

在使用武器之前,你需要装备它,这需要花费1个动作点。你不需要重新装备它以后重复使用它,但你需要1个动作点来改变武器。任何法术都可以在没有装备的情况下使用。

我一直试图将此形式化为背包式或线性编程问题,但没有成功。

我的主要想法是引入例如武器first_pistol对3 + 1个动作点造成3点伤害,并引入约束(C1),即first_pistol只能使用一次而(C2){{}} {{} 1}}只能在使用pistol时使用。但我不确定如何形式化(C2)。

您对我的方法有什么替代方法或评论吗?

1 个答案:

答案 0 :(得分:2)

这不是一个背包问题,这对我来说听起来像是一个调度问题! 你有一台'机器'这适用于10个('时间')单位(行动点)。 不同的产品' (武器)有不同的处理时间(他们的行动点)。 如果您切换产品类型' (武器)你的安装时间为1。 基础调度模型实际上是非常基础的,所以查看一些标准的LP配方:)