geatpy
geatpy copied to clipboard
续算的问题:每代产生优化结果保存在哪个对象?续算有没有办法跳过初代计算?
#203 续算的问题。 我使用NSGA2实现一次双目标优化,但是在第五代中断了,设置了call_back保存了所有vars,objv,cv,chrom,
- 请问,每代优化后,产生的优化结果存在哪个对象里?没有找到对应的对象。
- 若我要实现续算,参考 #203 是将第四代的vars作为prophetpop,需要新实例化一个algorithm,这是必须的吗?相当于两次优化?那么前四次优化似乎没有什么意义
- 使用prophetpop的方法,会强制将该种群进行一次目标函数计算,由于我的问题,目标函数计算时间较长,而且我使用jupyter保留了中断后的对象,先验的pop数目是完整的,续算不需要产生新个体,有没有办法直接从目前对象进行续算而不需要浪费一代计算的时间?
不重新定义,直接赋值,能把alg的属性保留,且在optimize时避免初始化吗?
alg=ea.Algorithm()
res=ea.optimize()
...
# alg.currentGen is 4.
alg2=alg
# 不重新定义,直接赋值,能把alg的属性保留,且在optimize时避免初始化吗?
res2 = ea.optimize(
alg2,
# prophet=alg.population, # initial population
seed=1,
verbose=True,
drawing=1,
outputMsg=True,
drawLog=False,
dirName=str(dict),
saveFlag=True
)
可以写一个outFunc()传入Algorithm类。添加保存结果到文件的代码。这样每一代都会写入文件保存结果。
可以写一个outFunc()传入Algorithm类。添加保存结果到文件的代码。这样每一代都会写入文件保存结果
我已经写了,我的意思是,我最后一代计算完之后,我整个algorithm对象是完整保留好的,但是我将其作为prophet时,实例化新的alg时,它会将我最后一代的alg对象只取Chrom,并重新计算了一次目标函数。 我的意思是,这一步应该可以省略,因为我四代算完了,下一步应该是直接交叉变异,算第五代,而不是把4代做目标函数计算。