0

我正在尝试使用 pygmo 进行优化。我正面临来自 pygmo 包的错误。它基本上是矢量优化。启动填充时出现以下错误:“TypeError:没有注册的转换器能够从这个 numpy.ndarray 类型的 Python 对象生成 double 类型的 C++ 右值”

我试图从我的函数中删除 scipy 命令,但我的函数抛出错误。

    class square_fit:
def fitness(self,rect_length):
    sq_area = rect_width*rect_length
    pulse_area =sc.integrate.simps(vge_reg, dx=0.1)
    rmse = pulse_area-sq_area
    return [sq_area,pulse_area,rmse]
def get_bounds(self):
    return ([2.5],[3.633])

algo = pg.algorithm(uda = pg.nlopt('auglag'))
algo.extract(pg.nlopt).local_optimizer = pg.nlopt('var2')
algo.set_verbosity(200)
pop = pg.population(prob = square_fit(), size = 1) # error happens
pop.problem.c_tol = [1E-6] * 6
pop = algo.evolve(pop)

我想知道我是否可以通过在我的成本函数中包含来自其他 python 包(如 numpy 或 scipy)的命令来在 pygmo 中进行优化。什么是 c++rvalue,哪个变量被称为 numpy.ndarray

4

1 回答 1

0

我找到了这个错误的原因。您只需要定义适应度函数返回的变量的返回类型。

于 2019-09-19T04:57:16.553 回答