我正在从事一个遗传编程项目,该项目试图生成代表图像的 GP。我的方法是将图像分成不同的独立部分,并让单独的线程对它们进行进化工作。
由于事情将是异步的,自然你也希望对象是独立的。问题是我注意到 JGAP 中的某些对象实际上是共享变量,因此它们将在线程之间共享,这会导致很多问题。例如,我注意到所有具有相同名称的变量都是相同的,这意味着如果我想同时评估多个 IGPProgram,我必须锁定该变量,这确实会影响性能。
我还注意到,如果您尝试创建多个 GPConfiguration,程序会抱怨您必须先重置它。所以在我看来,所有 GPConfigurations 都是共享的(即你不能让多个线程同时创建多个配置),这是一个问题,因为创建 GPProblems 可能需要很多时间,而我正在创建很多 GPProblems ,所以我希望通过将工作分成多个线程来减少所花费的时间。
在使用 JGAP 和线程时,我需要了解任何“陷阱”吗?不幸的是,JGAP 文档中没有过多地涉及多线程,我希望我能从可能有 JGAP 经验的人那里得到一些建议。