Closed zypruc closed 4 years ago
@zypruc 触发了“遗忘策略”,详见Algorithm.py。该问题同issue 74
在terminated()里添加print(self.currentGen)看看是不是停留在了某一代里面。MAXTIME是保留属性,原生Algorithm.py里面并无根据MAXTIME来判断进化终止。见http://geatpy.com/index.php/2019/07/28/4-%E8%BF%9B%E5%8C%96%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF/ 文档的最后部分。
谢谢,大概懂了,是原生Algorithm.py不调用terminated,因此需要继承写一个新的是吗?
@zypruc 对哒,照着那个文档写一个terminated(),就可以实现利用MAXTIME来控制进化时间。
我按照文档写了,但是无效,在新类中打印passTime与currentGen均为0。
说错了,currentGen维持-1,passTime为0
@zypruc 用MAXTIME控制时间的时候要把遗忘策略关掉,因为遗忘策略会忽略找不到可行解时候的时间。
要么就修改遗忘策略原本的机制,把遗忘策略里面忽略找不到可行解的时间的代码改掉,这些以你的能力是可以搞定的。
搞定了,谢谢。源码模版里初始化了maxForgetCount=1000,难怪我后续修改属性maxForgetCount没用。
使用moea_NSGA2_templet时,若无可行解时,属性设置maxForgetCount和MAXTIME完全无效,运行时间非常长 moea_NSGA2_DE_temple情况类似