代码之家  ›  专栏  ›  技术社区  ›  Yacoby

基于神经网络的骑士之旅

  •  2
  • Yacoby  · 技术社区  · 15 年前

    我正在研究骑士巡演问题,并决定尝试用python实现它,使用神经网络来寻找解决方案。

    Wikipedia

    我想知道是否有人对我不正确地实现了什么有任何想法(对于可怕的代码感到抱歉)。

    编辑
    工作代码可以在GitHub上找到 https://github.com/Yacoby/KnightsTour

    3 回复  |  直到 5 年前
        1
  •  3
  •   John La Rooy    15 年前

    你不能在原地更新神经元。由于U[t+1]依赖于U[t]和V[t],如果您已经更新了V,那么U的计算将是错误的

    我认为您应该将更新分为两个阶段 更新_状态和更新_输出,以便更新所有U,然后更新所有V

        for n in neurons:
            n.update_state()
        for n in neurons:
            n.update_output()
    
        2
  •  2
  •   Steve314    15 年前

    第一印象是,你只有一个缓冲板。我这样做是基于这样一个事实,即我没有看到迭代之间有任何缓冲区交换——我没有仔细观察,可能很容易出错。

    如果在适当的位置修改一个缓冲区,当您进行相邻计数时,您会将它们建立在一个部分修改过的板上,而不是一开始的板上。

        3
  •  0
  •   Strill    13 年前

    在看过你的代码后,我认为你对你使用的公式的解释可能是不正确的。你说当更新状态时,你加四而不是两,然后减去神经元本身的输出。在我看来,你把神经元本身的输出减去两次。查找邻域的代码似乎无法区分神经元的邻域和神经元本身,您需要运行此代码两次-每个顶点一次。