我正在尝试使用pygmo进行优化。我正面临来自pygmo包的错误。它基本上是一个向量优化。当我初始化填充时,我得到了以下错误:"TypeError:没有注册的转换器能够从类型为numpy.ndarray的C++对象中生成类型为double的Pythonr值“
我试图从我的函数中删除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
发布于 2019-09-19 12:57:17
我找到了这个错误的原因。您只需要定义由适应度函数返回的变量的返回类型。
https://stackoverflow.com/questions/57392039
复制相似问题