1、在论文的源码链接上下载好代码,解压,并使用eclipse导入(使用现有文件建立项目)。文件的路径最好全是英文且符合代码的文件名风格。
2、刚下载下来的代码,解压后可以直接用(可以直接跑tutorial里面的程序),但是也是需要在eclipse的run configuration 的 argument里面设置好参数的路径。.params文件的绝对路径。 如:
3、论文的代码还不可以直接跑,因为它是在unix上面实现的,而我是在window上面实现的,所以有可能出现“系统找不到指定的路径”这样的错误。这时需要我们输出这个路径,看看它是在params文件里面哪里用了,然后改成我们window的绝对路径,如“D:\\results\”。
4、论文的主要参数的位置在这个网址http://www.cs.put.poznan.pl/tpawlak/link/?IEEESemanticBackprop上有提及。
5、而且网上提供的源码还是有bug的,譬如一开始运行时,会出现
这样的错误。查找了Arguments的参数文件及其继承的params文件都没有发现selection有定义使用ec.gp.semantic.select.SemanticTournamentSelection这样的类,而且项目中也的确没有这个java类。同时,先于NHX定义的LGX没有这个错误,所以觉得错误应该出现在与NHX相关的文件中。容易定位到,在NHX.params中,就定义使用了这个selection方法,因此我们需要把它改为gp.breed.NHX.source.0 = ec.select.TournamentSelection
6、还有一个错误
黑色的p, d, s 是我在BreedingPipeline.java的错误位置输出的。 通过查找项目的文件夹,还有在eclipse中都没有发现有关LM这个类的定义(论文里面也没有),所以我想到的解决方法就是把它删掉。这些类列表是在semantic.params里面定义的,所以我们只需要改一下这个参数文件即可。如图
这样运行eclipse就可以得到结果了。
在论文提供的代码中,以Kozafitness,即误差绝对值的平均作为fitness (standard fitness)。
调用论文方法是通过修改semantic.params 文件中的
这些参数(包括那个概率)来实现的。