SimpleGA 或 DifferentialEvolution 驱动程序中的设计变量是如何初始化的?

How are the design variables in the SimpleGA or DifferentialEvolution drivers initialized?

我无法浏览源代码以查看 SimpleGA 和 DifferentialEvolution 驱动程序的初始群体中的设计变量是如何设置的。设计变量范围是否有某种拉丁超立方体采样?我在问题实例中设置的初始值是否像其他驱动程序(Scipy 和 pyOptSparse)一样被使用?

非常感谢, 加勒特

对于这两个驱动程序,未使用模型中的初始值。我什至不清楚直接使用该值意味着什么,因为您需要随机生成的种群——但我承认我不是最新 GA 种群初始化方法的专家。但是,我可以回答从 OpenMDAO V3.17 开始它们是如何初始化的问题:

Simple GA Driver:

这个驱动程序似乎确实使用了这样的 LHS 采样:

new_gen = np.round(lhs(self.lchrom, self.npop, criterion='center',
                           random_state=random_state))
new_gen[0] = self.encode(x0, vlb, vub, bits)

Differential Evolution Driver: 该驱动程序使用这样的均匀随机分布:

population = rng.random([self.npop, self.lchrom]) * (vub - vlb) + vlb  # scale to bounds

诚然,为什么初始化方法不同并没有多大意义,也许应该有一些选项可以从一组方法中选择或以某种方式提供您自己的初始种群。欢迎 POEM and/or pull-request 对此进行改进。