我想用 Java 实现一个玩纸足球的机器人,但我不知道如何开始。
我需要选择哪种算法来降低复杂度?关于我该怎么做的任何想法?
一个简单的算法是测试 8 个方向中的每一个的有效性,然后随机选择其中一个。您可能想要更接近对手目标的方向。您可以为所有选择平均分配 60% 的概率,然后将 20% 额外分配给最佳选择,将 10% 额外分配给第二和第三最佳选择。如果只有 2 个选项可用,则分配 75/25% 的机会。当只有一个可用的选择时,就不需要随机性了。
编辑:
示例 1:起始位置、屏幕顶部的目标、每次移动的百分比机会:
17.5 27.5 17.5
7.5 7.5
7.5 7.5 7.5
示例 2:
那么,如何将动作从最好到最差排列?我会使用在每个方向上与目标的距离,如果你朝着目标移动,我会加上它,如果你离开,我会减去它。因此,如果目标是向上 7 个方格和向左 3 个方格,那么每个方向的得分将是:
10 7 4
3 -3
-4 -7 -10
假设在上述情况下有 5 种可能的移动,并且非法移动恰好是向上、向上和向下,那么每个移动的百分比机会将是(非法移动被分配为 0 机会):
32 0 0
22 22
12 12 0
尝试minimax,但它不会那么容易。