Evolutionary Computation in Java的安装与使用(初试)
ECJ26的安装还不是太亲民,以下是我的一些安装步骤与经验
下载ECJ.zip后( https://cs.gmu.edu/~eclab/projects/ecj/),解压,查看它的readme。
下载maven并安装配置。参考以下链接:https://www.cnblogs.com/eagle6688/p/7838224.html
根据readme生成mvn的local repository 并生成ECJ的jar包。但是我生成过程遇到一个问题,在ECJ的编译中,有一个build总是失败,原因是NoGlobalSpecification。 通过检查mvn -e发现是出现在EvolutionStateTest中的错误,(系统找不到指定路径) “\dev\null” 我通过把 D:\ ECJ\ecj\src\test\java\ec\EvolutionStateTest.java 中的“\dev\null”变成 “”解决了。(把mvn原有的local repository 中的文件删掉,再使用mvn clean package 指令, 会看见更加详细的输出信息,包括知道ecj在执行各个test代码时发生的错误 在这次安装中,就发现在evolutionstatetest中,出现找不到指定路径的错误,所以才会想到去src中找test的代码,看看哪里用了那个引起错误的路径“\dev\null”)
处理完这个错误,我成功生成了jar包,并用eclipse neon中的 buildpath 导入了jar包到reference library中。但是导入的jar包还没有source code的,所以我们需要通过eclipse里面的attach source把ecj.zip附在jar包上。 (ecj.zip是后面我重新压缩的)
至此,eclipse中,就能正确import ec中的子类。
ecj的使用都是通过ec下的Evolve.java实现的(里面含main)。 main中的args是通过eclipse的run configuration中的argument声明的。(因为Evolve.java 原来是设计在linux下,用命令行 java ec.Evolve -file [.params文件(i.e.参数文件)的绝对路径] 使用的,所以我们要把-file [.params绝对路径] 放入args里面。) params的参数怎么用,就需要看看docs里面的tutorial与manual.pdf
命令行的使用 需要转到Evolve.java所在的那个目录下调用java ec.Evolve -file [参数文件的路径] 如:

.params 中首先声明了程序所需的基本的参数,如pop size, function set size, max generation等。同时制定了程序需要引用哪些包,哪些类,哪些问题,哪些数据。编写这些需要根据java文件中,程序用到的类有哪些成员,以及怎样用,继承关系等。
可以在.params中使用
#output file
stat.file = $out.stat
这句命令来在eclipse的workspace中创建一个out文件,记录每代的最有个体。
