我现在正在使用 pygmo,直到现在我都忽略了 archiplago 函数,因为我遇到了问题,线程没有完成它们的工作,因此程序“停止”在
archi.wait()
.
我已经构建了一个测试问题,希望也许我在真正的问题中做了一些不允许多线程处理的问题,但测试问题也不适用于群岛。你有什么想法我做错了吗?
代码:
class prob():
def __init__(self):
self.number = 5
pass
def fitness(self, para):
return [2*para[0]**3 + 4*para[1]**2 + 1.5*para[2] + para[3]]
def get_bounds(self):
return ([-100 for i in range(4)], [100 for i in range (4)])
def get_nobj(self):
return 1
prob = pg.problem(prob())
algo = pg.algorithm(pg.gaco(gen = 10))
archi = pg.archipelago(n=4, algo = pg.gaco(), prob = prob, pop_size = 10)
archi.evolve(1)
print("flag1")
archi.wait()
print("flag2")
print(archi.get_champions_f())