基本上这个版本是原始代码的重构版本,以使代码结构更便携。进行了几项更改:
NSGA2Type类型已被定义为携带NSGA2算法的所有必要参数。这将减少外部变量的数量,并减少在另一个例程中使用时可能发生的冲突。
从 main() 函数中提取了三个函数,之前在nsga2r.c中。
ReadParamters:通过输入文件或命令行读取参数
InitNSGA2:初始化输出文件,分配内存,执行第一代
NSGA2:运行生成,保存结果并释放分配的内存。
PrintNSGA2Parameters:打印输入参数。
提供了两个额外的 void 指针并传递给必须调用函数的evaluate函数。当您想将算法集成到您的代码(例如模拟器)时,这些会很有帮助。只要你的目标函数知道如何处理和产生目标值,你就可以使用void *inp和指针来传递你的模拟器参数而不改变 NSGA2 的结构。void *outinpout