首页 文章

需要一些关于使用什么算法的建议[关闭]

提问于
浏览
-4

这是一个简单的c游戏 .

在坐标范围(0.0f,0.0f)到(10.0f,10.0f)中生成5个随机塔 . 他们有随机的hp,范围和伤害限制在一定限度内 . 他们无法动弹 .

现在,在 Map 上添加了10个单位,具有固定的移动速度,hp和损坏 .

通过模拟不会修复单位和塔楼 . 只有他们的初始职位才会被随机化 . 将运行1000次模拟 .

目标是实现单位约90%的赢率 .

当单位摧毁所有塔楼时,将赢得一场比赛 . 单位可以以预定的速度向塔移动 . 每个模拟需要多轮才能完成 . 在每个圆形单位中移动到最佳选定目标并在一定范围内进行攻击 . 同样地,塔在其攻击范围内挑选任何一个单位并继续攻击它直到它死亡或移出范围 .

我需要一些关于我应该投入时间来实现相同算法的指针 .

目前,我可以使用塔的单位,hp,范围和损坏的一些加权平均值来获得84.2%的赢率,并选择在这些标准上得分最低的塔 . 在没有考虑其他属性的情况下移动到距离单元最远的塔,可以获得大约72%的获胜率 .


From comment of deleted answer:

还有一个限制 . 我每次都可以选择一个目标 . 这些单位将确保朝着该目标前进 . 我不应该修改单位向目标移动的部分 . 因此,每一轮模拟都必须有一个目标塔,以此为目标的单位将移动 . 因此,我无法将我的单位从塔楼移到安全区域并在一个点上组装它们然后计划我的攻击 .

2 回答

  • 1

    我有一个更好的想法,一个公式来选择攻击什么塔 .

    对于每个战士,使用它来获得每个塔的“得分” . 然后选择得分最高的塔

    a1*todalDmgFromOtherWarriorsAimedAtThatTower - a2*towerRange - a3*towerDamage - a4*towerHP - a5*distance/speed
    

    应该反复修改a1-a5,直到获得最佳结果,使某些参数比其他参数更重要

  • 1

    If there is no time limit or advantage for time ,我会试着去找一个 grouped approach - 让所有部队一起攻击同一个塔,让所有部队进入塔内,同时减少伤害,因此不必考虑防止部队死亡,产生更高(如果不是完美)的赢率 .

    你可能有一个特定的单位(一个HP最高的单位?)在其他单位之前略微进入该范围,因此它会引发火灾,并且当它接近死亡时可能超出范围 . 如果最强的单位已超出范围,您可以将下一个受攻击的单位移出范围(等等),或者只是继续攻击直到塔被摧毁 .

    你必须先玩哪座塔先攻击 . 可能是最弱的(最低的HP伤害),但你可能不想派遣你最强的单位来引火,因为你可能想把它保留在最后一个最强的塔上 .

    移动一个单元以避免所有塔的攻击范围到达所需的塔可能是困难的 . 一些选择:

    • 将装置留在原处 .

    • 挑战塔战略性地“解开”最强大的单位 .

    • 攻击多个塔 .

    If all of this sounds like a near-impossible task ,需要一些非常先进的AI,请注意它可能比你想象的要简单得多 . 只需忽略大多数约束来启动并一次一个地添加它们,就像在开始时一样简单并从那里构建它 . 但是,是的,它比你的个人方法困难得多;主要的困难在于几何计算和一点点玩,以找到塔的最佳攻击顺序和伤害者的顺序 .

    How I would probably approach this: (测试每一步的效率,当你开心时停止)

    • 编写一个启发式算法来确定最佳塔 . 将所有单位移动到那里进行攻击(忽略所有其他塔) . 重复直到比赛结束 . 这应该很简单 .

    • 修改以等到大多数装置进入塔架范围之前 . 不应该太难 .

    • You can stop here if you want ,在任何困难的东西开始发生之前(可能会稍微改进一下),因此它不应该花太多时间,只是将它与你当前的方法进行比较 .

    • 写一些简单的代码让单位在其他塔楼周围移动(如果可能的话) .

    • 如果某些单位无法到达那里,请修改您的拣选塔代码以重新确定塔楼 .

    • 逐步增加一切复杂 .

    旁注 - 由于塔是静止的,您可以确定提前到达塔楼所需的时间,因此您可以在安全点等待(而不仅仅是塔的外部范围,可能在范围内如果其他单位需要更长的时间才能到达那里 .

    附加说明 - 如果单位也可以进行远程攻击,如果任何单位的攻击范围比任何塔都长,那么将该单位独立到该塔之前将是最有效的(免费杀死!) .

相关问题