如何使参数的形状变量?

时间:2016-10-19 12:19:25

标签: openmdao

假设我正在优化风电场中的风力涡轮机数量。布局的形状是由优化器驱动的变量。 如果我没有在参数中声明形状或val,我会收到错误:

ValueError: Shape of output 'U' must be specified because 'val' is not set

但是,U的形状取决于输入参数的大小,这是未知的。

我应该构建一个由优化器写入形状的外部模块,并让我的Component读取形状吗?还是有一个更简单的方法?谢谢!

1 个答案:

答案 0 :(得分:1)

它真的不为人所知。我通常会使用__init__方法的参数来执行此操作。当你设置你的类时,你传递你需要的变量的大小(或者一些数字,让你计算类的大小,如n_turbines)。我会在你定义的问题的子类中这样做。

优化器无法实时更改输入的大小。必须修复它。如果稍后您想要更改问题的大小,只需创建问题的新实例并传递新大小。你只需重新运行安装程序,但这不应该是非常昂贵的。