0

我现在正在使用 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())

输出(可能不是必需的,但是嘿)

4

0 回答 0