Javascript 整洁的算法,提供的库中缺少函数定义

Javascript 整洁的算法,提供的库中缺少函数定义,javascript,machine-learning,artificial-intelligence,genetic-algorithm,Javascript,Machine Learning,Artificial Intelligence,Genetic Algorithm,我在youtube上查阅了一篇教程,我一直在尝试为一只flappy bird克隆实现增强拓扑的神经进化(NEAT)算法 根据教程,我遇到了以下问题: 执行index.html时,我收到以下错误 TypeError: func is not a function matrix.js:104:27 这令人困惑,因为matrix.js和nn.js都是指导教程的人员提供给我的库函数 查看matrix.js的代码,我发现抛出错误的行是 this.data[i][j] = func(val,i,j);

我在youtube上查阅了一篇教程,我一直在尝试为一只flappy bird克隆实现增强拓扑的神经进化(NEAT)算法

根据教程,我遇到了以下问题: 执行
index.html
时,我收到以下错误

TypeError: func is not a function matrix.js:104:27
这令人困惑,因为
matrix.js
nn.js
都是指导教程的人员提供给我的库函数

查看matrix.js的代码,我发现抛出错误的行是

this.data[i][j] = func(val,i,j);
但是我在
matrix.js
nn.js
中的任何地方都找不到函数
func()
的函数定义

但是在
nn.js
的代码中,我发现
func
被称为变量而不是函数

class ActivationFunction {
  constructor(func, dfunc) {
    this.func = func;
    this.dfunc = dfunc;
  }
}

let sigmoid = new ActivationFunction(
  x => 1 / (1 + Math.exp(-x)),
  y => y * (1 - y)
);

let tanh = new ActivationFunction(
  x => Math.tanh(x),
  y => 1 - (y * y)
);

所以我假设func是为了给
this.data[I][j]
提供
val的sigmoid值,所以我编写了自己的sigmoid函数,将激活函数值提供给
this.data[I][j]
。它在执行时抛出了错误
ReferenceError:NeuralNetwork未定义[Learn More]bird.js:25:7

因此,我决定放弃编写函数的尝试,并决定将sigmoid激活函数的值直接复制到变量
this.data[I][j]
中,如下所示:

this.data[i][j] = 1/(1+Math.pow(Math.E, -val));
这种方法没有出现任何错误,但确实给我带来了一个新问题。 早些时候,每一代人中的每一个成员都会独立行动,产生如下产出:

但现在我得到的是

这并不是说在第二张图片中只生成了一个玩家对象,所有250个对象都在生成,而是它们都位于另一个对象之上,使得看起来只有一个玩家对象。这是由于

1/(1+Math.pow(Math.E, -val));
将完全相同的值发送到
this.data[I][j]
,我观察到,当不同的值传递到
this.data[I][j]
时,每个播放器对象都独立运行。 有人知道为什么func会这样吗。一个文件中的变量,而func是另一个文件中的函数

我为我的不清晰表示歉意,因为这是库文件中的一个错误,我不是矩阵运算的专家,我已经尽力将我面临的问题传达给大家。到目前为止,我所认识的人都没有遇到过这些问题


所有需要的文件都可以找到

this.data[i][j]=this.func
?@Adelin没有工作:/你明白了吗?关键是使用
this
keyord将func声明为构造函数的一部分,但后来,在所有地方,都将其用作未绑定变量。使用
this.func
在任何地方调用最初声明为
this.func
func
@Adelin我明白你的意思,我尝试过使用this.func,但我仍然有同样的问题
1/(1+Math.pow(Math.E, -val));