Python 2.7 PyGMO自定义类带有_init__错误

Python 2.7 PyGMO自定义类带有_init__错误,python-2.7,optimization,parallel-processing,Python 2.7,Optimization,Parallel Processing,我正在PyGMO中研究一个并行优化问题。不幸的是,这些文档并不是很有帮助。根据,我把我的问题写成 import PyGMO as pygmo class my_problem(pygmo.base): def __init__(self,model,config,pars,**kwargs): # Does some parameter definition according to input arguments model, config etc...

我正在
PyGMO
中研究一个并行优化问题。不幸的是,这些文档并不是很有帮助。根据,我把我的问题写成

import PyGMO as pygmo
class my_problem(pygmo.base):
    def __init__(self,model,config,pars,**kwargs):
        # Does some parameter definition according to input arguments model, config etc...
        ...

        # Invoke base class as required by PyGMO
        super(my_problem,self).__init__(self.__dim)

    def _objfun_impl(self,x):
        ...
        f = ...  # Cost function to optimize
        return (f,)

# Main
model = 'ei'
config = 'x1'
args = (...)
prob = my_problem(model,config,args)
algo = pygmo.algorithm.de(gen=20)
isl = pygmo.island(algo,prob,20)
print isl.population.champion.f
isl.evolve(10)
print isl.population.champion.f
这不起作用,并产生以下错误:

File     "/home/maurizio/Dropbox/Stability_Analysis_network/mymain.py", line 643, in main_routine
isl = pygmo.island(algo,prob,20)
File "/usr/lib/python2.7/site-packages/PyGMO/core/__init__.py", line 239, in island
return _generic_island_ctor(None, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/PyGMO/core/__init__.py", line 132, in _generic_island_ctor
return py_island(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/PyGMO/core/__init__.py", line 119, in _generic_island_ctor
super(type(self), self).__init__(*ctor_args)
File "/usr/lib/python2.7/site-packages/PyGMO/core/__init__.py", line 48, in __init__
_core._base_island.__init__(self, *args)
File "/usr/lib/python2.7/site-packages/PyGMO/problem/_base.py", line 36, in __get_deepcopy__
return deepcopy(self)
File "/usr/lib64/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/lib64/python2.7/copy.py", line 329, in _reconstruct
y = callable(*args)
TypeError: __init__() takes exactly 4 arguments (1 given)

你知道
\uuuu init\uuuu
指的是什么以及缺少哪些参数吗?我怀疑这是我的类定义的问题

该问题是由
my\u problem.\uuu init\uuuuuuuuuuuu(…)
(即子类)和
基。\uuuu init\uuuuuuuuuuuu
(即父类)的输入参数不匹配引起的。如果未提供这些参数的默认值,则由
super(我的问题,self)
base
继承
\uuuu init\uuu
会导致冲突。实际上,更正的工作版本是:

import PyGMO as pygmo
class my_problem(pygmo.base):
    def __init__(self,model='ei',config='conf1',pars=[1]*20):
        # Does some parameter definition according to input arguments model, config etc...
    ...

    self.__dim = 3
    ...

    # Invoke base class as required by PyGMO
    super(my_problem,self).__init__(self.__dim)

    def _objfun_impl(self,x):
        ...
        f = ...  # Cost function to optimize
        return (f,)

# Main
...

不可能将
**kwargs
传递给子类,因为
base
是硬编码的,应该相应地进行更改

我没有看到你在代码中调用你的类…抱歉,我正在编辑。。。这篇文章是一个概括。@alec_Djin我怀疑这是
super
调用和基类
\uuu init\uuu
的问题……我想你需要将
my_problem
传递给super
super(my_problem,self)。\uu init\uu(dim)
@alec_Djin抱歉,这是另一个打字错误。代码是这样做的。。。问题似乎是我试图使用
base
中的
\uuuu init\uuuu
,这与
my\u problem
定义的调用不同。。。因此,问题在于如何从
base
继承
\uuuuu init\uuuuu
,但同时做一些其他事情。。。