计算一个单位在游戏中的价值

我目前正在制作一个游戏,每个单位都有健康,盾牌和敏捷的价值,以及一定数量的六种武器。

例如B部队有2个激光器,2个重激光器,1个导弹发射器,没有离子发射器,没有重型离子发射器,没有核导弹,5个生命值,2个护盾和40个敏捷度。

我已经经历了20种不同的algorithm,试图让MS Excel来平衡这些所有这些因素,以给船舶得分。 我目前的algorithm对于一些较小的单元很有效,但是对于较大的单元却非常不平衡

每艘战舰都有一个伤害值,每一种武器的伤害都乘以该武器的伤害并加在一起。

damage = weapon1*damage1 + weapon2*damage2 + ... 

伤害值乘以生命值+2 *盾+2 *敏捷度。 敏捷和盾牌成倍增加,使它们的重量超过健康(一个单位如果不能被击中就不会失去生命)。 我也减去单位的成本。 所以我现在的一个单位是:

 value = damage*(health + 2*shield + 2*agility) - 3*cost 

这里有些例子:

  • 单位1 – 1激光,1点生命值,93点敏捷性和成本1.总分是233。
  • 单位2 – 2激光,导弹发射器,3健康,但只有76敏捷。 分数是200。
  • 单位3-6激光,30点生命和15个盾牌,37点敏捷 – 得分585。

我希望单元3的分数更高,但单元1和单元2的分数相当不错。 任何人都可以提出一个更好的方程,将平滑的价值?

我认为一个遗传编程algorithm是解决你描述的问题的一个好方法。 遗传编程通过迭代演化algorithm的计算,以最小化成本函数。 这是通过创build一套适用于该algorithm的“突变”来完成的,例如,由于3R可能是突变之一,因此单位成本降低的想法。 相对于平衡的概念,成本函数会增加或减less。 将根据这个成本函数来评估突变。

请参阅“为Python代码编写集体智慧 ”一书来解决这类问题。

这个问题类似于我的云平衡示例 (开源,Java)。 只需用“单位”和“武器处理”代替“计算机”。