将遗传优化器转换为驱动器
Convert a genetic optimiser into a Driver
我的组件已经有了我想要优化的功能。然而,OpenMDAO Alpha 1.0 不包含(据我所知)遗传优化器的包装器。我自己写了,现在想把它变成一个驱动程序。我在这里有点迷路,我可以寻求任何指导吗?
谢谢!
你说得对,OpenMDAO 还没有遗传优化器。您可以使用 pyopt 库中的 NSGAII,但既然您有一个想要使用的库,那么编写您自己的驱动程序应该相当简单。最容易遵循的例子是我们的 scipy wrapper 优化器。您的包装器必须看起来像这样:
from openmdao.core.driver import Driver
class GeneticOptimizer(Driver):
def __init__(self):
super(GeneticOptimizer, self).__init__()
#some stuff to setup your genetic optimizer here
def run(self, problem):
"""function called to kick off the optimization
Args
----
problem : `Problem`
Our parent `Problem`.
"""
#NOTE: you'll use these functions to build your optimizer
#to execute the model
problem.root.solve_nonlinear()
#function to set values to the design variables
self.set_param(var_name, value)
我的组件已经有了我想要优化的功能。然而,OpenMDAO Alpha 1.0 不包含(据我所知)遗传优化器的包装器。我自己写了,现在想把它变成一个驱动程序。我在这里有点迷路,我可以寻求任何指导吗?
谢谢!
你说得对,OpenMDAO 还没有遗传优化器。您可以使用 pyopt 库中的 NSGAII,但既然您有一个想要使用的库,那么编写您自己的驱动程序应该相当简单。最容易遵循的例子是我们的 scipy wrapper 优化器。您的包装器必须看起来像这样:
from openmdao.core.driver import Driver
class GeneticOptimizer(Driver):
def __init__(self):
super(GeneticOptimizer, self).__init__()
#some stuff to setup your genetic optimizer here
def run(self, problem):
"""function called to kick off the optimization
Args
----
problem : `Problem`
Our parent `Problem`.
"""
#NOTE: you'll use these functions to build your optimizer
#to execute the model
problem.root.solve_nonlinear()
#function to set values to the design variables
self.set_param(var_name, value)