相关疑难解决方法(0)

我可以使用什么算法进行井字游戏来确定AI的"最佳动作"?

在一个井字游戏的实现中,我认为具有挑战性的部分是确定机器播放的最佳动作.

有哪些算法可以追求?我正在研究从简单到复杂的实现.我该如何处理这部分问题?

algorithm artificial-intelligence tic-tac-toe

61
推荐指数
6
解决办法
11万
查看次数

简单游戏的遗传编程,非专家可行吗?

我一直在认真地尝试创建一个基因程序,它将以可接受的方式发展为井字游戏.我正在使用基因组生成一个函数,然后将板作为输入并输出结果......但它不起作用.

这个程序可以用少于500行代码(包括空行和文档)编写吗?也许我的问题是我正在生成过于简单的AI.

我的研究

重要的免责声明

  • 这不是任何形式的作业,只是为了学习一些很酷的个人项目.
  • 这不是'给我codz plz',我正在寻找高层建议.我明确地不希望现成的解决方案作为答案.

请给我一些帮助和洞察这个适用于这个特定简单问题的"遗传编程"概念.

@OnABauer:我认为我使用遗传编程是因为引用了维基百科

在人工智能中,遗传编程(GP)是一种基于进化算法的方法,其灵感来自生物进化,以发现执行用户定义任务的计算机程序.

我正在尝试生成一个程序(在这种情况下是函数),它将执行玩tic-tac-toe的任务,你可以看到它,因为最重要的输出 genetic_process函数是一个基因组,然后将转换为一个函数因此,如果我理解正确,这是遗传编程,因为输出是一个函数.

程序内省和可能的错误/问题

代码运行时没有错误也没有崩溃.问题是,最终我得到的是一个无能的人工智能,它将试图非法行动并因每次失败而受到惩罚.它并不比随机更好.

可能是因为我的AI功能如此简单:只需对没有条件的正方形的存储值进行计算.

高级描述

  • 你的染色体代表什么?

我的cromosome显示了一系列函数,这些函数将用于减少存储为trinary的电路板数组.好吧,让我举一个例子:*染色体是:amMMMdsa(染色体长度必须为8).1.第一步是将此转换为函数,在顶部查找后调用LETTERS_TO_FUNCTIONS,这给出了函数:[op.add,op.mul,op.mod,op.mod,op.mod,op.floordiv,op.sub,op.add]

  1. 第二步是将董事会转变为三元代表.所以,让我们说董事会是"OX XOX "我们将获得[2,3,1,1,3,2,3,1,1]

  2. 第三步是使用上面获得的函数减少三次演化.下面的功能最好地解释了这一点:

    def reduce_by_all_functions(numbers_list,functions_list):
        """
        Applies all the functions in a list to a list of numbers.
    
        >>> reduce_by_all_functions([3,4,6],[op.add,op.sub])
        1
    
        >>> reduce_by_all_functions([6,2,4],[op.mul,op.floordiv])
        3
        """
    
        if len(functions_list) != len(numbers_list) - 1:
            raise ValueError("The functions must be exactly one less than the numbers")
        result = numbers_list[0]
        for …
    Run Code Online (Sandbox Code Playgroud)

python artificial-intelligence genetic-algorithm

3
推荐指数
1
解决办法
1239
查看次数